В общем други такая странная у меня проблема... впервые сталкиваюсь и уже голову сломал :)Описываю общую схему:
есть два магистральных провайдера РТК и ТТК, с каждым подняты eBGP, получаю от каждого FullView, отдаю каждому свою сеть.
РТК ТТК
| |
| |
роутер ----- роутер ------ роутер
1 3 2
|
|
клиенты
(устройства использующие нашу сеть)
роутер 1 получает FV от РТК по eBGP, роутер 2 получает FV от ТТК по eBGP и роутер 3 получает все маршруты от РТК и ТТК через роутеры 1 и 2 по iBGP соответственно. Все роутерты - это FreeBSD 8 + pf + quagga.
А теперь проблема: если оставить только одного провайдера (например выключить роутер 2) то все ходит нормально через роутер 1 (пакеты от клиентов до обратно ходят), если сделать наоборот (выключить роутер 1 и оставить роутер 2) то все отлично работает через роутер 2 (пакеты клиентов гуляют нормально).
Но если включить обоих провайдеров то.... то у ТТК маршруты в некоторые сети короче и пакеты уходят через канал ТТК, а вот обратно зачастую пытаются прийти через канал РТК (по разным причинам) и пропадают на роутере 1 :( В фаерволле стоит пропускать все транзитные пакеты... да и пробовал выключать его - не помогает. К тому же если б было дело в фаерволле - то не работало бы и с выключенным ТТК, фаерволлу то какая разница. Отслеживал все с помощью tcpdump.
В общем по сути если пакеты вышли через роутерт 1 - то они спокойно возвращаются, если же вышли через роутер 2 - то на роутере 1 они рубятся. Уходят пакеты с адресом моей сети и приходят обратно на него же.... ну и опять - если пакеты уходят и приходят через один роутер - то все работает нормально!
В общем два дня отлавливал ситуацию, идеи закончились :(