Загрузка

Динамическая и статическая маршрутизация — развёрнутый практический гид

Динамическая и статическая маршрутизация — развёрнутый практический гид

Здесь — всё, что нужно знать, чтобы уверенно проектировать, настраивать и отлаживать маршрутизацию: от простых статических маршрутов до OSPF/BGP, от выбора маршрута до политики и безопасности. Примеры и команды — в основном для MikroTik RouterOS, плюс Linux/Windows для диагностики.


Краткий план (что будет)

  1. Принцип работы маршрутизации (recursion, longest-prefix)
  2. Статическая маршрутизация — когда и как использовать
  3. Динамическая маршрутизация — виды и принципы (distance-vector vs link-state)
  4. OSPF — что важно знать и примеры (MikroTik)
  5. BGP — основы, атрибуты, примеры (когда нужен)
  6. Комбинация статических и динамических маршрутов (AD, floating routes, redistrib)
  7. Политики (route filtering, prefix-list, route-maps / routing filters)
  8. Практические советы по дизайну, безопасность, отладка и проверки
  9. Частые ошибки и как их избежать

1. Как вообще роутер выбирает маршрут (ключевые принципы)

  • Longest Prefix Match — при поиске маршрута выбирается запись с наибольшим префиксом (наиболее специфичная).
    Пример: есть 10.127.0.0/16 и 10.127.127.11/32. Для адреса 10.127.127.11 выберется /32.

  • Administrative Distance (AD) — «доверие» к источнику маршрута. Если два маршрута имеют одинаковый префикс, выбирают с меньшей AD (например, connected=0, static=1, OSPF≈110, BGP≈20/200).

  • Metric (cost) — внутри протокола маршрутизации используются метрики (cost, hop count, bandwidth-based и т.д.) — выбирается маршрут с наименьшей метрикой.

  • Recursive lookup — если next-hop указан IP, роутер ищет, как добраться до next-hop; если до next-hop нет маршрута → исходный маршрут не работает.


2. Статическая маршрутизация

Что это

Ручные пути, которые админ добавляет явно (ip route add …). Простейший, предсказуемый способ.

Когда использовать

  • Малые сети (пара роутеров).

  • Default route на краевом роутере (0.0.0.0/0 → провайдер).

  • Резервный маршрут (floating static).

  • Когда нужно «заблокировать» или форсировать конкретный путь (например, на конкретный шлюз).

Примеры (MikroTik)

Добавить default route:

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 distance=1 comment="default gw"

Floating (резервный) static:

/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.2 distance=10 comment="backup via 10.0.0.2"

Статический маршрут к подсети:

/ip route add dst-address=192.168.50.0/24 gateway=10.1.1.2

Минусы статиков

  • Не масштабируются (много ручной работы).

  • Не адаптируются к отказам — если следующий хоп упал, маршрут остаётся, пока его не удалят/не обновят.

  • Подходят как часть гибридной стратегии (статик + динамика).


3. Динамическая маршрутизация — виды и принципы

Два основных подхода

  • Distance-vector (DV): маршрутизаторы обмениваются списками известных сетей и расстояниями (RIP). Преимущества: простота; недостатки: медленная сходимость, проблемы с петлями (классические обходы: split horizon, poison reverse).

  • Link-state (LS): каждый роутер знает топологию (LSA), строит карту сети и запускает SPF (Dijkstra) для расчёта кратчайших путей (OSPF, IS-IS). Преимущества: быстрая сходимость, масштабируемость; недостатки: сложнее, требует больше ресурсов.

Популярные протоколы

  • RIP — старый, hop-count, максимум 15 хопов. Практически не используется в современных сетях.

  • OSPF (v2/v3) — link-state для IPv4/IPv6. Area-based, backbone area 0.0.0.0. Подходит для корпоративных сетей.

  • BGP — протокол между автономными системами (и внутри крупных AS). Использует политику (attributes), масштабируем.

  • EIGRP — гибрид (Cisco), сейчас встречается в сетях Cisco.


4. OSPF — что важно знать (коротко и практично)

Концепции

  • Router ID — идентификатор роутера (IPv4-формат). Лучше задавать явно.

  • Area: backbone = 0.0.0.0; для масштабирования сети делим на area, абстрагируем LSDB.

  • LSA типы — разные типы (Router LSA, Network LSA, Summary LSA, External LSA).

  • SPF — вычисляет лучший путь на основе стоимости (cost). Cost обычно рассчитывается от скорости интерфейса (в MikroTik можно задавать вручную).

Принцип работы

  1. Устанавливаются соседства (adjacency).
  2. Обмениваются LSAs.
  3. Каждый роутер строит SPF и обновляет локальную routing table.

MikroTik — пример конфигурации OSPF

/routing ospf instance

add name=ospf1 router-id=10.255.255.1

/routing ospf area
add name=backbone instance=ospf1 area-id=0.0.0.0

/routing ospf interface-template
add networks=10.127.127.0/24 area=backbone
add networks=172.30.30.0/24 area=backbone

Или через интерфейсы:

/routing ospf interface

add interface=wg0 cost=10

Практические советы по OSPF

  • Устанавливайте стабильный router-id (чтобы не дергалась сетка при ребуте).

  • Грамотно проектируйте area: backbone (0), потом area 1/2 и т.д. Не делайте слишком много соседств в одной зоне.

  • Для туннелей (WireGuard) используйте /30 или /31 адреса как point-to-point, устанавливайте интерфейс OSPF в p2p.

  • Настройте authentication (MD5) на участках, где это надо, чтобы предотвратить поддельные LSA.


5. BGP — основы и когда нужен

Когда брать BGP

  • Если ты — провайдер или у тебя несколько провайдеров (multi-homed).

  • Если надо управлять префиксами между автономными системами (AS), делать сложные политики маршрутизации, управлять входящим трафиком (local_pref, AS_PATH, MED, communities).

Основные понятия

  • AS (Autonomous System) — номер сети в BGP.

  • eBGP / iBGP — eBGP между разными AS, iBGP внутри одного AS.

  • NEXT_HOP, AS_PATH, LOCAL_PREF, MED — основные атрибуты, по которым BGP выбирает лучший путь.

  • Route reflectors / confederations — уменьшение необходимости full-mesh iBGP.

