Вопрос или проблема
У меня есть два приложения App_1 и App_2 на моем компьютере 1 (Ubuntu 22.04) и только один TUN-интерфейс.
Каждое приложение работает по протоколу IPV6 и способно пинговать другой компьютер (App_3) в одной и той же IPv6 сети:
Проблема: Когда я пытаюсь пинговать два приложения (App_1 и App_2) друг друга через единственный TUN-интерфейс, я получаю сообщение icmp_redirect.
ping App_1 <-> App_3 : ок
ping App_2 <-> App_3 : ок
ping App_1 <-> App_2 : Не ок ! (получаю icmp_redirect)
на каждом компьютере:
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.proxy_ndp=1
Маршруты к каждому компьютеру/TUN выглядят нормально.
Какие-либо идеи, как заставить icmpv6 пакеты проходить через TUN-интерфейс и избежать сообщений о редиректах?
Ответ или решение
Проблема: Проблемы с пингом двух приложений через единственный TUN интерфейс
Согласно вашему описанию, вы столкнулись с проблемой при попытке пинга между двумя приложениями (App_1 и App_2) на одной машине с установленной операционной системой Ubuntu 22.04, использующими протокол IPv6. При попытке отправить ICMP Echo Request между ними вы получаете сообщение icmp_redirect
. Ниже приведены возможные причины данной проблемы и рекомендации по ее решению.
1. Понимание ICMP Redirect
Сообщение ICMP Redirect отправляется маршрутизатором, когда он может предложить более оптимальный маршрут к определенному адресу. В вашем случае, это может означать, что система считает, что для связи между App_1 и App_2 используется не оптимальный маршрут, возможно, из-за неправильной конфигурации сети.
2. Проверка конфигурации TUN интерфейса
Убедитесь, что TUN интерфейс настроен правильно. Для этого выполните следующую проверку:
- IP-адресация: Убедитесь, что оба приложения (App_1 и App_2) имеют разные уникальные IPv6-адреса, ассоциированные с TUN интерфейсом.
- Настройки интерфейса: Откройте терминал и используйте команду
ip -6 addr show
, чтобы проверить, что адреса назначены корректно.
3. Установленные правила маршрутизации
Проверьте таблицу маршрутизации с помощью команды ip -6 route show
. Убедитесь, что маршруты, касающиеся TUN интерфейса, настроены верно и не дублируются. Обратите внимание на следующие моменты:
- Выбор маршрута: Убедитесь, что маршруты для App_1 и App_2 через TUN интерфейс независимы и корректны.
- Настройки маршрутизации: Если для маршрутизации пакетов используются специфические правила, возможно, потребуется настроить дополнительное правило для TUN интерфейса.
4. Параметры конфигурации системы
Вы указали, что у вас установлены следующие параметры:
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.proxy_ndp=1
Эти параметры могут влиять на поведение IPv6 в вашей сети, но мы можем рассмотреть возможность изменения некоторых дополнительных настроек для устранения проблемы с ICMP Redirect:
- Снижение времени ожидания: Установите значения для
net.ipv6.conf.default.accept_redirects
иnet.ipv6.conf.all.accept_redirects
в 0:echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv6/conf/default/accept_redirects
Это предотвратит любые ICMP Redirect-сообщения.
5. Тестирование и отладка
- Используйте утилиты, такие как
tcpdump
, чтобы отслеживать трафик ICMP и проверить, какие сообщения фактически отправляются между App_1 и App_2. - Проверьте, какие именно пакеты получают приложения, и проанализируйте их на предмет проблем с маршрутизацией.
Заключение
Устранение проблемы с пингом между двумя приложениями через единственный TUN интерфейс может потребовать комплексного анализа конфигурации сети и маршрутизации. Выполнив вышеуказанные шаги, вы сможете локализовать и, возможно, устранить проблему, связанную с ICMP Redirect. Если проблема останется нерешенной, рекомендую обсудить ваш случай на специализированных форумах или обратиться за помощью к сетевым администраторам с опытом работы с IPv6 и TUN интерфейсами.