Вопрос или проблема
у меня есть один сервер, на котором настроены две виртуальные машины (VM) (ubuntu) как ubuntu-edge (с модулем frr для маршрутизации – со стороны WAN) и ubuntu-fw (со стороны LAN), между этими машинами есть виртуальный внутренний интерфейс. весь трафик с LAN направляется на fw, а с ubuntu-fw с маршрутом по умолчанию пересылается на ubuntu-edge.
когда кто-то пытается подключиться со стороны WAN через ubuntu-edge на сторону LAN (например, icmp или ssh), не может подключиться,
результат tcpdump здесь:
ubuntu@ubuntu-fw:~$ sudo tcpdump -n -i lan host 18.x.x.201
tcpdump: подробно вывода подавлено, используйте -v[v]... для полного декодирования протокола
слушаем на lan, тип-ссылки EN10MB (Ethernet), длина снимка 262144 байта
13:22:43.742256 IP 172.25.4.96 > 18.x.x.201: ICMP echo request, id 60418, seq 4404, длина 40
13:22:43.743299 ARP, Запрос кто имеет 172.25.4.96 сообщает 18.x.x.201, длина 46
13:22:48.861752 ARP, Запрос кто имеет 18.x.x.201 сообщает 18.x.x.1, длина 28
13:22:48.863665 ARP, Ответ 18.x.x.201 на 74:86:0b:19:fe:c1, длина 46
13:25:42.226903 IP 172.25.4.96 > 18.x.x.201: ICMP echo request, id 60418, seq 4458, длина 40
13:25:42.231842 ARP, Запрос кто имеет 172.25.4.96 сообщает 18.x.x.201, длина 46
13:25:47.236840 IP 172.25.4.96 > 18.x.x.201: ICMP echo request, id 60418, seq 4459, длина 40
13:25:47.237899 ARP, Запрос кто имеет 172.25.4.96 сообщает 18.x.x.201, длина 46
13:25:47.549749 ARP, Запрос кто имеет 18.x.x.201 сообщает 18.x.x.1, длина 28
и вот локальная таблица маршрутизации:
ubuntu@ubuntu-fw:~$ ip route show
default via 172.24.8.9 dev internal proto static
18.x.x.0/24 dev lan proto kernel scope link src 18.x.x.1
172.24.8.8/30 dev internal proto kernel scope link src 172.24.8.10
ubuntu-edge имеет маршрут 172.25.4.96 через динамический маршрут BGP.
в чем проблема, почему пакеты не пересылаются?
кстати, пересылка пакетов включена на обеих машинах.
Спасибо
Ответ или решение
Для решения описанной проблемы, связанной с маршрутизацией и трансляцией ARP-запросов, необходимо детально разобраться в конфигурации сети и анализе трафика. Прежде чем начать, важно уточнить несколько аспектов.
Теория
ARP (Address Resolution Protocol) используется для сопоставления IP-адресов с их соответствующими MAC-адресами. Обычно, когда устройство пытается отправить данные на другой IP в той же сети, оно отправляет ARP-запрос типа "who-has" для разрешения IP-адреса к MAC-адресу. Например, когда Ubuntu-FW пытается отправить данные через Ubuntu-Edge на IP 172.25.4.96, должна быть проведена правильная маршрутизация, чтобы пакеты достигли цели. Если ответ ARP не получен, либо пакет блокируется перед попаданием на уровень IP, либо ARP-ответ не доходит до отправителя.
То, что вы наблюдаете, — это неудача в передаче пакетов. Основные возможные причины могут включать неправильную маршрутизацию, проблемы с фаерволлом, конфигурацию интерфейсов или ошибки маршрутизации.
Пример
В вашем случае настроены две виртуальные машины: Ubuntu-Edge и Ubuntu-FW. Ubuntu-Edge управляет маршрутизацией через протокол FRR (возможно, BGP), а Ubuntu-FW обрабатывает локальные пакеты. В случае, когда попытка связаться с внутренней сетью через WAN не удаётся, важно выполнить трейсинг и диагностику:
-
Проверка таблицы маршрутизации:
- Из приведенного вывода ip route show видно, что маршрутизация на Ubuntu-FW направляет пакеты по адресу 172.24.8.9 через интерфейс internal. Однако, неясно, имеет ли Ubuntu-Edge корректный маршрут для взаимодействия с внутренней сетью.
-
Анализ ARP-таблицы:
- Пакеты отправляются как ICMP-запросы на 18.x.x.201, но с ошибками в ARP-запросах, что свидетельствует о проблеме в разрешении ARP. Возможно, механизмы ARP на одном из сегментов сети неработоспособны или настроены неправильно.
-
Проверка конфигурации IP-адресов и NAT:
- Важно убедиться, что IP-конфигурации и NAT на обоих устройствах настроены правильно. Отсутствие корректно настроенного NAT или неправильно заданные IP-адреса могут приводить к ситуации, при которой пакеты не могут быть доставлены.
Применение
Для решения проблемы выполните следующие шаги:
-
Проверка настроек маршрутизации:
- Убедитесь, что Ubuntu-Edge имеет корректный маршрут к сети, которой принадлежит IP-адрес 18.x.x.201. Необходимо, чтобы динамический протокол маршрутизации (BGP в вашем случае) корректно публиковал и распознавал все изменения маршрутов, включая сетевой адрес 172.25.4.96.
-
Диагностика ARP:
- Проверьте ARP-таблицы на обеих виртуальных машинах, используя команду
arp -a
, чтобы убедиться, что записи соответствуют ожидаемым адресам. Это поможет выявить несоответствия и ошибки в разрешении ARP.
- Проверьте ARP-таблицы на обеих виртуальных машинах, используя команду
-
Проверка межсетевых экранов и фильтров:
- Убедитесь, что межсетевой экран не блокирует нужный трафик между хостами. Используйте
iptables -L
для отображения и анализа правил фильтрации сетевого трафика.
- Убедитесь, что межсетевой экран не блокирует нужный трафик между хостами. Используйте
-
Логирование и мониторинг:
- Включите логирование на обоих серверах, чтобы получать более подробную информацию о трафике. Это может помочь обнаружить, где именно теряются пакеты.
-
Тестирование маршрутизации:
- Попробуйте протестировать настройки маршрутизации, используя утилиты
traceroute
илиping
с опцией максимального TTL, чтобы определить, на каком этапе происходит сбой маршрутизации.
- Попробуйте протестировать настройки маршрутизации, используя утилиты
-
Консультация документации:
- Изучите официальную документацию по FRR и Ubuntu Networking, чтобы убедиться, что все конфигурации синхронизированы с рекомендованными практиками.
После выполнения этих шагов должна быть ясна причина проблемы с маршрутизацией или ARP-запросами, что позволит внести необходимые корректировки и обеспечить корректную маршрутизацию трафика между вашими виртуальными машинами.