В сети с несколькими VLAN и маршрутизаторами возникла проблема: узлы в VLAN A не видят узлы в VLAN B через маршрутизатор R, хотя таблицы маршрутизации у R выглядят корректно. Какие диагностические шаги и инструменты вы примените (анализ ARP, трассировка, проверка NAT/ACL, MTU), какие распространённые ошибки конфигурации могли привести к проблеме и как их исправить
На узлах: проверить IP, маску, шлюз: Linux: (\text{ip addr}), (\text{ip route}); Windows: (\text{ipconfig /all}). Убедиться, что шлюз задан корректно и подсеть не перекрывается.Проверить, что подсети VLAN A и VLAN B действительно различны и маршрутизируются (нет одинаковых сетей на разных интерфейсах).
2) ARP и L2-уровень
На каждом узле и на R: посмотреть ARP/neighbor: Linux: (\text{ip neigh}) или (\text{arp -n}); Cisco: (\text{show ip arp}).На коммутаторе: проверить MAC-таблицу: (\text{show mac address-table}) (или (\text{show bridge address-table})). Убедиться, что MAC-адреса узлов «видятся» на ожидаемых портах.Инструмент: arping/arping для проверки ответа ARP: (\text{arping -I eth0 })(\text{192.168.1.10}).
3) Проверка VLAN/trunk и SVI
Проверить, что порты в нужных VLAN или trunk разрешает эти VLAN: (\text{show vlan}), (\text{show interfaces trunk}) (Cisco). Убедиться в совпадении VLAN ID по всем устройствам.Если используется router-on-a-stick — проверить subinterfaces и encapsulation dot1q: IP присутствует и интерфейс UP.Проверить STP/port-security, отсутствие блокировок портов.
4) Трассировка маршрута и пакетный захват
Traceroute (Linux: (\text{traceroute}), Windows: (\text{tracert})) от хоста A к хосту B и от R к хостам, чтобы увидеть, где «обрывается» путь.tcpdump/tshark/WinDump на R и на граничных интерфейсах: пример: (\text{tcpdump -i eth0 host })(\text{192.168.1.10}) — посмотреть, доходят ли пакеты до R и уходят ли ответы.Проверить, приходят ли ARP-запросы и ответы в каптуре.
5) Проверка маршрутизации на R и соседях
Просмотреть таблицу маршрутизации: (\text{show ip route}) / (\text{ip route}). Убедиться, что есть маршруты к подсетям VLAN A и B и next-hop правильный.Проверить многопутевой маршрут/асимметрию: traceroute из обоих направлений и проверка маршрутов на всех промежуточных устройствах.
6) Проверка NAT, ACL и firewall
Проверить, что между VLAN не выполняется ненужный NAT: Cisco: (\text{show ip nat translations}), Linux: (\text{iptables -t nat -L -n}).Проверить ACL/файрволы на R и на межсетевых экранах: (\text{show access-lists}), (\text{iptables -L -n}). Часто ACL имеют implicit deny и блокируют меж-VLAN трафик.Проверить зоны (zone-based firewall) и policy routing/route-maps, VRF — что трафик не «изолирован» логически.
7) Проверка IP forwarding и rp_filter
На Linux/маршрутизаторах убедиться, что ip_forward включён: (\text{sysctl net.ipv4.ip_forward}) должно быть (\text{1}).Проверить Reverse Path Filtering: (\text{sysctl net.ipv4.conf.all.rp_filter}) — строгий rp_filter иногда режет асимметричный трафик.
8) MTU и проблемы с фрагментацией
Проверить MTU на всех интерфейсах (коммутаторы, транки, туннели). Сравнить MTU между источником и получателем.Проверить PMTUD: послать ping с DF-битом и увеличивающимся размером: Linux: (\text{ping -M do -s 1472 })(\text{192.168.1.20}) (подставить IP). Windows: (\text{ping -f -l 1472 })(\text{192.168.1.20}).Если большие пакеты теряются, разрешить ICMP fragmentation-needed или уменьшить MSS на TCP (например, на граничном маршрутизаторе).
9) Диагностика асимметричной маршрутизации
Если ответ идёт по другому маршруту, возможна блокировка на обратном пути; проверить таблицы маршрутизации на всех промежуточных устройствах.Для теста: выполнить capture на предполагаемом обратном маршруте или временно добавить маршрут, принуждающий симметричный путь.
10) Логирование и отладка
Включить логирование или короткие debug (внимательно на проде): Cisco: (\text{debug ip packet}) (с фильтром); Linux: смотреть (\text{/var/log/syslog}), firewall-логи.Просмотреть счётчики интерфейсов: ошибки, CRC, drops: (\text{show interfaces}) / (\text{ifconfig/ethtool}).
Распространённые ошибки конфигурации и способы их устранения
Неправильный шлюз у хоста: хост считает, что адрес в другой подсети — но шлюз задан неверно. Исправление: настроить корректный default gateway.VLAN mismatch / trunk misconfig: одна сторона trunk’а не допускает VLAN или native VLAN не совпадает. Исправление: согласовать 802.1Q конфигурацию, разрешить VLAN.SVI или subinterface Down / нет IP на интерфейсе маршрутизатора: поднять интерфейс, задать IP.ACL/Firewall блокирует меж-VLAN трафик: проверить и скорректировать правила (вставить allow между нужными подсетями).Ненужный NAT между внутренними VLAN (SNAT/DNAT): убрать NAT или исключить внутренние сети из NAT-пулов.Overlapping/incorrect masks: из-за неверной маски пакеты остаются «локальными» и не уходят на маршрутизатор. Исправление: исправить маску/сеть.Proxy ARP неправильно использован/отключён: при необходимости включить/выключить proxy ARP или назначить корректные IP.IP forwarding выключен на маршрутизаторе/host-router: включить (\text{net.ipv4.ip_forward=1}).Reverse-path-filtering (rp_filter) режет легитимные пакеты при асимметрии: ослабить rp_filter ((\text{0}) или (\text{2}) в зависимости от ОС).MTU/DF/PMTUD: большие TCP-пакеты проходят не полностью — small pings OK, TCP падает. Исправление: разрешить ICMP fragmentation-needed в ACL/firewall, уменьшить MSS или MTU.Ассиметричный маршрут / VRF / отсутствует route-leak: сконфигурировать правильные маршруты или route-target/route-map для VRF, добавить static route или включить routing protocol между доменами.Port-security / MAC-листы блокируют новые MAC: проверить и пересбросить port-security при необходимости.Spanning-tree блокирует порт: проверить STP состояние и исправить root/port-priority.
Короткая диагностическая последовательность (что запустить сначала) 1) С хоста A: (\text{ping })(\text{IP_B}) и (\text{arp -n}).
2) На коммутаторе порта A: (\text{show mac address-table}), (\text{show interfaces status}).
3) На R: (\text{show ip route}), (\text{show ip arp}), (\text{show access-lists}), (\text{show ip nat translations}).
4) Запустить tcpdump на R: (\text{tcpdump -i host })(\text{IP_A}) (\text{and host })(\text{IP_B}).
5) Traceroute в оба конца и тест MTU ((\text{ping -M do -s })(\text{1472})).
Если дадите конкретные выводы команд (IP-адреса, конфигурации интерфейсов, выводы show), дам целевой план исправления.
Краткий план диагностики (пошагово) и инструменты
1) Быстрая проверка адресации и шлюзов
На узлах: проверить IP, маску, шлюз: Linux: (\text{ip addr}), (\text{ip route}); Windows: (\text{ipconfig /all}). Убедиться, что шлюз задан корректно и подсеть не перекрывается.Проверить, что подсети VLAN A и VLAN B действительно различны и маршрутизируются (нет одинаковых сетей на разных интерфейсах).2) ARP и L2-уровень
На каждом узле и на R: посмотреть ARP/neighbor: Linux: (\text{ip neigh}) или (\text{arp -n}); Cisco: (\text{show ip arp}).На коммутаторе: проверить MAC-таблицу: (\text{show mac address-table}) (или (\text{show bridge address-table})). Убедиться, что MAC-адреса узлов «видятся» на ожидаемых портах.Инструмент: arping/arping для проверки ответа ARP: (\text{arping -I eth0 })(\text{192.168.1.10}).3) Проверка VLAN/trunk и SVI
Проверить, что порты в нужных VLAN или trunk разрешает эти VLAN: (\text{show vlan}), (\text{show interfaces trunk}) (Cisco). Убедиться в совпадении VLAN ID по всем устройствам.Если используется router-on-a-stick — проверить subinterfaces и encapsulation dot1q: IP присутствует и интерфейс UP.Проверить STP/port-security, отсутствие блокировок портов.4) Трассировка маршрута и пакетный захват
Traceroute (Linux: (\text{traceroute}), Windows: (\text{tracert})) от хоста A к хосту B и от R к хостам, чтобы увидеть, где «обрывается» путь.tcpdump/tshark/WinDump на R и на граничных интерфейсах: пример: (\text{tcpdump -i eth0 host })(\text{192.168.1.10}) — посмотреть, доходят ли пакеты до R и уходят ли ответы.Проверить, приходят ли ARP-запросы и ответы в каптуре.5) Проверка маршрутизации на R и соседях
Просмотреть таблицу маршрутизации: (\text{show ip route}) / (\text{ip route}). Убедиться, что есть маршруты к подсетям VLAN A и B и next-hop правильный.Проверить многопутевой маршрут/асимметрию: traceroute из обоих направлений и проверка маршрутов на всех промежуточных устройствах.6) Проверка NAT, ACL и firewall
Проверить, что между VLAN не выполняется ненужный NAT: Cisco: (\text{show ip nat translations}), Linux: (\text{iptables -t nat -L -n}).Проверить ACL/файрволы на R и на межсетевых экранах: (\text{show access-lists}), (\text{iptables -L -n}). Часто ACL имеют implicit deny и блокируют меж-VLAN трафик.Проверить зоны (zone-based firewall) и policy routing/route-maps, VRF — что трафик не «изолирован» логически.7) Проверка IP forwarding и rp_filter
На Linux/маршрутизаторах убедиться, что ip_forward включён: (\text{sysctl net.ipv4.ip_forward}) должно быть (\text{1}).Проверить Reverse Path Filtering: (\text{sysctl net.ipv4.conf.all.rp_filter}) — строгий rp_filter иногда режет асимметричный трафик.8) MTU и проблемы с фрагментацией
Проверить MTU на всех интерфейсах (коммутаторы, транки, туннели). Сравнить MTU между источником и получателем.Проверить PMTUD: послать ping с DF-битом и увеличивающимся размером: Linux: (\text{ping -M do -s 1472 })(\text{192.168.1.20}) (подставить IP). Windows: (\text{ping -f -l 1472 })(\text{192.168.1.20}).Если большие пакеты теряются, разрешить ICMP fragmentation-needed или уменьшить MSS на TCP (например, на граничном маршрутизаторе).9) Диагностика асимметричной маршрутизации
Если ответ идёт по другому маршруту, возможна блокировка на обратном пути; проверить таблицы маршрутизации на всех промежуточных устройствах.Для теста: выполнить capture на предполагаемом обратном маршруте или временно добавить маршрут, принуждающий симметричный путь.10) Логирование и отладка
Включить логирование или короткие debug (внимательно на проде): Cisco: (\text{debug ip packet}) (с фильтром); Linux: смотреть (\text{/var/log/syslog}), firewall-логи.Просмотреть счётчики интерфейсов: ошибки, CRC, drops: (\text{show interfaces}) / (\text{ifconfig/ethtool}).Распространённые ошибки конфигурации и способы их устранения
Неправильный шлюз у хоста: хост считает, что адрес в другой подсети — но шлюз задан неверно. Исправление: настроить корректный default gateway.VLAN mismatch / trunk misconfig: одна сторона trunk’а не допускает VLAN или native VLAN не совпадает. Исправление: согласовать 802.1Q конфигурацию, разрешить VLAN.SVI или subinterface Down / нет IP на интерфейсе маршрутизатора: поднять интерфейс, задать IP.ACL/Firewall блокирует меж-VLAN трафик: проверить и скорректировать правила (вставить allow между нужными подсетями).Ненужный NAT между внутренними VLAN (SNAT/DNAT): убрать NAT или исключить внутренние сети из NAT-пулов.Overlapping/incorrect masks: из-за неверной маски пакеты остаются «локальными» и не уходят на маршрутизатор. Исправление: исправить маску/сеть.Proxy ARP неправильно использован/отключён: при необходимости включить/выключить proxy ARP или назначить корректные IP.IP forwarding выключен на маршрутизаторе/host-router: включить (\text{net.ipv4.ip_forward=1}).Reverse-path-filtering (rp_filter) режет легитимные пакеты при асимметрии: ослабить rp_filter ((\text{0}) или (\text{2}) в зависимости от ОС).MTU/DF/PMTUD: большие TCP-пакеты проходят не полностью — small pings OK, TCP падает. Исправление: разрешить ICMP fragmentation-needed в ACL/firewall, уменьшить MSS или MTU.Ассиметричный маршрут / VRF / отсутствует route-leak: сконфигурировать правильные маршруты или route-target/route-map для VRF, добавить static route или включить routing protocol между доменами.Port-security / MAC-листы блокируют новые MAC: проверить и пересбросить port-security при необходимости.Spanning-tree блокирует порт: проверить STP состояние и исправить root/port-priority.Короткая диагностическая последовательность (что запустить сначала)
1) С хоста A: (\text{ping })(\text{IP_B}) и (\text{arp -n}).
2) На коммутаторе порта A: (\text{show mac address-table}), (\text{show interfaces status}).
3) На R: (\text{show ip route}), (\text{show ip arp}), (\text{show access-lists}), (\text{show ip nat translations}).
4) Запустить tcpdump на R: (\text{tcpdump -i host })(\text{IP_A}) (\text{and host })(\text{IP_B}).
5) Traceroute в оба конца и тест MTU ((\text{ping -M do -s })(\text{1472})).
Если дадите конкретные выводы команд (IP-адреса, конфигурации интерфейсов, выводы show), дам целевой план исправления.