BGP best-path selection (коротко)

BGP выбирает путь, руководствуясь набором критериев: локальная привязка (LOCAL_PREF), AS_PATH (короче лучше), origin, MED (меньше лучше), eBGP over iBGP, IGP cost to NEXT_HOP и т.д.

MikroTik — пример BGP (упрощённо)

/routing bgp instance

set default as=65001 router-id=10.255.255.1

/routing bgp peer
add name=peer1 remote-address=203.0.113.2 remote-as=65002 out-filter=export-bgp in-filter=import-bgp

/routing bgp network
add network=198.51.100.0/24

Фильтры (import/export) — обязательно, чтобы не анонсировать лишние префиксы.

Практические замечания по BGP

  • Фильтруйте префиксы — опасно принимать/анонсировать всё подряд.

  • Используйте prefix-lists / AS-path filters / communities для управления политиками.

  • Для eBGP соседство обычно устанавливается на маршрутизаторах с прямой связью; TTL=1 обычно хватит, но для multi-hop ставят ebgp-multihop.

  • TCP MD5 / TCP-AO можно использовать для защиты сессии BGP.


6. Комбинация статических и динамических маршрутов

Administrative Distance (AD)

Если у тебя есть статический маршрут и OSPF- или BGP-маршрут к той же сети, AD решает: статик с AD=1 выиграет против OSPF с AD=110. Поэтому:

  • Для перехода на динамику: либо удаляй статические маршруты, либо делай у них бoльшую distance (floating static), чтобы динамика имела приоритет.

Redistribution (redistrib)

Иногда нужно распространить маршруты из одного протокола в другой (например, static → OSPF или OSPF → BGP). При этом важно:

  • Использовать теги маршрутов (route tags) чтобы избежать routing loops.

  • Не делать «слепую» redistrib всех маршрутов — фильтровать по prefix-list, по метрике.

Пример Redistribute static → OSPF (на оборудовании, где есть команда redistribute static into ospf) — в MikroTik это делается через routing ospf network statements или routing filters (прописать static в OSPF через network/redistribute).

Floating static — пример

Если у тебя основной маршрут по OSPF, но хочешь резервный static через другой провайдер:

# статический резерв с большим distance

/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.2 distance=20 comment="backup"

Если OSPF исчезнет — static с distance=20 станет активным.


7. Политики маршрутизации, фильтрация и контроль (policy routing)

Почему важны фильтры

  • Защита от неверных/злонамеренных анонсов (BGP hijack).

  • Умение управлять входящим/исходящим трафиком (pref-lists, route-maps, routing filters).

В MikroTik

  • Routing filters применяются в BGP/OSPF для import/export.

  • Mangle + routing mark — для policy routing (маршрутизация по источнику/порту): пометить трафик и отправить в определённую routing table.

Пример policy routing (MikroTik):

  1. Мангл: пометить трафик с source=192.168.10.0/24:

/ip firewall mangle

add chain=prerouting src-address=192.168.10.0/24 action=mark-routing new-routing-mark=to-provider1 passthrough=yes

  1. Таблица маршрутов:

/ip route add dst-address=0.0.0.0/0 gateway=203.0.113.1 routing-table=to-provider1

Prefix-lists и route-maps (аналогии)

  • Prefix-list — набор префиксов для фильтрации (match/permit/deny).

  • Route-map / routing filter — более мощные правила: можно менять метрики, теги, local_pref и т.д. Используются при импорт/экспорт в BGP, redistribution.


8. Security, hardening и best practices

  • Аутентификация соседств: OSPF MD5, BGP TCP MD5/TCP-AO.

  • Фильтрация входящих префиксов (BGP import): не принимайте больше, чем ожидаете.

  • Rate limiting для управленческих протоколов и SSH/Winbox.

  • Мониторинг соседств: оповещения, SNMP, syslog.

  • Route-authentication (RPKI/IRR) для BGP на границе (если доступно).

  • Versioning RouterID — задавайте статично, иначе при перезапуске Neighbor пересоздастся и OSPF/BGP будут дергаться.


9. Отладка и диагностика (полезные команды)

MikroTik

  • Показать таблицу маршрутов:

/ip route print

  • Показать OSPF соседей / базу:

/routing ospf neighbor print

/routing ospf database print

  • Показать BGP peers:

/routing bgp peer print

/routing bgp advertisements print

  • Trace / ping:

/tool traceroute 8.8.8.8

/ping 10.127.127.1

  • Проверить конкретный маршрут (куда пойдёт пакет):

/ip route get 8.8.8.8

Linux

  • Таблица маршрутов:

ip route show

ip route get 8.8.8.8

  • OSPF/BGP (если FRR/Quagga/BIRD):

vtysh -c "show ip route"

vtysh -c "show ip ospf neighbor"

vtysh -c "show ip bgp summary"

Windows

  • route print — таблица маршрутов

  • tracert, ping, netstat -rn

Диагностика соседства

  • OSPF: neighbor state должен быть FULL. Если не — проверь MTU, hello/hold timers, аутентификацию, area mismatches.

  • BGP: Established — если нет — проверь AS, remote-address, TCP connectivity, MD5, TTL (multihop). show ip bgp даст причины, почему маршрут не выбран.


10. Типичные сценарии и рекомендации

Малый офис (1–3 роутера)

  • Статика + default route. Если появится потребность — OSPF на туннелях (WireGuard).

  • Use static for WAN, maybe OSPF internal for dynamic internal links.

Несколько филиалов (до ~50 роутеров)

  • OSPF или iBGP с route summarization. Используйте area design (backbone + per-site area или per-region area).

Большая инфраструктура / мультихом (провайдер)

  • BGP — edge routers, route filters, prefix limits, RPKI validation, route reflectors для iBGP.

  • Используйте communities для управления входящим трафиком.


11. Частые ошибки и как их избежать

  • Оставленные статические маршруты, мешающие динамике — используйте floating static с большей distance при переходе на OSPF.

  • Redistribute без тегов — приводит к routing loops и дублированию. Всегда тегируйте и фильтруйте.

  • Не фильтровать BGP import/export — риск анонса чужих префиксов (BGP hijack).

  • Неправильный router-id или area в OSPF — соседства не формируются.

  • MTU mismatch на туннелях — OSPF/BGP adjacency может не подниматься или фрагментация убьёт TCP-performance.


