LINUX.ORG.RU
ФорумAdmin

Странности с роутингом и UDP пакетами


0

0

Короче, есть сервер с 2-мя сетевыми картами.
К нему подключено 2 канала в инет, от разных провайдеров: (eth0 -> первый пров. ppp0(eth1) -> второй пров.
На сервере запущен bind, apache и teamspeak2 сервер. Чтобы использовать оба канала, в днс прописал две одинаковые записи A, с разными ип-адресами. Но проблема вот в чем: шлюз по умолчанию прописан от прова, который поключен к eth0.
И когда приходит пакет на ppp0, то мой сервер (судя по tcpdump) пытается отправить ответ с eth0. Естественно, провайдер,
который подключен к eth0, этот пакет фильтрует, так как исходящий адрес у пакета от ppp0.
Немного потрахавшись с роутингом, проблему удалочь частично решить:
Я создал допольнительную таблицу роутинга, со шлюзом по умолчанию от прова ppp0,
ip route add default via <ppp0 gateway> table ppp0
А также прописал в правила роутинга такую вещь,
ip rule add from <ppp0 ipaddr> lookup ppp0
Теперь ответы на пинги и tcp-соединения, которые приходят с ppp0 уходят туда же :) То есть, теперь веб сервер работает как надо.
Но вот с bind и teamspeak с проблема осталась не решенной :(
Дело в том, что эти программы используют протокол UDP. Ответы на udp пакеты, которые приходят на ppp0, как уходили через eth0 - так через него и уходят. Причем адрес у этих пакетов от интерфейса eth0, а не от ppp0! :O
Из-за чего это происходит - наука умалкивает.
Имхо, у меня такое чувство, что роутинг тут не причем. Проблема возможно, в сокетах или в особенностях протокола udp. Хотя, я точно не уверен...
Может кто сталкивался с этим, и подскажет как можно решить эту проблему?

Ответ на: комментарий от stalcker

Спасибо за ссылки, друзья.
Сделал я, как в мануалах написано, но все равно та же ботва...
Немного поковырявщись, выяснил что проблема в кеше роутинга. Если человек заходит на сайт по адресу eth0, то по ppp0 он зайти не сможет, пока запись из кеша не исчезнет или не сделать ip route flush cache.
Теперь будут копать, как бы сделать чтобы записи из кеша быстрее удалялись... Идеально было бы чтобы записи в кеше хранились не более, чем TTL у доменной записи.

Cosmicman ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.