Как читать таблицы маршрутизации, понимать UDP, TTL и заставллять трафик ходить туда, куда нужно
Автор: Твой братишка-админ
📚 Оглавление
- Глава 1: Три кита сетей — ICMP, TCP, UDP
- Глава 2: Анатомия IP-пакета
- Глава 3: Таблица маршрутизации — карта твоего трафика
- Глава 4: Инструменты управления маршрутами (route)
- Глава 5: Магия масок (netmask)
- Глава 6: Работа с интерфейсами (netsh)
- Глава 7: Как ходит трафик от тебя до сервера и обратно
- Глава 8: Диагностика и отладка
- Глава 9: Шпаргалка команд
🌐 Глава 1: Три кита сетей — ICMP, TCP, UDP
В интернете данные передаются разными способами. Представь, что тебе нужно передать важное сообщение.
📨 TCP (Transmission Control Protocol)
Аналогия: Заказное письмо с уведомлением о вручении.
Ты отправляешь письмо, почтальон проверяет, что адресат дома, вручает, расписывается и приносит тебе подтверждение. Если письмо потерялось — ты отправляешь снова. Надёжно, но медленно.
Где используется: Веб-сайты (HTTP), email, скачивание файлов, мессенджеры.
В консоли видно как:
text
Flags [S] — SYN (запрос на соединение) Flags [.] — ACK (подтверждение) Flags [P] — PUSH (данные) Flags [F] — FIN (завершение)
📣 UDP (User Datagram Protocol)
Аналогия: Крик в толпе или телеграмма.
Ты крикнул — и пошёл дальше. Не знаешь, услышали тебя или нет. Быстро, но ненадёжно.
Где используется: DNS-запросы, видео-звонки, онлайн-игры, стриминг.
Почему это важно: DNS-серверы работают на UDP-порту 53. Поэтому nslookup может не работать, даже если ping идёт — это разные протоколы!
🛎️ ICMP (Internet Control Message Protocol)
Аналогия: Служебный курьер, который проверяет адрес.
Он не носит письма, он только стучится и ждёт ответа «Есть кто?».
Где используется: ping, traceroute, сообщения об ошибках.
Важно: Именно ICMP использует команда ping, поэтому она может работать, даже если сайты не открываются.
📦 Глава 2: Анатомия IP-пакета
Когда ты отправляешь данные, они не летят одним куском. Они нарезаются на пакеты. Каждый пакет — это конверт с адресами и содержимым.
text
┌─────────────────────────────────┐
│ IP-заголовок │
├─────────────────────────────────┤
│ Откуда: 192.168.1.167 │
│ Куда: 8.8.8.8 │
│ TTL: 64 │
│ Протокол: UDP (17) или TCP (6) │
├─────────────────────────────────┤
│ Данные (payload) │
└─────────────────────────────────┘
⏱️ TTL (Time To Live) — счётчик жизней пакета
Каждый раз, когда пакет проходит через маршрутизатор (хоп), его TTL уменьшается на 1. Когда TTL доходит до 0, пакет уничтожается. Это нужно, чтобы пакеты не бродили по сети вечно.
TTL = 64 → обычно ставят Linux, VPN-серверы, Docker
TTL = 128 → обычно ставят Windows
TTL = 255 → сетевые устройства (роутеры)
Как использовать: Если при включённом VPN у тебя ping 8.8.8.8 показывает TTL=64, а без VPN TTL=106 (или 128) — ты точно знаешь, что трафик идёт через VPN.
🗺️ Глава 3: Таблица маршрутизации — карта твоего трафика
Таблица маршрутизации — это навигатор Windows. Когда компьютеру нужно отправить пакет, он смотрит в таблицу и решает: «А через какую дверь мне выйти?».
Посмотрим на типичную таблицу:
text
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.167 50
0.0.0.0 0.0.0.0 On-link 10.33.0.2 10
1.0.0.0 255.0.0.0 On-link 10.33.0.2 6
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
192.168.1.0 255.255.255.0 On-link 192.168.1.167 306
🧩 Как читать таблицу
| Колонка | Что означает | Пример |
|---|---|---|
| Network Destination | Сеть назначения | 0.0.0.0 (все сети) |
| Netmask | Маска сети | 0.0.0.0 (все адреса) |
| Gateway | Куда отправлять пакет | 192.168.1.1 (роутер) |
| Interface | Через какой интерфейс | 10.33.0.2 (VPN-адаптер) |
| Metric | Приоритет (чем меньше, тем важнее) | 50, 10, 6 |
🎯 Главное правило Windows
Windows просматривает таблицу сверху вниз и выбирает самое точное совпадение с наименьшей метрикой .
Пример:
- Если нужно отправить пакет на
8.8.8.8, Windows ищет:- Сначала точное совпадение
8.8.8.8→ нет - Потом сеть
8.8.8.0/24→ есть, метрика 6 → идёт через VPN - Иначе попадёт в
0.0.0.0/0→ через роутер
- Сначала точное совпадение
🚨 Почему у нас всё ломалось
Когда tun2socks создавал кучу маршрутов типа 1.0.0.0/8, 2.0.0.0/7 и т.д., Windows начинала отправлять туда все пакеты, которые подходили под эти маски. А метрика 6 была ниже, чем у наших специальных маршрутов (1), поэтому они не использовались.
🛠️ Глава 4: Инструменты управления маршрутами (route)
route print — просмотр таблицы
cmd
route print -4 # только IPv4 route print -6 # только IPv6 route print -4 | findstr "0.0.0.0" # поиск конкретных маршрутов
route add — добавление маршрута
cmd
route add 8.8.8.0 mask 255.255.255.0 10.33.0.2 metric 5
8.8.8.0— сеть назначенияmask 255.255.255.0— маска (определяет размер сети)10.33.0.2— шлюз (куда отправлять)metric 5— приоритет (чем меньше, тем важнее)- Без
-p— маршрут исчезнет после перезагрузки - С
-p— постоянный маршрут
route delete — удаление маршрута
cmd
route delete 8.8.8.0 route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1
🧠 Важный приём: удаление по маске
Если маршрутов много, можно удалить все, ведущие через определённый шлюз:
cmd
route delete 0.0.0.0 mask 0.0.0.0 10.33.0.2
🎭 Глава 5: Магия масок (netmask)
Маска определяет, какая часть IP-адреса относится к сети, а какая — к устройству.
text
IP: 192.168.1.167 Маска: 255.255.255.0
Это значит: первые 3 числа (192.168.1) — сеть, последнее (167) — устройство.
📊 Популярные маски
| Маска | CIDR | Сколько адресов | Пример назначения |
|---|---|---|---|
| 255.255.255.255 | /32 | 1 | Конкретный IP |
| 255.255.255.0 | /24 | 256 | Домашняя сеть |
| 255.255.0.0 | /16 | 65536 | Большая сеть |
| 255.0.0.0 | /8 | 16 млн | Огромная сеть |
Почему 1.0.0.0 mask 255.0.0.0 — это плохо?
Это значит: «Все IP, начинающиеся с 1 (от 1.0.0.0 до 1.255.255.255), отправляй через VPN». А таких адресов — 16 миллионов! Туда попадает половина интернета.
🔧 Глава 6: Работа с интерфейсами (netsh)
netsh — мощнейший инструмент для управления сетью из командной строки.
Просмотр интерфейсов
cmd
netsh interface show interface
Узнать имя интерфейса (важно для DNS!)
cmd
netsh interface show interface
Важно: Имя интерфейса (например, tun2) стабильно, а цифровой индекс (например, 43) может меняться. Всегда работай по имени!
Настройка DNS
cmd
# Установить основной DNS netsh interface ip set dns name="tun2" static 8.8.8.8 validate=no # Добавить запасной DNS netsh interface ip add dns name="tun2" 1.1.1.1 index=2 validate=no # Посмотреть текущие DNS netsh interface ip show dns name="tun2"
Параметр validate=no — отключает проверку доступности DNS-сервера. Иначе команда может падать с ошибкой, если сеть ещё не поднялась.
Сброс всех настроек интерфейса
cmd
netsh interface ip delete dns name="tun2" all
🔄 Глава 7: Как ходит трафик от тебя до сервера и обратно
Давай проследим путь одного пакета.
Шаг 1: Ты открываешь сайт
Браузер говорит: «Мне нужен IP-адрес google.com«.
Шаг 2: DNS-запрос
Система смотрит в таблицу маршрутизации:
text
Куда: 8.8.8.8 (порт 53, UDP)
Находит маршрут 8.8.8.0/24 → шлюз 10.33.0.2 (VPN-адаптер)
Шаг 3: Инкапсуляция
Пакет заворачивается в VPN-шифрование и отправляется на реальный интерфейс.
Шаг 4: Получение ответа
Сервер 8.8.8.8 отвечает. Пакет приходит на VPN-сервер, расшифровывается и отправляется тебе.
Шаг 5: Применение правил firewall
В этот момент в игру вступает KillSwitch. Если он настроен блокировать UDP-порты, кроме исключений — пакет может быть отброшен.
🕵️ Глава 8: Диагностика и отладка
Цепочка проверок при проблемах
- Есть ли связь с сервером?cmdping 172.29.172.1Если нет — VPN не поднялся.
- Ходит ли трафик в интернет?cmdping 8.8.8.8Если да — базовая связность есть.
- Работает ли DNS?cmdnslookup google.com nslookup google.com 8.8.8.8 # принудительно через 8.8.8.8Если
nslookupне работает, аping 8.8.8.8работает — проблема в DNS/UDP. - Проверка конкретного порта и протоколаcmdtest-netconnection 8.8.8.8 -port 53 -InformationLevel Detailed
TcpTestSucceeded: True— TCP работает, UDP может быть заблокирован. - Анализ таблицы маршрутизацииcmdroute print -4Ищи:
- Два маршрута
0.0.0.0→ конфликт - Маршруты с масками /8, /7, /6 → мусор от VPN
- Маршрут к твоему DNS с низкой метрикой
- Два маршрута
📝 Глава 9: Шпаргалка команд
Маршруты (route)
cmd
route print -4 # показать таблицу IPv4 route add 8.8.8.0 mask 255.255.255.0 10.33.0.2 metric 5 # добавить маршрут route add -p 0.0.0.0 mask 0.0.0.0 10.33.0.2 metric 5 # постоянный маршрут route delete 8.8.8.0 # удалить маршрут route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1 # удалить конкретный
Интерфейсы и DNS (netsh)
cmd
netsh interface show interface # список интерфейсов netsh interface ip show dns name="tun2" # показать DNS для интерфейса netsh interface ip set dns name="tun2" static 8.8.8.8 validate=no netsh interface ip add dns name="tun2" 1.1.1.1 index=2 validate=no netsh interface ip delete dns name="tun2" all # сбросить DNS
Диагностика
cmd
ping -n 4 8.8.8.8 # 4 пинга ping -f -l 1472 8.8.8.8 # проверить MTU (флаг "не фрагментировать") nslookup google.com # системный DNS nslookup google.com 8.8.8.8 # принудительно через 8.8.8.8 nslookup -vc google.com 8.8.8.8 # использовать TCP вместо UDP test-netconnection 8.8.8.8 -port 53 -InformationLevel Detailed tracert 8.8.8.8 # проследить путь пакета
Сброс сети (когда всё сломалось)
cmd
netsh int ip reset netsh winsock reset ipconfig /flushdns
🎯 Заключение
Теперь ты понимаешь:
- ✅ Почему
pingработает, а сайты нет (ICMP vs UDP) - ✅ Как читать таблицу маршрутизации
- ✅ Как TTL выдает VPN
- ✅ Почему маски /8 ломают интернет
- ✅ Как заставить Windows использовать правильные DNS
- ✅ Где искать проблему, когда всё сломалось