12. Короткая шпаргалка команд (микро-подытог)

  • Добавить статический маршрут:

/ip route add dst-address=10.0.0.0/24 gateway=192.168.1.1

  • Добавить OSPF instance / area / networks — см. раздел OSPF выше.

  • Добавить BGP peer:

/routing bgp peer add name=peer1 remote-address=203.0.113.2 remote-as=65002

  • Проверить маршрут для адреса:

/ip route get 8.8.8.8

  • Показать OSPF соседей:

/routing ospf neighbor print


Заключение — как выбрать подход

  • Статический — если сеть простая и стабильная.

  • OSPF — если у тебя много внутренних сетей, нужны быстрые реакции на отказ и не требуется глобальная политика.

  • BGP — если речь о междоменной маршрутизации или управлении мультихом-выходами к провайдерам.

  • Часто гибрид — статические маршруты для некоторых путей + OSPF внутри + BGP на границе.

VLAN и сегментация сети: подробное руководство

VLAN и сегментация сети: подробное руководство

В этой статье разберём, что такое VLAN, зачем они нужны, как работают на практике, и как использовать их в реальных сценариях — от небольшого офиса до крупного предприятия.


1. Что такое VLAN

VLAN (Virtual Local Area Network) — это технология разделения одной физической сети на несколько логических подсетей.

  • Все устройства подключены к одному «железу» (например, к одному свичу или одному интерфейсу маршрутизатора).

  • Но благодаря VLAN они оказываются в разных изолированных сегментах.

Пример:

  • У вас есть один коммутатор и 20 компьютеров.

  • 10 компьютеров — бухгалтерия, 10 — отдел продаж.

  • Без VLAN — все они в одной подсети, могут видеть друг друга, возможны конфликты и риски безопасности.

  • С VLAN — бухгалтерия и продажи разделены, как будто это два разных коммутатора и две разные сети.


2. Зачем нужны VLAN

  1. Безопасность — сотрудники отдела продаж не смогут подключиться к компьютерам бухгалтерии.
  2. Снижение широковещательного трафика — каждое VLAN имеет свой broadcast-домен.
  3. Управление сетью — проще назначать правила, ограничивать скорость, фильтровать трафик.
  4. Гибкость — можно «смешивать» пользователей: например, бухгалтерия может сидеть на разных этажах, но логически будет в одном VLAN.

3. Основные принципы работы VLAN

  • Каждый пакет в сети Ethernet имеет специальное VLAN-тегирование (802.1Q).

  • Тег содержит номер VLAN (от 1 до 4094).

  • Коммутатор или маршрутизатор по тегу понимает, к какой логической сети принадлежит кадр.

Виды портов на коммутаторе:

  • Access-порт — работает только с одним VLAN (обычно для подключения компьютеров).

  • Trunk-порт — пропускает трафик с несколькими VLAN, пакеты передаются с тегами (обычно для связи коммутаторов или маршрутизаторов).


4. VLAN и маршрутизация

  • VLAN — это разделение на уровне L2 (канальный уровень).

  • Чтобы устройства из разных VLAN могли общаться, нужен маршрутизатор или L3-коммутатор.

Варианты:

  1. Router-on-a-stick (роутер с одним интерфейсом, на котором поднимаются подинтерфейсы VLAN).
  2. L3-свитч (умеет сам маршрутизировать между VLAN).
  3. Микротик/любая L3-OS — создаём VLAN-интерфейсы и настраиваем маршруты.

5. DHCP и VLAN

DHCP можно настроить на каждый VLAN отдельно.

  • Например, VLAN 10 (бухгалтерия) → сеть 192.168.10.0/24.

  • VLAN 20 (продажи) → сеть 192.168.20.0/24.

  • DHCP сервер выдаёт адреса в зависимости от VLAN.

Это важно: если оставить один DHCP на все VLAN, то произойдёт «перемешивание» адресов.


6. Реальные сценарии использования VLAN

Сценарий 1. Малый офис

  • Один MikroTik + управляемый свич.

  • VLAN 10 — бухгалтерия (192.168.10.0/24).

  • VLAN 20 — продажи (192.168.20.0/24).

  • VLAN 30 — Wi-Fi для гостей (192.168.30.0/24, без доступа к внутренним ресурсам).

Сценарий 2. Камеры видеонаблюдения

  • VLAN 40 — видеокамеры (192.168.40.0/24).

  • VLAN 41 — регистратор.

  • Нет выхода в интернет, только доступ к регистратору.

Сценарий 3. Крупное предприятие

  • VLAN по отделам: бухгалтерия, продажи, техподдержка, ИТ.

  • VLAN для серверов и виртуализации.

  • VLAN для VoIP телефонии (QoS + приоритет).

  • VLAN для Wi-Fi гостей (изолированный).


7. VLAN в MikroTik (пример конфигурации)

На MikroTik с одним физическим интерфейсом (router-on-a-stick):

/interface vlan
add interface=ether1 name=vlan10 vlan-id=10
add interface=ether1 name=vlan20 vlan-id=20

/ip address
add address=192.168.10.1/24 interface=vlan10
add address=192.168.20.1/24 interface=vlan20

/ip pool
add name=pool10 ranges=192.168.10.10-192.168.10.100
add name=pool20 ranges=192.168.20.10-192.168.20.100

/ip dhcp-server
add name=dhcp10 interface=vlan10 address-pool=pool10 disabled=no
add name=dhcp20 interface=vlan20 address-pool=pool20 disabled=no

Теперь:

  • ПК бухгалтерии подключается в порт свича, где access VLAN 10 → получает адрес 192.168.10.X.

  • ПК отдела продаж → access VLAN 20 → получает 192.168.20.X.


8. Плюсы и минусы VLAN

Плюсы:

  • Экономия оборудования (одна физическая сеть — много логических).

  • Безопасность и контроль доступа.

  • Оптимизация широковещательных пакетов.

  • Гибкость в управлении сетью.

Минусы:

  • Требует управляемого оборудования.

  • Ошибки конфигурации приводят к «потерянным» пакетам.

  • При большом количестве VLAN — сложнее администрировать.


