Урок 8 — Маршрутизация и NAT
Как пакет из твоего ноутбука находит дорогу до сервера на другом континенте? Кто решает, в какую сторону его толкать? И почему миллионы устройств за домашним роутером могут жить под одним публичным IP? Финал серии — самые сетевые из всех сетевых тем.
- Зачем нужна маршрутизация
- Шлюз по умолчанию
- Таблица маршрутизации
- Как пакет идёт «по миру» — hop-by-hop
- NAT — как миллионы за одним IP
- Port forwarding и DNAT
- Маршрутизация в облаке (VPC)
- Дебаг: ping, traceroute, mtr
- Что с этим делает DevOps
- Чек-лист
- Финальный плейбук: «нет интернета»
- Задачи с ответами
- Что дальше
Урок 1: пакеты и хосты. Урок 2: приватные и публичные адреса. Урок 3: маска решает «сосед или чужой», и всё чужое уходит на шлюз. Урок 4: порты и сокеты. Этот финальный урок соединяет кусочки в цельную картину: как пакет реально путешествует через десятки сетей и как твой серый 192.168.1.10 умудряется говорить со всем миром. Если что-то из списка подзабылось — освежи: дальше всё пойдёт в дело.
1. Зачем нужна маршрутизация
Когда твой пакет летит из дома в Лондоне на сервер в Франкфурте, он проходит через 10-20 промежуточных устройств. Никто из них не знает «весь интернет». Каждый знает только: «если адрес такой — толкаю в эту сторону».
Это и есть маршрутизация — процесс «куда отдать пакет дальше». Каждый узел делает локальное решение на основе своей таблицы маршрутизации.
Маршрутизация = почта
Письмо из Москвы в Сан-Франциско. Местный почтальон не знает, как доставить его до конкретной улицы в Калифорнии — но знает, что «всё иностранное → в международный сорт-центр». Тот не знает Калифорнию — но знает «всё в США → грузим в самолёт до Нью-Йорка». И так далее, пока письмо не попадёт в местную почту в SF, где уже знают каждую улицу.
В сети так же: каждый роутер знает только «куда дальше», а не весь путь.
2. Шлюз по умолчанию
Когда твой ноутбук хочет отправить пакет, он смотрит:
- Получатель в моей подсети? Тогда отдам напрямую (через MAC через коммутатор)
- Не в моей? Тогда отдам своему шлюзу по умолчанию (default gateway) и пусть он разбирается
Шлюз — это обычно твой роутер. У него один интерфейс смотрит в твою LAN, другой — наружу (к провайдеру).
# Узнать свой шлюз
ip route # Linux
# default via 192.168.1.1 dev wlan0
# 192.168.1.0/24 dev wlan0 ...
netstat -rn # старый универсальный
# 0.0.0.0 192.168.1.1 ...
Здесь 0.0.0.0/0 или default — это «всё, что не подходит ни под одно другое правило». Шлюз — 192.168.1.1.
3. Таблица маршрутизации
У каждого устройства (включая твой ноутбук) есть routing table. Формат: «если адрес назначения подходит под этот CIDR — отправь в этот интерфейс через этот next-hop».
Логика выбора:
- «Хочу на
192.168.1.50?» — подходит под192.168.1.0/24→ отдаю напрямую через wlan0 - «Хочу на
10.20.5.10?» — подходит под10.20.0.0/16→ отдаю через VPN tun0 - «Хочу на
93.184.216.34?» — не подходит ни под что → берётся default, отдаю шлюзу192.168.1.1
На сервере (роутере, фаерволе, ALB) таблица сложнее, но принцип тот же.
4. Как пакет идёт «по миру» — hop-by-hop
Каждое промежуточное устройство называется hop (прыжок). Пакет от тебя до сервера на другом континенте проходит 10-20 хопов.
На каждом хопе:
- Уменьшается поле TTL (Time To Live) в IP-заголовке — на 1
- Если TTL стал 0 — пакет отбрасывается, отправителю шлётся ICMP «time exceeded»
TTL — это защита от вечно блуждающих пакетов в случае «петли» в маршрутизации. И именно благодаря TTL работает traceroute — он намеренно отправляет пакеты с TTL=1, TTL=2, TTL=3..., и каждый умирающий пакет на N-ном хопе отвечает «я хоп номер N». Так строится карта пути.
5. NAT — как миллионы за одним IP
В уроке 2 мы видели, что у Алисы и Боба дома одинаковые приватные IP (192.168.1.50), но интернет видит только один публичный IP их роутера. Как это работает?
NAT — Network Address Translation. Роутер «подменяет» адреса при выходе и обратно.
То, что показано на схеме — это PAT (Port Address Translation) или NAT Overload. Самый частый вид. Роутер запоминает не только адрес, но и порт — поэтому из одного публичного IP может выходить тысячи устройств одновременно.
Плюсы NAT:
- Экономия адресов — один публичный IP на всю сеть
- «Невидимость» внутренних устройств — снаружи их адресов не видно
- Естественный фаервол — если кто-то не сначала вышел, ему ничего не придёт
Минусы:
- Снаружи трудно обратиться к устройству внутри — нужен port forwarding
- Усложняет P2P-протоколы (требует STUN / TURN / hole punching)
- В Cloud — отдельная биллинговая позиция (NAT Gateway $$ в AWS)
6. Port forwarding и DNAT
Если ты хочешь, чтобы кто-то извне мог достучаться до твоего сервера, который сидит за NAT (например, домашний NAS), — настраиваешь port forwarding.
На роутере: «приходит пакет на мой публичный IP, порт 8080 — переадресуй на 192.168.1.100:80».
Это разновидность NAT — DNAT (Destination NAT). Обратная задача — SNAT (Source NAT, что мы видели в обычном NAT).
7. Маршрутизация в облаке (VPC)
В AWS/GCP/Azure ты будешь конфигурировать те же концепции, только через API. Главные понятия:
VPC
Твоя приватная сеть (LAN) в облаке. Размер — выбираешь сам (например, 10.0.0.0/16).
Subnet
Подсеть внутри VPC. Привязана к зоне доступности (AZ). Бывает public (есть выход в интернет) или private.
Route Table
Та же таблица маршрутизации, что мы видели — но для AWS-подсети. Можешь указать «весь трафик 0.0.0.0/0 → в IGW».
Internet Gateway (IGW)
Шлюз для public-подсетей. Через него VPC общается с интернетом.
NAT Gateway
Тот самый NAT для private-подсетей. Позволяет инстансам в private-подсети ходить в интернет, не пуская никого извне.
Security Group / NACL
Фаерволы. SG — на уровне инстанса (stateful). NACL — на уровне подсети (stateless). Default deny — твой друг.
8. Дебаг — ping, traceroute, mtr
ping
Отправляет ICMP echo-пакеты и измеряет, кто отвечает за сколько мс.
ping example.com
ping -c 4 8.8.8.8 # 4 пакета и выход
Если ping не идёт — проблема либо в сети до хоста, либо хост блокирует ICMP. На AWS по умолчанию SG не пропускает ICMP — не пугайся.
traceroute
Показывает каждый хоп на пути. Это «карта пути».
traceroute example.com # Linux/macOS
tracert example.com # Windows
Вывод покажет 5-20 строчек — каждая строчка это промежуточный роутер с задержкой до него. Если на каком-то хопе обрыв — там и проблема.
mtr
Лучший инструмент. Сочетает ping + traceroute в реальном времени, показывает потери на каждом хопе.
sudo apt install mtr
mtr example.com
Если на конкретном хопе видишь 80% потерь — там «узкое горлышко». Часто проблема не у тебя и не у получателя, а где-то посередине у транзитного провайдера.
9. Что с этим делает DevOps / DevSecOps
- Планирование VPC. CIDR, public/private subnets, IGW, NAT Gateway — это твоя работа в первый день в AWS. Ошибка в planning'е стоит много.
- Security Groups как маршрутизация прав. Думай как «кто к кому может ходить». Минимизируй.
- BGP в больших компаниях. Provider-сторона: BGP — это «протокол маршрутизации между провайдерами». Тебе как DevOps его настраивать не придётся, но услышишь на больших стажировках.
- Kubernetes networking. CNI (Calico, Cilium) реализуют сеть подов. eBPF — новая мода, заменяющая iptables/kube-proxy.
- VPN и Service Mesh. WireGuard, Tailscale, Istio — всё это «надстройки», использующие концепции маршрутизации.
- Диагностика 24/7. «Сайт лежит» — твой первый рефлекс:
ping,mtr,traceroute,dig. Они расскажут, где именно сломалось.
10. Чек-лист «понимаю это»
- ☐ Объясню, что такое шлюз по умолчанию и почему он нужен
- ☐ Прочитаю вывод
ip route - ☐ Понимаю, что такое hop и TTL
- ☐ Объясню, как NAT позволяет миллионам устройств жить за одним IP
- ☐ Помню, чем DNAT отличается от SNAT
- ☐ Знаю компоненты AWS VPC: subnet, route table, IGW, NAT Gateway, SG
- ☐ Использовал
tracerouteи/илиmtr
11. Финальный плейбук: «нет интернета» — весь путь в одном алгоритме
Это выпускной экзамен трека, упакованный в рабочий инструмент. Ситуация, знакомая каждому: «интернет не работает». За этой фразой скрывается десяток разных поломок на разных слоях — и теперь у тебя есть знания, чтобы за пять минут найти нужный. Иди строго по шагам, снизу вверх: каждый шаг проверяет один слой и опирается на один из пройденных уроков.
ipconfig
(Windows) / ip addr (Linux). Интерфейс вообще активен? Если нет — дальше проверять
нечего: чини физическое подключение (кабель, Wi-Fi, драйвер, авиарежим).192.168.x.x / 10.x.x.x —
хорошо, иди дальше. 169.254.x.x — стоп: DHCP не выдал адрес, устройство придумало
заглушку. Перезагрузи роутер, переподключись к сети; не помогло — проблема в роутере/DHCP.ipconfig и пингани его:
ping 192.168.1.1. Отвечает за 1–5 мс — LAN в порядке, иди дальше. Не отвечает —
проблема между тобой и роутером (или сам роутер завис): перезагрузка роутера решает 80% таких
случаев, и теперь ты понимаешь почему — она сбрасывает его таблицы и процессы.ping 8.8.8.8 — публичный адрес, DNS не нужен. Отвечает — весь
транспорт до интернета жив, остался один подозреваемый (шаг 5). Не отвечает при живом шлюзе —
проблема выше твоей квартиры: авария у провайдера или неоплата. tracert 8.8.8.8
покажет, на каком хопе всё обрывается: обрыв на 2–3 хопе = сеть провайдера, звони в поддержку
и говори фактами: «до шлюза пинг есть, дальше второй хоп не отвечает».ping 8.8.8.8 работает, а сайты не открываются? Проверь:
ping ya.ru. «Не удаётся разрешить имя» — диагноз готов: DNS.
Плейбук урока 5: другой резолвер (nslookup ya.ru 8.8.8.8), сброс кэша
(ipconfig /flushdns), настройки DNS.nc -zv хост 443, плейбук урока 4) и статус самого сервиса — сайты
падают, и 5xx-ответы (урок 6) означают «проблема у них, не у тебя». Есть публичные
«downdetector»-сервисы — загляни туда, прежде чем перетряхивать свой роутер.Посмотри, что произошло: шесть шагов — шесть слоёв — шесть уроков. Ты больше не гадаешь «перезагрузить или подождать» — ты локализуешь проблему за минуты и говоришь о ней фактами. Это и есть главный профессиональный навык сетевого инженера, и дальше (в треках профессии СПД) он будет только углубляться: те же шаги, но на операторском оборудовании.
12. Задачи — реши сам (ответы спрятаны)
Задача 1. В таблице маршрутов: default via 192.168.1.1 и 192.168.1.0/24 dev eth0. Куда поедет пакет на 192.168.1.50? А на 8.8.8.8? Почему?
На 192.168.1.50 — напрямую через eth0: маршрут /24 точнее
(длиннее префикс), чем default /0, а побеждает самое точное совпадение. На 8.8.8.8 —
подходит только default → пакет уедет шлюзу 192.168.1.1. Это правило longest prefix match —
сердце всей маршрутизации.
Задача 2. Админ настроил серверу адрес 192.168.1.10/24 и шлюз 10.0.0.1. Сервер не видит другие сети. В чём ошибка?
Шлюз не из подсети сервера: 10.0.0.1 не входит в 192.168.1.0/24, значит сервер не может добраться до него напрямую — а шлюз обязан быть соседом. Правильный шлюз — что-то вроде 192.168.1.1. Одна из самых частых ошибок ручной настройки.
Задача 3. Дома за NAT ты запустил веб-сервер на 192.168.1.10:80. Друг из интернета зайти не может, хотя у тебя «всё работает». Почему — и что настроить на роутере?
Твой адрес приватный: из интернета он немаршрутизируем, а NAT по умолчанию пропускает только соединения, начатые изнутри. Входящему соединению друга роутер не знает, кому отдать пакет. Решение — port forwarding (DNAT): правило «всё, что пришло на мой публичный :80 → отдавать на 192.168.1.10:80».
Задача 4. traceroute до сервера показывает 12 хопов, на 7-м — «* * *», но дальше хопы отвечают, и сайт работает. Авария ли это?
Нет. «* * *» на промежуточном хопе чаще всего значит, что этот роутер просто не отвечает на служебные запросы (так настроен) — но трафик через себя пропускает: следующие хопы же видны. Тревога — когда звёздочки идут до самого конца: тогда путь реально обрывается.
Задача 5. Почему у пакета есть TTL и что произойдёт без него? Как TTL использует traceroute?
TTL (time to live) уменьшается на 1 на каждом хопе; на нуле пакет уничтожается. Без TTL пакет, попавший в кольцевой маршрут (ошибка конфигурации), крутился бы вечно и забивал сеть. Traceroute хитро этим пользуется: шлёт пакеты с TTL=1, 2, 3… — каждый умирает на своём хопе, и роутер-«убийца» сообщает о себе. Так и рисуется карта пути.
Задача 6. В AWS ты создал приватную подсеть для базы данных. Базе нужно скачивать обновления из интернета, но снаружи она должна быть недоступна. Какой компонент VPC это решает и почему это ровно домашний NAT?
NAT Gateway: подсеть получает маршрут «в интернет — через NAT GW». Исходящие соединения (за обновлениями) работают, а входящие снаружи — нет, ведь у базы нет публичного адреса, и NAT не пропустит незапрошенное. Ровно так же твой домашний роутер защищает 192.168.1.10: выходить можно, войти без приглашения нельзя.
ping, traceroute, mtr.
Что дальше
Если ты дошёл до сюда, решил задачи и можешь поставить ✅ хотя бы в 80% чек-листов — ты больше не новичок. У тебя есть фундамент, который многие «действующие айтишники» так и не построили. Дальше маршрут профессии продолжается:
- Главная дорога: открой страницу профессии «Инженер СПД» — там тебя ждёт ступень 1: «Услуги оператора» (ARP-таблицы, VRF, BGP и реальные услуги провайдера). Именно этот путь ведёт к первому найму.
- Хочешь сначала копнуть веб-сторону глубже — трек «Путь HTTPS-запроса — deep dive»: 10 этапов разбора каждой точки на пути запроса. Теперь ты пройдёшь его без вопросов.
- И закрепи ступень: тест «Сети — лёгкий», цель — 80%+.