UDP sendto не работает при использовании определенных таблиц маршрутизации
У меня есть система с несколькими интерфейсами. Я изолировал все эти интерфейсы друг от друга, используя несколько sysctl
опций, таблицы и правила маршрутизации.
Каждый интерфейс имеет свою собственную таблицу маршрутизации, определяющую маршрут по умолчанию.
Каждая таблица маршрутизации имеет набор из 4 правил, которые определяют, какие пакеты должны идти в какую таблицу.
Для упрощения, скажем, у меня есть eth0 (192.168.1.1)
и eth1 (192.168.1.2)
.
из
192.168.1.1
таблицыeth0
к
192.168.1.1
столуeth0
iif eth0
table eth0
oif eth0
table eth0
Ибо eth2
это то же самое.
Эти sysctl
опции:
net.ipv4.conf.all.arp_filter = 1 net.ipv4.conf.all.arp_ignore = 2 net.ipv4.conf.all.arp_announce = 1 net.ipv4.conf.all.rp_filter = 1
Это отлично работает для 99% моих предполагаемых вариантов использования, но один не помогает. Если пакет генерируется из сокета, который не связан, как, например, ответ на UDP-клиент с помощью «sendto», вызов завершается с «Network Unreachable». Если определенный IP-адрес привязан до вызова sendto, вызов завершается, как и ожидалось.
Если не считать настройки универсального маршрута по умолчанию для подобных ситуаций, можно ли что-нибудь сделать с использованием политики маршрутизации (например, iptables, ip rule) для решения этой проблемы?
Спасибо
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
3
Каковы различия между оконными менеджерами Linux?
-
5
Поделитесь XP сетевым подключением без перезагрузки?
-
5
Как мне сказать Windows использовать 802.11 вместо 3G?