9. Когда VLAN особенно полезны

  • Когда несколько отделов в одной физической сети, но требуется разделение.

  • При создании гостевого Wi-Fi с ограничениями.

  • Для VoIP, видеонаблюдения, IoT — чтобы не мешать основной сети.

  • В дата-центрах — для разделения клиентов или сервисов.


Вывод: VLAN — это основа сегментации сети. Они позволяют «разделить» сеть без физического разделения кабелей, повысить безопасность, уменьшить нагрузку и гибко управлять доступом.

VPN (Virtual Private Network) — подробное руководство

VPN (Virtual Private Network) — подробное руководство

В этом разделе разберём, что такое VPN, зачем он нужен, виды, принципы работы, плюсы и минусы, а также практические примеры настройки (MikroTik, WireGuard, OpenVPN).


1. Что такое VPN

VPN (виртуальная частная сеть) — это технология, позволяющая создавать защищённое соединение поверх публичной сети (например, интернета) между компьютерами или сетями, так что данные передаются «как внутри частной сети».

Основные задачи VPN:

  • Защита трафика (шифрование),

  • Обход ограничений/блокировок (например, географических),

  • Объединение филиалов в корпоративную сеть через интернет,

  • Доступ к внутренним ресурсам из внешней сети.

VPN работает «туннелем»: один IP-пакет оборачивается в другой, который может проходить через интернет, а на приёмной стороне происходит распаковка.


2. Основные виды VPN

2.1 По назначению

  1. Site-to-Site (Сеть–Сеть)

    • Соединяет две локальные сети через интернет.

    • Пользователи внутри каждой сети получают доступ к ресурсам другой сети.

    • Часто используется для филиалов компании.

  2. Remote Access (Удалённый доступ)

    • Подключение отдельного компьютера (или мобильного устройства) к корпоративной сети.

    • Работает для сотрудников на удалёнке.


2.2 По протоколу/технологии

Протокол / тип Принцип Плюсы Минусы
WireGuard Современный, лёгкий VPN на базе криптографии Curve25519 Высокая скорость, простой конфиг, надежное шифрование Новый, меньше совместимости с устаревшими устройствами
OpenVPN SSL/TLS туннель Совместим с Linux, Windows, macOS, мобильные Медленнее WireGuard, сложнее конфигурировать
IPSec (IKEv2, L2TP/IPSec) Стандартный протокол для туннелей Широко поддерживается Более сложный конфиг, медленнее на слабом железе
PPTP Старый протокол, почти не используется Прост в настройке Ненадёжное шифрование, уязвим

3. Основные компоненты VPN

  1. VPN-сервер — точка, к которой подключаются клиенты.
  2. VPN-клиент — устройство, которое устанавливает туннель.
  3. Туннель — зашифрованный канал передачи данных.
  4. Маршрутизация / NAT — определяет, какой трафик идёт через VPN, а какой — напрямую в интернет.

Пример: у вас домашний компьютер подключается к корпоративной сети через VPN. Все запросы к внутренним серверам идут через туннель, а остальной интернет может идти напрямую или через VPN, в зависимости от настроек «split-tunnel».


4. Принципы работы

  1. Инициализация соединения: клиент шифрует свой трафик и направляет на сервер.
  2. Аутентификация: сервер проверяет ключи, сертификаты или логин/пароль.
  3. Установка туннеля: создается виртуальный интерфейс на клиенте и сервере.
  4. Передача данных: все пакеты, предназначенные для VPN-сети, идут через туннель.
  5. Дешифровка на приёмной стороне: сервер/клиент расшифровывает пакеты и передает их локально.

В WireGuard, например, туннель создаётся через виртуальный интерфейс wg0, каждому участнику выдаётся уникальный туннельный IP.


5. VPN и маршрутизация

  • Полный туннель (full tunnel): весь трафик клиента идёт через VPN, включая интернет.

  • Частичный туннель (split-tunnel): только определённые сети маршрутизируются через VPN, остальной интернет идёт напрямую.

Пример MikroTik (WireGuard, split-tunnel):

/interface wireguard add name=wg0 listen-port=51820 private-key="PRIVATE_KEY"
/ip address add address=10.127.127.1/24 interface=wg0

/peer add public-key="CLIENT_PUBLIC_KEY" allowed-address=10.127.127.2/32 endpoint-address=203.0.113.20 endpoint-port=51820

В allowed-address указывается, какие адреса клиента допустимы через туннель.


6. Преимущества VPN

  • Шифрование и защита трафика от прослушивания.

  • Возможность соединять сети через интернет, как будто они локальные.

  • Обход гео-блокировок и фильтров.

  • Универсальность: подходит для филиалов, удалённых сотрудников, мобильных устройств.


7. Минусы и ограничения

  • Зависимость от скорости и стабильности интернет-соединения.

  • Нагрузка на сервер (шифрование/дешифровка).

  • Возможные конфликты с NAT / CG-NAT у провайдеров.

  • Не всегда прозрачны для приложений, использующих нестандартные порты или протоколы с встроенным IP (FTP, SIP).


8. Настройка VPN на практике

8.1 WireGuard (MikroTik)

  • Создать интерфейс и IP для туннеля.

  • Добавить peer с публичным ключом клиента и AllowedIPs.

  • Настроить маршруты для нужных подсетей.

  • (Опционально) SNAT/masquerade для доступа в интернет через VPN.

8.2 OpenVPN (MikroTik или Linux)

  • Создать сервер (SSL/TLS или user/pass).

  • Выдать сертификаты клиентам.

  • Настроить IP pool для VPN-клиентов.

  • Прописать маршруты для внутренних сетей.


9. VPN и NAT: как связаны

  • VPN обычно создаёт виртуальный интерфейс, поэтому NAT часто не нужен для внутреннего трафика, если только не нужно выходить в интернет через VPN.

  • Для клиентов в локальной сети, которые хотят доступ к внешнему интернету через VPN-сервер, используют masquerade/SNAT на VPN-интерфейсе.

Пример: филиал подключается к центру через WireGuard. Все внутренние сети филиала доступны через туннель, интернет филиала идёт напрямую (split-tunnel), но для полного туннеля на сервере делаем SNAT.


