TCP/IP и маршрутизация
Стек, адресация, рукопожатие, таблица маршрутов и что спрашивают про потери пакетов.
Учить эту тему-
Что такое маска подсети и какие типы IP-адресов бывают?
juniorМаска делит IP на network+host часть (CIDR /24 = 24 бита под сеть, 8 под хост). Адреса бывают публичные (маршрутизируются в интернете) и приватные (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Первый адрес сети - сам адрес сети, последний - broadcast.
Маска показывает, какая часть адреса задаёт сеть, а какая хост. Запись /24 означает: двадцать четыре старших бита — сеть, оставшиеся восемь — адреса внутри неё. Адреса делятся на публичные, маршрутизируемые в интернете, и приватные из диапазонов 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16.
Механика. Хост сравнивает адрес назначения со своей сетью: если совпадает по маске, отправляет напрямую через ARP, если нет — отдаёт маршрутизатору по умолчанию. Отсюда практическое следствие: неверная маска ломает связь не «вообще», а выборочно, для части адресов. В /24 доступны 254 хоста, потому что первый адрес обозначает саму сеть, последний — широковещательный.
Где ловят. Просят посчитать, в одной ли сети 10.0.5.17/20 и 10.0.20.4/20. Считать надо по битам третьего октета: /20 даёт шаг в 16, значит первая сеть 10.0.0.0–10.0.15.255, вторая уже 10.0.16.0. В разных.
Разбор «почему так» открыт по подписке.
-
Опиши уровни модели OSI и TCP/IP.
juniorOSI - 7 уровней (Physical, Data Link, Network, Transport, Session, Presentation, Application). TCP/IP - практичная модель из 4 (Link, Internet, Transport, Application). На собеседовании чаще спрашивают про L3 (IP), L4 (TCP/UDP) и L7 (HTTP).
OSI — семь уровней, учебная модель для разговора. TCP/IP — четыре уровня, то, как сеть устроена на практике: канальный, сетевой, транспортный и прикладной.
Механика. Уровни полезны как словарь: сказал «проблема на третьем» — и собеседник понимает, что речь про IP и маршрутизацию, а не про сокеты. Соответствие неточное: сессионный и представительский уровни OSI в реальном стеке размазаны по приложению, а TLS формально не ложится ни в транспорт, ни в приложение. Поэтому спорить, «какой уровень у TLS», бессмысленно, важнее понимать, что он делает.
Где ловят. Просят не перечислить уровни, а разложить по ним знакомую вещь. Например, HTTPS-запрос: DNS-резолв, TCP-рукопожатие, TLS, потом собственно HTTP. Заучивший список семь слов на этом вопросе обычно и сыпется.
Разбор «почему так» открыт по подписке.
-
Чем TCP отличается от UDP?
juniorTCP - с установкой соединения, гарантия доставки, порядок байтов, контроль перегрузки. Цена - задержка на handshake и подтверждения. UDP - без соединения и гарантий, зато быстрый и без накладных расходов. TCP под HTTP/SSH, UDP под DNS, видео, игры.
TCP даёт поток байтов с гарантией доставки и порядка, UDP — отдельные датаграммы без гарантий. Платишь за TCP задержкой на установку соединения и подтверждениями, получаешь надёжность.
Механика. TCP нумерует байты, держит окно неподтверждённых данных и по таймауту или по трём дублирующим ACK шлёт потерянное заново. Отсюда же контроль перегрузки: окно растёт, пока сеть тянет, и схлопывается при потерях. UDP не хранит состояние совсем: отправил датаграмму и забыл, порядок и потери — забота приложения. Поэтому UDP берут туда, где повтор бессмысленен: голос, видео, DNS-запрос, метрики.
Где ловят. На фразе «UDP быстрее». Быстрее он только по задержке старта и по накладным расходам на заголовок. Пропускная способность у TCP на хорошей сети выше, потому что он умеет наращивать окно, а голый UDP шлёт ровно столько, сколько решило приложение.
Разбор «почему так» открыт по подписке.
-
Как устанавливается TCP-соединение?
juniorТрёхстороннее рукопожатие SYN → SYN-ACK → ACK. Каждая сторона объявляет свой начальный sequence number и подтверждает чужой. После этого соединение установлено. Закрытие отдельное, четырёхстороннее через FIN/ACK с обеих сторон.
Трёхстороннее рукопожатие: клиент шлёт SYN со своим начальным номером последовательности, сервер отвечает SYN+ACK со своим номером и подтверждением чужого, клиент подтверждает. После этого соединение в состоянии ESTABLISHED.
Механика. Смысл трёх шагов не в вежливости, а в том, что каждая сторона должна убедиться: её начальный номер получен и принят. Номер выбирается случайным, иначе старые пакеты прошлого соединения с теми же портами могли бы попасть в новое. Полезных данных в рукопожатии нет, длина всех трёх сегментов нулевая, хотя TCP Fast Open умеет класть данные уже в SYN.
Где ловят. Просят объяснить, почему нельзя двумя пакетами. Ответ: двумя можно подтвердить только одно направление, второе останется неподтверждённым. И следом обычно спрашивают про SYN-флуд и SYN cookies: сервер держит полуоткрытые соединения в очереди, и она конечна.
Разбор «почему так» открыт по подписке.
-
Что такое таблица маршрутизации?
juniorСписок правил «сеть → next-hop, интерфейс, метрика». Ядро выбирает самый специфичный совпавший маршрут (longest prefix match). Запись default (0.0.0.0/0) ловит всё, что не подошло под конкретные сети. Смотреть командой ip route.
Список правил вида «сеть — следующий узел, интерфейс, метрика». Ядро выбирает самый специфичный подходящий маршрут, то есть с самой длинной маской.
Механика. Правило длиннейшего префикса означает, что 10.0.5.0/24 победит 10.0.0.0/8, даже если второй стоит выше в выводе. Маршрут 0.0.0.0/0 подходит всему и потому выбирается последним: это и есть шлюз по умолчанию. Метрика нужна, когда есть два одинаково специфичных пути, а таблица обычно не одна: политика маршрутизации умеет выбирать разные таблицы по источнику или метке.
Где ловят. Просят объяснить, почему пакет ушёл не туда, хотя «маршрут есть». Смотреть надо не глазами по списку, а конкретным запросом: ip route get 10.0.5.7 покажет, какое правило реально сработало.
Разбор «почему так» открыт по подписке.
-
Что такое ICMP?
juniorСлужебный протокол L3 для диагностики (ping, traceroute) и отчётов об ошибках (Destination Unreachable, Time Exceeded, Fragmentation Needed). Портов не имеет.
-
Что происходит, когда вводишь URL в браузере?
juniorПарсинг URL → DNS resolve → TCP handshake → TLS handshake (для https) → HTTP-запрос → ответ сервера → браузер рендерит HTML и подгружает CSS, JS, картинки. По дороге срабатывают кэши DNS и HTTP, часть шагов пропускается.
-
Что такое SSH и как происходит аутентификация?
juniorSecure Shell — шифрованный удалённый shell поверх TCP/22.
-
Как TCP поддерживает соединение?
middleКаждый байт потока нумеруется: отправитель ставит sequence number, получатель подтверждает ACK'ом номер следующего ожидаемого байта. Неподтверждённые сегменты уходят повторно по таймауту (RTO) или сразу после трёх дублирующих ACK — это fast retransmit. Сколько данных разрешено держать в полёте, определяет минимум из окна получателя (rwnd, флоу-контроль) и окна перегрузки отправителя (cwnd), которым управляет congestion control: на современных ядрах это CUBIC по умолчанию или BBR. Само по себе установленное соединение молчит, поэтому мёртвого собеседника ловят через TCP keepalive (`net.ipv4.tcp_keepalive_time`, по умолчанию 7200 секунд) или heartbeat на уровне приложения.
-
Структура IP-пакета и фрагментация.
middleПакет состоит из заголовка и полезной нагрузки. В заголовке IPv4 лежат версия, IHL (длина заголовка), TTL, protocol (6 — TCP, 17 — UDP, 1 — ICMP), контрольная сумма, адреса источника и назначения, опции. Если пакет больше MTU канала (обычно 1500 байт), маршрутизатор в IPv4 вправе разрезать его на фрагменты, а собирает их получатель — за это отвечают поля Identification, Flags и Fragment Offset. В IPv6 фрагментация в пути запрещена: роутер шлёт ICMPv6 Packet Too Big, и режет уже источник. Отсюда практическая ловушка: если ICMP зарезан на файрволе, Path MTU Discovery ломается, и соединение виснет на первом же большом пакете — классика для туннелей и VXLAN, где MTU меньше 1500.
-
Что такое ARP?
middleAddress Resolution Protocol ищет MAC-адрес по известному IPv4 внутри одного L2-сегмента. Хост шлёт широковещательный запрос «у кого 192.168.1.1?», владелец адреса отвечает своим MAC, и ответ ложится в кеш на несколько минут. Смотреть кеш: `ip neigh` (старый `arp -n` из net-tools на современных дистрибутивах уже не установлен), сбросить запись — `ip neigh flush dev eth0`. В IPv6 ARP нет вовсе, его роль играет NDP поверх ICMPv6.
-
Зачем нужен IP, если MAC уникален?
middleMAC работает только внутри L2-сегмента: коммутатор знает адреса на своих портах, но за пределы broadcast-домена MAC не маршрутизируется. Адреса MAC плоские и не сворачиваются, поэтому глобальная таблица по ним была бы в миллиарды записей, тогда как IP иерархичен и агрегируется в префиксы: вся сеть 10.0.0.0/8 — одна строка в таблице маршрутизации. Плюс IP описывает место в сети, а не железку: переставил сервер в другую подсеть — сменился адрес, MAC остался прежним. Поэтому L2 доставляет кадр внутри сегмента, а L3 связывает сегменты между собой.
-
Зачем нужен default gateway?
middleХост знает только свою подсеть, вычисляя её из собственного адреса и маски. Всё, что в неё не попадает, он отдаёт шлюзу по умолчанию — маршрутизатору, у которого есть маршруты дальше. В таблице это маршрут `0.0.0.0/0`: `ip route` покажет строку вида `default via 192.168.1.1 dev eth0`. Без шлюза связь внутри локальной сети сохранится, а всё за её пределами отвалится с `Network is unreachable` ещё до отправки пакета.
-
Чем хаб отличается от L2-коммутатора?
middleХаб — повторитель на L1: сигнал с одного порта он гонит во все остальные, весь сегмент делит полосу, живёт в одном домене коллизий и работает в полудуплексе. Коммутатор работает на L2: строит таблицу «MAC — порт» и отправляет кадр только в нужный порт, каждый порт при этом свой домен коллизий и полный дуплекс. Broadcast-домен у коммутатора остаётся общим, режут его уже VLAN'ами или маршрутизацией. В проде хабов не встретишь давно, вопрос живёт как проверка понимания разницы между L1 и L2.
-
Что такое VLAN и зачем он нужен?
middleVLAN логически режет один физический коммутатор на несколько независимых L2-сетей: кадр помечается тегом 802.1Q с идентификатором VID (12 бит, значения 1–4094). Хосты в разных VLAN не видят друг друга на канальном уровне, даже воткнутые в один свитч, и общаются только через маршрутизатор. Зачем: изоляция сегментов (прод, менеджмент, гостевая сеть), уменьшение broadcast-домена, разделение по политике безопасности без закупки отдельного железа. Порт свитча бывает access (один VLAN, кадры без тега) или trunk (несколько VLAN с тегами). На Linux VLAN-интерфейс поднимается так: `ip link add link eth0 name eth0.100 type vlan id 100`.
-
Симметричное vs асимметричное шифрование.
middleСимметричное шифрование использует один общий ключ на шифрование и расшифровку (AES-GCM, ChaCha20-Poly1305), работает быстро, но ключ надо как-то безопасно передать собеседнику. Асимметричное работает с парой ключей: публичным шифруют или проверяют подпись, приватным расшифровывают или подписывают (RSA, ECDSA, Ed25519); оно на порядки медленнее, зато снимает проблему обмена. На практике их совмещают: TLS и SSH асимметрикой согласовывают общий сессионный ключ (ECDHE), а весь дальнейший трафик гоняют симметричным шифром. На той же паре держатся сертификаты: CA подписывает приватным ключом, клиент проверяет публичным из хранилища доверенных корней.
-
Меры защиты SSH.
middleАутентификация только по ключам: `PasswordAuthentication no`, `PubkeyAuthentication yes`, ключи Ed25519. Запретить прямой вход root (`PermitRootLogin no`) и явно ограничить круг допущенных через `AllowUsers` или `AllowGroups`. Ограничить сетевой доступ: файрвол на нужные подсети или доступ только через VPN и bastion, плюс `MaxAuthTries` и fail2ban против перебора; смена порта убирает шум в логах, но защитой не считается. Дальше по зрелости: второй фактор (`AuthenticationMethods publickey,keyboard-interactive`), короткоживущие SSH-сертификаты вместо вечных ключей, отключение ненужных пробросов (`AllowAgentForwarding no`, `PermitTunnel no`). Итоговый действующий конфиг всегда проверяй командой `sshd -T`, а не чтением файла с закомментированными строками.
-
Расскажи неподготовленному слушателю, как SSH устанавливает соединение и
middleСначала обычное TCP-соединение на порт 22, стороны обмениваются версиями протокола. Дальше они договариваются об общем секретном ключе по Диффи-Хеллману, и сервер подписывает этот обмен своим host key: клиент сверяет ключ с `~/.ssh/known_hosts` и громко ругается, если тот сменился — это защита от подмены сервера. Только после этого, уже внутри зашифрованного канала, идёт аутентификация пользователя: клиент подписывает челлендж приватным ключом, сервер проверяет подпись по `authorized_keys`. Затем внутри одного соединения открываются каналы: интерактивный shell, проброс портов, sftp. Разобрать по шагам вживую помогает `ssh -vvv`, там видно каждый этап.
-
Из сети резко вырос исходящий трафик на 25/tcp. Как с гейтвея найти
middleПохоже на скомпрометированный хост, который рассылает спам. С гейтвея ищу по потокам: `conntrack -L | grep ':25 '` или данные netflow/sflow-коллектора, чтобы найти внутренний адрес с аномальным числом соединений. Без коллектора работает `tcpdump -nni any 'tcp port 25 and tcp[tcpflags] & tcp-syn != 0'` с подсчётом источников. Первым делом закрываю исходящий 25 со всей сети, кроме реального почтового релея — это и должно быть правилом по умолчанию, а уже потом иду разбираться с найденной машиной.
-
Linux-сервер ломают в реальном времени. Как эффективнее блокировать
middleРезать надо одним правилом, а не сотней: адреса складываются в `ipset` или set в nftables, а на него вешается один DROP — иначе линейный список правил сам станет узким местом. Если источников много и они меняются, блокировка по адресам бессмысленна: ограничивай скорость новых соединений (`limit rate` в nftables, `hashlimit` в iptables) и подключай защиту выше по стеку, у провайдера или в anti-DDoS. Параллельно закрываю точку входа: гашу уязвимый сервис или порт, снимаю логи и образ до перезагрузки, меняю ключи и пароли. И трезвая мысль: если машину уже взяли, правилами файрвола это не лечится — скомпрометированный хост переустанавливают.
-
Кто подключается к моему хосту по 8888 — без `/proc` и `/sys`?
middle`tcpdump -nni any 'tcp port 8888'` покажет адреса источников и новые SYN'ы, не заглядывая в procfs. Второй способ — conntrack, он берёт данные из ядра через netlink: `conntrack -L -p tcp --dport 8888`. Третий — логировать самим файрволом: правило `tcp dport 8888 log prefix "in8888 "` в nftables и чтение журнала. Привычный `ss -tnp state established '( sport = :8888 )'` в этих условиях не подходит именно потому, что читает `/proc/net`.
-
Подозрение на чужой DHCP-сервер в сети. Как найти?
middleСлушаю ответы: `tcpdump -nvi eth0 'udp port 67 or udp port 68'` и смотрю, с каких адресов приходят OFFER — если отвечающих больше одного, лишний и есть чужой сервер. Активная проверка: `nmap --script broadcast-dhcp-discover` или `dhcping` шлют DISCOVER и показывают всех, кто откликнулся. Дальше по MAC чужого сервера ищу порт на коммутаторе через MAC-таблицу и выключаю его. Штатная защита от повторения — DHCP snooping на коммутаторах: ответы DHCP разрешены только с доверенных портов.
-
Мигрируем сайт на новый IP, чтобы пользователь не заметил.
middleЗа сутки-двое до переезда снижаю TTL записи до 60 секунд, чтобы резолверы перестали держать старый адрес часами. Поднимаю сервис на новом адресе и проверяю его напрямую, не трогая DNS: `curl --resolve site.ru:443:НОВЫЙ_IP https://site.ru`. Потом меняю A-запись, а старый адрес не гашу: держу его живым или проксирую на новый несколько дней, пока не разойдутся кеши и клиенты с зашитым IP. После переезда возвращаю TTL обратно и слежу по логам старого узла, что трафик там упал до нуля.
-
У сервера несколько NIC, как увеличить пропускную способность?
middleОбъединить интерфейсы в bond с `mode=4` (LACP, 802.3ad), но на стороне коммутатора должна быть настроена агрегация, иначе линк не поднимется. Полоса одного TCP-соединения при этом не вырастет: балансировка идёт по хешу от адресов и портов, поэтому выигрыш появляется на многих потоках, а хеш выбирается параметром `xmit_hash_policy=layer3+4`. Если LACP на свитче не настроить, остаются `mode=6` (balance-alb, без поддержки коммутатора) и `mode=0` (round-robin, ломает порядок пакетов и портит TCP). Когда упирается не линк, а одно ядро процессора, помогают RSS и `ethtool -L` с увеличением числа очередей. Состояние bond смотрят в `/proc/net/bonding/bond0`.
-
Тип сетевого адаптера и состояние интерфейсов — как узнать?
middle`ip -br link` даёт краткий список: имя, состояние UP/DOWN, MAC; `ip -br addr` то же с адресами. Скорость, дуплекс и наличие линка показывает `ethtool eth0` (`Speed: 10000Mb/s`, `Link detected: yes`), драйвер и версию прошивки — `ethtool -i eth0`. Счётчики и ошибки: `ip -s link show eth0` и `ethtool -S eth0`, где видны потери на уровне самой карты. Модель железа — `lspci | grep -i ethernet`. Привычные `ifconfig` и `netstat` из net-tools на современных дистрибутивах по умолчанию не ставятся, так что рассчитывать стоит на `ip` и `ss`.
-
Что такое overlay-сеть?
middleOverlay — виртуальная сеть поверх существующей физической: пакет внутренней сети целиком заворачивается в пакет underlay-сети и разворачивается на другом конце. Инкапсуляция бывает разной: VXLAN (UDP/4789), Geneve, GRE, IPsec там, где нужен ещё и шифрованный туннель. Смысл в том, что адресация и сегменты перестают зависеть от физической топологии: сеть растягивается между стойками и площадками, а число сегментов не упирается в 4094 у VLAN. На этом работают overlay-сети Docker и часть CNI в Kubernetes (Flannel с VXLAN, Calico в режиме VXLAN или IPIP). Плата — заголовок инкапсуляции: полезный MTU внутри туннеля меньше, и если его не согласовать, получишь зависания на больших пакетах при живых пингах.
-
IPv4 vs IPv6: ключевые отличия.
seniorАдрес 32 бита против 128; в IPv6 адресов хватает, чтобы дать каждому узлу глобальный и обойтись без NAT, а доступность ограничивает файрвол, а не таблица трансляций. Автонастройка устроена иначе: в IPv4 нужен DHCP-сервер, в IPv6 хост собирает адрес сам по SLAAC из префикса в Router Advertisement, DHCPv6 остаётся опцией. ARP заменён на NDP поверх ICMPv6, широковещания нет вообще (вместо него multicast-группы), поэтому резать ICMPv6 на файрволе нельзя — сеть просто не заработает. У каждого IPv6-интерфейса всегда есть link-local адрес из `fe80::/10`, он живёт в пределах своего сегмента. На практике всё это работает в режиме dual-stack, и проверять при диагностике надо оба стека: `curl -4` и `curl -6`.
-
Что такое VXLAN и зачем?
seniorVXLAN растягивает L2-сегмент поверх обычной L3-сети: кадр Ethernet упаковывается в UDP на порт 4789 и едет как рядовой IP-пакет. Идентификатор сегмента VNI занимает 24 бита, это 16 миллионов сетей против 4094 у VLAN. Инкапсуляцией занимаются VTEP на концах туннеля, а карту «какой MAC за каким VTEP» в датацентрах раздают через EVPN поверх BGP, в простых схемах — статикой или multicast. Зачем: сегмент перестаёт быть привязан к стойке и коммутатору, виртуалки и Pod'ы переезжают без перенастройки underlay. Про MTU помнить обязательно: заголовки съедают около 50 байт, значит либо 9000 в underlay, либо 1450 внутри.
-
Как заскопить SSH-команду по списку IP из файла?
seniorГлавная ловушка: ssh читает stdin и съедает список адресов, поэтому наивный `while read ip; ... done < ips.txt` отработает один раз. Лечится ключом `-n`: `while read -r ip; do ssh -n -o ConnectTimeout=5 -o StrictHostKeyChecking=accept-new "$ip" 'uptime'; done < ips.txt`. Параллельно и с ограничением числа сессий: `xargs -a ips.txt -P 10 -I{} ssh -n {} 'uptime'`. Для регулярной работы велосипед не нужен: `ansible -i ips.txt all -m shell -a 'uptime'` даст сводный результат и не развалится на первой недоступной машине.
-
Опиши идеальную схему сети для k8s-кластера в собственном
seniorUnderlay строю по leaf-spine: у каждой стойки свои ToR-коммутаторы, до spine — BGP с ECMP, растянутых L2-сегментов между стойками нет. Узлы раскладываю по трём зонам отказа с независимым питанием и аплинками, control plane — три узла в разных зонах за L4-балансировщиком или VIP через keepalived. Адресация заранее разведена на три диапазона: узлы, Pod CIDR, Service CIDR; сеть Pod'ов маршрутизирую по BGP через Calico или Cilium в native routing, overlay включаю только там, где underlay трогать нельзя. Публикация сервисов наружу — MetalLB в BGP-режиме или Cilium LB-IPAM плюс Ingress или Gateway API; изоляция — NetworkPolicy с политикой deny по умолчанию. Отдельно решаю два вопроса на старте: MTU (9000 в underlay) и раздельные сети под управление, хранилище и клиентский трафик.
-
Cloud Infrastructure Attack via Pull Request — как избежать?
seniorСуть атаки в том, что пайплайн выполняет код из чужого pull request на раннере, у которого есть облачные креды или секреты, — и злоумышленник получает доступ к инфраструктуре, просто открыв PR. Базовая защита: джобы для PR из форков не получают секреты и права на запись; в GitHub Actions это разница между `pull_request` и `pull_request_target`, второй с чужим кодом запускать нельзя. Дальше разводятся права: `terraform plan` для PR идёт под read-only ролью, `apply` — отдельным защищённым workflow с ручным подтверждением и OIDC-ролью, ограниченной по репозиторию и ветке. Плюс гигиена раннера: пинить actions по SHA, использовать эфемерные раннеры, блокировать им доступ к IMDS облака и требовать ревью перед запуском пайплайна от нового контрибьютора.
-
Как хост в IPv6 получает адрес без DHCP? Что такое link-local?
juniorЧерез SLAAC: маршрутизатор рассылает Router Advertisement с префиксом сети, хост добавляет к нему идентификатор своего интерфейса и получает готовый глобальный адрес. Сервера, который вёл бы учёт выданного, тут нет, потому механизм и называется stateless; оттуда же приезжает шлюз по умолчанию, и в `ip -6 route` такие маршруты помечены `proto ra`. Link-local — адрес из `fe80::/10`, он есть на каждом IPv6-интерфейсе всегда, собирается хостом самостоятельно и работает только внутри своего сегмента; на нём держится служебная механика NDP, заменившая ARP. Практический признак: если у интерфейса есть только `fe80::`, а глобального адреса нет, значит Router Advertisement до хоста не доходят.
-
Опиши процесс получения адреса по DHCP. Что выдаётся кроме IP?
juniorЧетыре шага, DORA: DISCOVER (клиент широковещательно ищет сервер), OFFER (сервер предлагает адрес), REQUEST (клиент подтверждает выбор, тоже широковещательно — чтобы остальные серверы видели, чьё предложение приняли), ACK (сервер закрепляет адрес и сообщает срок аренды). Кроме самого адреса приезжают маска подсети, шлюз по умолчанию и DNS-серверы, часто домен поиска и NTP. На современном Linux этим обычно занимается systemd-networkd: посмотреть выданное — `networkctl status eth0`, сырая аренда лежит в `/run/systemd/netif/leases/`. Запросить адрес заново — `networkctl renew eth0`.
-
Что такое аренда DHCP и что происходит, когда она истекает?
juniorАренда (lease) — срок, на который сервер закрепил адрес за клиентом. На половине срока клиент сам просит продление у выдавшего сервера и, получив ACK, продолжает работать с тем же адресом. Если сервер молчит, клиент повторяет попытки, а по истечении аренды обязан отпустить адрес и начать DORA заново — в этот момент IP может смениться. Поэтому серверам и сетевому оборудованию адрес фиксируют: reservation по MAC на DHCP-сервере или статика, иначе внезапная смена IP превращается в ночной инцидент.
-
Что такое сокет?
middleКонечная точка сетевого общения: пара (IP, port, protocol). В Linux это file descriptor с socket()/bind()/listen()/accept(). Бывают AF_INET (TCP/UDP) и AF_UNIX (IPC через файл).
-
Что такое NAT и зачем он нужен?
juniorNetwork Address Translation подменяет адрес/порт в пакете при пересечении границы сети. Главное применение - экономия IPv4: много приватных адресов прячутся за одним публичным (PAT/SNAT).
-
Что такое firewall и зачем он нужен?
juniorФильтр трафика по правилам (адрес, порт, протокол, состояние). Stateful FW отслеживает соединения, stateless смотрит каждый пакет независимо. На Linux - iptables/nftables, в облаке - Security Groups / Network ACLs.
-
Что такое прокси?
juniorПосредник между клиентом и сервером. Forward proxy действует от имени клиента (корп-прокси), reverse proxy - от имени сервера (nginx, Caddy, балансировщик). Может кешировать, шифровать, авторизовать, балансировать.
-
Как работает traceroute?
juniorШлёт пакеты с TTL=1, 2, 3... Каждый хоп возвращает ICMP Time Exceeded, по адресу источника видно цепочку. Linux - UDP на высокий порт, mtr/Windows - ICMP, можно -T для TCP.
-
Что такое ICMP?
juniorСлужебный протокол L3 для диагностики (ping, traceroute) и отчётов об ошибках (Destination Unreachable, Time Exceeded, Fragmentation Needed). Портов не имеет.
-
Как проверить открытые порты на удалённом хосте без netcat и nmap?
middlebash -c '</dev/tcp/host/port', curl telnet://host:port, python -c 'import socket; ...', а ss -tnlp - для локалхоста. Вопрос проверяет, как кандидат думает без привычных инструментов.
-
Как узнать тип сетевого адаптера и состояние интерфейсов?
middleip -s link, ethtool eth0 (скорость, duplex, link), ethtool -i eth0 (драйвер), lspci | grep -i net, cat /sys/class/net/*/operstate.