10. Практические советы

  1. WireGuard предпочтителен для новых установок: прост, быстрый, безопасный.
  2. OpenVPN нужен для кроссплатформенной совместимости и случаев с SSL-only портами.
  3. Split-tunnel снижает нагрузку и увеличивает скорость интернет-соединения, но требует аккуратной настройки маршрутов.
  4. Фиксируйте туннельные IP для стабильности: для клиентов указывайте статические AllowedIPs, особенно если нужны port-forward.
  5. Для обхода блокировок лучше отдельный сервер/peer, чтобы не мешать основной корпоративной сети.

NAT (Network Address Translation) — подробный разбор с практикой (MikroTik + Linux)

NAT (Network Address Translation) — подробный разбор с практикой (MikroTik + Linux)

Ниже — всё, что нужно знать о NAT: что это, зачем, какие виды бывают, как работает «под капотом», типичные сценарии (port-forward, 1:1, masquerade, hairpin), проблемы (CG-NAT, протоколы с встраиваемыми IP), отладка и лучшие практики. Примеры команд для MikroTik RouterOS и Linux (iptables/nftables) включены.


Коротко: что такое NAT и зачем он нужен

NAT — это замена IP-адресов и/или портов в IP-пакетах на пограничном устройстве (роутере), чтобы:

  • несколько внутренних устройств могли выходить в интернет через один публичный IP (экономия IPv4),

  • обеспечить проброс/доступ внутрь локальной сети (port-forward),

  • скрыть внутреннюю структуру сети (доп. уровень «безопасности»).

NAT обычно выполняется на границе сети (gateway), и чаще всего работает statefully: создаётся запись трансляции (conntrack), по которой возвращённые пакеты правильно маппятся на внутренний хост.


Виды NAT (по назначению)

1) Source NAT (SNAT)

Подмена исходного адреса (src IP) на внешний IP на выходе в интернет.

  • Статический SNAT: конкретная замена (to-addresses = X).

  • Masquerade: динамический вариант SNAT для интерфейсов с меняющимся внешним IP.

MikroTik (masquerade):

/ip firewall nat

add chain=srcnat out-interface=ether1 action=masquerade comment=”маскарадинг на интернет-интерфейс”

 

Linux (iptables, MASQUERADE):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# или статический SNAT

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –to-source 203.0.113.10

 


2) Destination NAT (DNAT) / Port Forward (PREROUTING → DNAT)

Перенаправление входящих соединений на внутренние хосты. Используется для проброса портов и публикации серверов.

MikroTik (HTTP → внутренний веб-сервер):

/ip firewall nat

add chain=dstnat dst-address=203.0.113.10 dst-port=80 protocol=tcp action=dst-nat to-addresses=192.168.1.10 to-ports=80 comment=”web”

 

Linux (iptables DNAT):

iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

 


3) 1:1 NAT (static mapping)

Один внешний IP ↔ один внутренний IP (полная подмена src и/или dst по необходимости).
Полезно, если у тебя выделен публичный IP и ты хочешь соответствие 1:1.

MikroTik (пример 1:1, исходящий):

/ip firewall nat

add chain=srcnat src-address=192.168.1.100 action=src-nat to-addresses=203.0.113.10 comment=”1:1 SNAT”

 


4) PAT (Port Address Translation)

Несколько внутренних адресов используют один внешний IP, но с разными портами (типичный MASQUERADE/PAT). Клиенты получают разный внешний порт для уникальной сессии.


Hairpin NAT (NAT Loopback) — доступ к локальному серверу по внешнему IP изнутри сети

Сценарий: у тебя есть DNAT public:80 → internal:80. Внутренний клиент 192.168.1.50 пытается открыть http://203.0.113.10 (публичный IP). Без специальных правил ответ может идти напрямую сервер→клиент и не пройти DNAT/conntrack. Решение — «hairpin» (SNAT internal→MASQUERADE when dst=internal).

MikroTik:

# 1) обычный dstnat правило (снаружи)

add chain=dstnat dst-address=203.0.113.10 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.1.10 

# 2) hairpin: когда источник из LAN обращается к public и попадает на внутренний сервер — меняем исходник на router LAN IP

add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.10 action=masquerade

 

Linux (пример):

# DNAT уже есть

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.10 -j MASQUERADE

 

Важно: при hairpin также могут понадобиться корректные firewall правила разрешения трафика внутри LAN.


Как NAT работает «под капотом» (conntrack)

NAT обычно строится поверх механизма connection tracking (conntrack):

  • При создании исходящего соединения для него формируется запись в таблице conntrack: (src=192.168.1.5:34567 -> dst=8.8.8.8:53), и сопоставление внешнего адреса/порта (203.0.113.10:54321).

  • Ответные пакеты сопоставляются по записи conntrack и перенаправляются/де-натируются обратно.

  • Conntrack имеет таймауты для разных протоколов (TCP ESTABLISHED, UDP state, etc.). Удаление записи завершает трансляцию.

Отсюда:

  • NAT «stateful»: только для соединений, которые прошли и создали запись, сервер отправит ответы обратно.

  • Если внешний NAT (CG-NAT) на стороне провайдера — ждать проблем с входящими соединениями.


NAT и протоколы с встраиваемыми IP (FTP, SIP, RTSP и др.)

Некоторые протоколы передают в теле управления IP/порт (например, FTP PASV, SIP SDP). Простая NAT-трансляция не модифицирует тело, поэтому соединение не установится. Решения:

  • Включить ALG/helper (connection helpers) — анализатор протокола, который смотрит контрольные пакеты и подправляет IP/порты. На Linux это модули nf_conntrack_ftp, nf_conntrack_sip; в RouterOS есть аналоги/настройки (в разных версиях — по-разному).

  • Использовать application proxy (например, FTP proxy).

  • Перевести сервисы на пассивные/безвстраиваемые режимы, или обходиться через VPN.

Важно: ALGs иногда мешают (некорректно работают), поэтому лучше использовать modern протоколы и/или VPN/SSL-терминацию для безопасных сервисов.


NAT и VPN

  • Если хосты за NAT хотят быть доступны извне, проще пробросить порты/использовать reverse proxy на границе.

  • Если у тебя филиалы связаны через VPN (WireGuard/OpenVPN/IPSec), то в большинстве случаев на VPN-сервере делают SNAT/masquerade для трафика, который должен выйти в интернет через VPN-сервер.

  • Если ты используешь WireGuard с туннельными IP: часто проще в AllowedIPs указывать туннельные адреса (см. ваш предыдущий диалог), и тогда сервер видит только туннельную сторону — нет зависимости от локального DHCP IP.


Проблемы провайдерского NAT: CG-NAT / NAT444

  • При CG-NAT у абонента нет публичного IPv4 (он получает частный адрес от провайдера). Тогда проброс портов невозможен, а некоторые VPN/peer-to-peer сервисы не работают.

  • Решения: запросить у провайдера публичный IP (обычно платно), или использовать IPv6, либо организовать исходящий VPN на VPS с публичным IP и пробрасывать сервисы через него.


Практические примеры (типичные кейсы)

1) Клиенты выходят в интернет через роутер (маскарадинг)

MikroTik

/ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade

 

2) Публикация веб-сервера (HTTP) на внутреннем хосте

MikroTik

/ip firewall nat

add chain=dstnat dst-address=203.0.113.10 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.1.10

 

И обычно добавить в firewall filter правила, разрешающие этот входящий трафик.

3) Несколько внутренних серверов на одном публичном IP

  • Вариант A: разные порты внешне:

    • public:80 → internal1:80

    • public:8081 → internal2:80

  • Вариант B (когда нужен порт 80 для всех): reverse proxy (Nginx/HAProxy) на внутренней машине — RouterOS DNAT направляет 80/443 на proxy, proxy по Host/SNI распределяет запросы на внутренние серверы.

4) 1:1 NAT (полный статический NAT)

MikroTik

/ip firewall nat

add chain=dstnat dst-address=203.0.113.10 action=dst-nat to-addresses=192.168.1.100

add chain=srcnat src-address=192.168.1.100 action=src-nat to-addresses=203.0.113.10

 


Конфликты и «тонкие места»

a) Дублирующие правила — порядок важен

NAT правила идут по порядку; первое подходящее правило применяется. На RouterOS порядок имеет значение — проверяй /ip firewall nat print.

b) Firewall + NAT

DNAT обычно должен быть ДО фильтрации (PREROUTING/INPUT), но в RouterOS вы пишете NAT отдельно и затем должны быть соответствующие allow/accept правила в filter chain (input/forward) — иначе пакеты могут быть отброшены.

c) MTU / MSS issues

При двойной инкапсуляции/VPN или PPPoE может понадобиться уменьшить MSS (TCP MSS clamp) или MTU. Иначе TCP соединения могут «зависать».

d) Conntrack table overflow

Активные NAT-сессии хранятся в conntrack; на busy systems/under DDoS таблица может заполниться → новые соединения не обрабатываются. Нужны лимиты, rate-limit, защита от DDoS.


Отладка и полезные команды

MikroTik

  • Показать правила NAT:

/ip firewall nat print

 

  • Смотреть активные NAT/connection entries:

/ip firewall connection print

# фильтровать, например:

/ip firewall connection print where src-address~”192.168.1.”

 

  • Просмотр логов (если ведётся логирование NAT/firewall).

Linux

  • Показать NAT таблицу iptables:

iptables -t nat -L -n -v

# или nftables

nft list table nat

 

  • Просмотр conntrack:

sudo conntrack -L # вывести таблицу conntrack (needs conntrack-tools)

sudo ss -tn state established

 

  • Побыстрее проверить DNAT: tcpdump -i eth0 host 203.0.113.10 and tcp port 80


Лучшие практики / рекомендации

  1. Если есть возможность — используйте IPv6 вместо NAT. NAT ломает end-to-end модель и усложняет P2P.
  2. Для публичных веб-сайтов используйте reverse proxy: один public IP → прокси → несколько backend-серверов. Это проще и безопаснее, чем пытаться пробросить один и тот же порт на разные хосты.
  3. Masquerade для динамического WAN, SNAT для статического WAN. Masquerade автоматически подхватит внешний IP.
  4. Ограничивайте входящий трафик firewall-ом; не открывайте ненужные порты.
  5. Логи и мониторинг: следите за conntrack, количеством правил, utilization CPU (нат-операции могут быть затратны).
  6. Hairpin: если пользователи в LAN должны обращаться к public IP — настрой hairpin NAT.
  7. ALGs осторожно: FTP/SIP ALGs могут помочь, но иногда вызывают больше проблем — лучше VPN или современный протокол.
  8. Для VoIP / realtime — выделяйте порты/приоритеты (QoS) и учитывайте, как NAT влияет на SIP/SDP; лучше использовать SBC/Session Border Controller.

Примеры «реальной» конфигурации (MikroTik — сценарий)

Маскарадинг всех клиентов в интернет:

/ip firewall nat

add chain=srcnat out-interface=ether1 action=masquerade comment=”internet outgoing”

 

Публикация 3 внутренних серверов: web, ssh, custom:

/ip firewall nat

add chain=dstnat dst-address=203.0.113.10 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.1.10 to-ports=80 comment=web

add chain=dstnat dst-address=203.0.113.10 protocol=tcp dst-port=22 action=dst-nat to-addresses=192.168.1.11 to-ports=22 comment=ssh-server

add chain=dstnat dst-address=203.0.113.10 protocol=tcp dst-port=8443 action=dst-nat to-addresses=192.168.1.12 to-ports=443 comment=alt-https

 

Hairpin (если внутренние клиенты обращаются по public IP к web):

# DNAT выше + SNAT для internal -> internal hairpin

add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.10 action=masquerade comment=”hairpin for internal access to public”

 


  1. Когда NAT «ломает» приложения и как это решать
  • P2P, SIP, FTP — используйте proxy/ALG или VPN.

  • TLS/SNI — если пробрасываешь 443 на несколько серверов — используй reverse proxy (Nginx) либо разные публичные IP/портов.

  • Игры / консоли — часто используют UPnP/PCP для динамического проброса портов; можно включить, но помнить про безопасность.


  1. Итог (ключевые мысли)
  • NAT — незаменим для IPv4-мира: маскарадинг и DNAT решают практические задачи публикации сервисов и экономии IPv4.

  • Он stateful → опирается на conntrack; при диагностике смотрим таблицу conntrack.

  • Для сложных сценариев (несколько внутренних серверов на одном IP) лучше reverse proxy.

  • CG-NAT — реальная проблема; обход через публичный VPS/VPN или запрос у провайдера публичного IP.

  • IPv6 — аккуратная альтернатива, избавляющая от большинства проблем NAT.

Таблица маршрутизации — подробное практическое руководство

Таблица маршрутизации — подробное практическое руководство

Разберёмся досконально, что хранит таблица маршрутизации, как роутер выбирает маршрут, какие бывают типы записей, что означают колонки в выводе (Network / Mask / Gateway / Interface / Metric), и как это применять при диагностике. Будет много практики, примеров и команд (Linux/Windows/MikroTik).


1. Зачем нужна таблица маршрутизации

Таблица маршрутизации отвечает на вопрос: «куда отправить IP-пакет, если его целевой адрес X».
Каждая запись — это правило вида «для адресов сети A/B пиши в интерфейс I и отправляй на шлюз G с приоритетом M».

Когда пакет приходит на роутер, роутер:

  1. Смотрит таблицу маршрутов.
  2. Находит самый точный (longest-prefix / наиболее длинный префикс) маршрут, который покрывает адрес назначения.
  3. Если есть несколько одинаково точных — выбирает по метрике/административной дистанции/политике.
  4. Отправляет пакет на соответствующий интерфейс/следующий хоп.

2. Структура записи маршрута — основные поля и что они значат

Типичная строка таблицы маршрутизации (упрощённо):

Destination (Network/Prefix) | Netmask | Gateway (Next hop) | Interface | Metric (Distance)
  • Destination / Prefix — сеть или хост (10.127.0.0/16, 192.168.19.100/32).

  • Netmask — маска сети (альтернативный вид записи).

  • Gateway / Next hop — IP следующего шага, на который надо отправить пакет. Может быть пустым / On-link (означает: пакет отправляется прямо через интерфейс, без промежуточного шлюза).

  • Interface — физический или виртуальный интерфейс, через который пойдёт пакет.

  • Metric / Distance — числовой приоритет маршрута (меньше = лучше). На некоторых платформах есть два поля: distance (административная дистанция) и metric (метрика протокола).

Дополнительно в таблицах бывают флаги:

  • C / Connected — сеть привязана к интерфейсу (directly connected).

  • S / Static — статически добавленный маршрут.

  • D / Dynamic — получен от протокола маршрутизации.

  • On-link — означает: адрес следующего хопа расположен в этой же связности, или вообще шлюз не нужен.


3. Типы маршрутов — что и когда появляется

  1. Connected (подключённые)
      • Автоматически добавляются, когда интерфейсу присвоен IP в сети.
      • Самые «первичные» маршруты — роутер знает, что подсеть локальная.
  2. Host routes (/32)
      • Запись до конкретного хоста (в IPv4 — /32).
      • Может появляться как local (IP, назначенный интерфейсу), или как статический хост-маршрут.
      • Используется для точной доставки (например, маршрутизация к конкретному узлу или маршрут, добавленный динамической системой).
  3. Static
      • Добавлены вручную админом (ip route add ... / route add ...).
      • Полезны для фиксации путей или для резервных маршрутов.
  4. Dynamic (OSPF/BGP/RIP/…)
      • Маршруты, полученные от протоколов динамической маршрутизации.
      • Могут менять путь автоматически при изменениях топологии.
  5. Blackhole / Reject / Prohibit
      • Преднамеренные «правила отбрасывания» — полезно для защиты/черных дыр.
  6. Multicast и Broadcast записи
      • В таблице могут видеться строки для диапазона мульткаста (224.0.0.0/4) — это не «подписка», а правило доставки мульткаста через интерфейс.

4. Правило выбора маршрута (Lookup algorithm)

Когда роутер получает пакет к IP D:

  1. Longest Prefix Match — выбирается запись с наибольшим числом битов в префиксе, которая покрывает D.
    • Пример: если есть 10.127.0.0/16 и 10.127.127.11/32, для 10.127.127.11 будет выбран /32.
  2. Если несколько записей с одинаковым префиксом — смотрят:
      • Административную дистанцию (AD) — чем меньше, тем предпочтительнее (например, подключённые/connected обычно AD=0, статические AD=1, OSPF AD≈110 и т.д.).
      • Метрику (metric) — значение, зависящее от протокола (стоимость, задержка, и т.п.).
      • Если есть ECMP (Equal Cost Multi-Path) — пакеты могут балансироваться по нескольким next-hop.
  3. Recursive lookup — если next-hop указан как IP, роутер должен разрешить, как доставить до этого next-hop: он ищет маршрут до next-hop. Если маршрут до next-hop отсутствует — маршрут не реализуется.

5. Административная дистанция — что это такое (AD)

AD — это «доверие» к источнику маршрута. Разные протоколы/типы маршрутов имеют свои стандартные AD (примерно, в большинстве реализаций Cisco и похожих систем):

  • Connected (directly connected) — 0

  • Static (ручной) — 1

  • eBGP — 20

  • EIGRP internal — 90

  • OSPF — 110

  • RIP — 120

  • iBGP — 200

Эти числа — общепринятые значения, у разных ОС/вендоров они могут отличаться, но смысл тот же: роутер сначала смотрит AD, потом метрику.


6. On-link, gateway, host route — что это значит

  • On-link (или “On-link / On-link” как в Windows): маршрут говорит, что сеть доступна непосредственно через интерфейс, никакого промежуточного шлюза не требуется. Например 192.168.19.0/24 On-link 192.168.19.100 — интерфейс с адресом 192.168.19.100 подключён к этой сети.

  • Gateway / Next hop: если маршрут указывает Gateway = 192.168.19.1, то пакет сначала направляется в ARP для 192.168.19.1 (или к MAC), затем передаётся.

  • Host route (/32) — самый специфичный маршрут. Роутер отдаст приоритет ему. Windows и Linux часто создают локальные /32 для адресов интерфейсов (чтобы знать, что этот IP именно у него).


7. Примеры: как работает выбор маршрута (на практике)

Пример 1 — выбор по специфичности

Таблица:

  • 10.127.0.0/16 On-link via 10.127.127.11

  • 10.127.127.11/32 On-link via 10.127.127.11

Запрос к 10.127.127.11 → выбирается /32 (host route) потому что оно точнее, чем /16.

Пример 2 — recursive next-hop

Запись: 0.0.0.0/0 gateway=203.0.113.1 dev=ether1
Перед отправкой роутер проверит, что до 203.0.113.1 есть маршрут (обычно он — on-link в той же сети). Если нет — default route не действует.


8. Особые записи в таблице — почему они там и для чего

  • Broadcast и Multicast записи (224.0.0.0/4) — показывают интерфейс(ы), через которые роутер готов принимать/обрабатывать мульткаст; это не означает, что устройство «подписано» на все группы.

  • 127.0.0.0/8 (loopback) / ::1 — локальные маршруты для пакетов, адресованных самому устройству.

  • 255.255.255.255 /32 записи — иногда отображаются как broadcast или local records.

  • On-link / On-link host entries — Windows часто показывает On-link для адресов интерфейса и broadcast.


9. ECMP — мультипут (Equal Cost Multi-Path)

Если несколько маршрутов имеют одинаковую точность и одинаковую метрику, роутер может использовать ECMP — распределять трафик по нескольким next-hop (hash по 5-tuple). Это используется для балансировки и отказоустойчивости.


10. Управление маршрутами — команды и примеры

Linux

  • Показать таблицу:

ip route show
# или для подробностей
ip route show table main
  • Добавить маршрут:

sudo ip route add 192.0.2.0/24 via 10.0.0.1 dev eth0
  • Удалить:

sudo ip route del 192.0.2.0/24
  • Узнать, какой маршрут выберется:

ip route get 8.8.8.8

Windows

  • Показать:

route print
  • Добавить:

route add 10.0.0.0 mask 255.255.255.0 192.168.1.1 metric 1
  • Статический маршрут, сохраняемый:

route add ... -p

MikroTik (RouterOS)

  • Показать:

/ip route print
  • Добавить:

/ip route add dst-address=192.0.2.0/24 gateway=10.127.127.1 distance=1 comment="to office"
  • Удалить:

/ip route remove numbers=5

11. Диагностика проблем с маршрутами — чеклист

  1. ip route get / route print / /ip route print — посмотреть, какой маршрут выбирается.
  2. Проверь connected routes — есть ли интерфейс с нужной подсетью (connected)?
  3. Проверь ARP — если next-hop on-link, проверь ARP/MAC: arp -a / /ip arp print.
  4. Проверь, разрешается ли next-hop (recursive lookup)ip route get <next-hop>; если next-hop недостижим — нет передачи.
  5. Traceroute — увидеть промежуточные хопы и где обрывается путь.
  6. Проверь метрики и AD — иногда статический маршрут «перекрывается» динамическим с лучшей AD.
  7. Проверь firewall / policy routing — может быть, трафик перехватывается SCTP / mangle / src-nat и уходит по другому пути.
  8. Проверь, нет ли дублирующих статических записей — удаляй старые статические маршруты после включения динамики (OSPF).

12. Частые вопросы и «ловушки»

  • «Зачем в таблице есть /32 к самому себе?» — это локальная запись для адреса интерфейса; ОС использует её, чтобы знать, что этот адрес «наш».

  • «Если удалить маршрут к самому себе, что будет?» — обычно ОС всё ещё держит локальные интерфейсы и может повести себя непредсказуемо: сервисы перестанут правильно принимать пакеты, маршруты могут быть реконструированы автоматически. В целом удалять connected/host записи вручную — плохая идея.

  • «Почему OSPF маршрут не заменяет статический?» — потому что статический с меньшей AD/Distance предпочтительнее; можно изменить distance или удалить статический маршрут.

  • «On-link vs Gateway: если указаnо On-link, куда ответ?» — роутер отправляет фрейм прямо через интерфейс; если нужен next-hop (другой роутер), он должен быть в той же L2 сети (тогда On-link with ARP resolution).


13. Практический пример (разбор твоей таблицы)

В твоём фрагменте таблицы Windows было видно:

0.0.0.0 0.0.0.0 192.168.19.1 192.168.19.100 35 # default
10.66.66.20 255.255.255.255 On-link 10.127.127.11 5 # host route
10.127.0.0 255.255.0.0 On-link 10.127.127.11 5
10.127.127.11 255.255.255.255 On-link 10.127.127.11 261
224.0.0.0 240.0.0.0 On-link 192.168.19.100 291 # multicast via interface
...
  • Для назначения 10.66.66.20 у тебя есть /32. Значит все пакеты к этому конкретному IP пойдут локально через интерфейс 10.127.127.11 (чат нулевой — on-link).

  • 10.127.0.0/16 покрывает весь туннельный диапазон — если нет более точного /32, он обеспечит маршрут.

  • 224.0.0.0/4 — multicast, интерфейс показывает, что этот интерфейс способен получать multicast.

Если удалить /32 к 10.127.127.11 (host route), то пакеты к этому хосту будут матчиться 10.127.0.0/16 — это нормально (менее специфичный маршрут). Если же удалишь host route к самому интерфейсу (локальной записи), ОС может перестать считать этот адрес «местным».


14. Рекомендации и лучшие практики

  • Всегда используй longest-prefix сознательно: для специфичных целей добавляй host-маршруты (/32).

  • После включения динамики (OSPF/BGP) — убирай дублирующие статические маршруты, если они не нужны.

  • Для WAN-выхода ставь default route (0.0.0.0/0) с правильной дистанцией.

  • Используй route summarization (агрегацию) чтобы уменьшить размер таблиц (особенно в BGP/OSPF).

  • Контролируй доступ к добавлению маршрутов (чтобы никто не вбил злонамеренный статический маршрут).


15. Короткая шпаргалка команд (повторение)

  • Linux: ip route show, ip route add, ip route get <addr>

  • Windows: route print, route add ..., route delete ...

  • MikroTik: /ip route print, /ip route add dst-address=... gateway=... distance=...