Интересный вопрос про роутинг!

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
593

Приветствую,

Второй день качественно ломаю голову, однако прийти к нужному результату никак не могу, задача изначально казалось весьма тривиальной, но сейчас почему-то выглядит очень странно.

Общие вводные: есть домашний роутер на CentOS, в котором 3 сетевые карты, 2 из них это два разных внешних ISP, одна карта смотрит внутрь сети где расположено еще несколько ПК. Задача звучит достаточно просто, в случае возникновения проблем с ISP #1 надо с тачек внутри локальной сети поднять VPN на роутер и получить через него доступ к ISP #2.

Технические данные:

eth0 - ISP #1 (x.x.x.x/24)

eth1 - LAN (192.168.0.0/24)

eth2 - ISP #2 (y.y.y.y/23)

ПК #1 - 192.168.0.5/24

Изначально, до появления eth2... все было прозаично:


725 71614 SNAT all -- * eth0 192.168.0.0/24 0.0.0.0/0 to:x.x.x.x

При этом был указан единственный возможный маршрут по умолчанию и как бы все работало как видимо и у всех. После появления eth2 я предположил, что мне будет достаточно между ПК #1 и eth1 организовать VPN тунель с дополнительной сеткой (192.168.5.0/24) и добавить такое же SNAT правило, но этого оказалось мало, в SNAT правило для VPN вообще не попадали пакеты.

(Отступлю, pptpd я настроил, соединение устанавливается, обе тачки видят друг друга через сеть 192.168.5.0/24)

Далее по нагугленным документациям я начал делать две раздельные таблицы маршрутизации:

в файл /etc/iproute2/rt_tables прописал 2 таблицы:


101 table_isp1
102 table_isp2


Далее добавил правила в файлы route-eth0

default via x.x.x.x dev eth0 table table_isp1

:route-eth2

default via y.y.y.y dev eth2 table table_isp2

x.x.x.x & y.y.y.y в данном случае GW провайдеров соответственно.
:rule-eth0

to x.x.x.x table table_isp1
from x.x.x.x table table_isp1

:rule-eth2

to y.y.y.y table table_isp2
from y.y.y.y table table_isp2

x.x.x.x & y.y.y.y в данном случае IP адреса интерфейсов на моей стороне.

Собственно эта часть балета заработала, предоставив мне возможность развести запросы на разные ип и отвечать с разных шлюзов, т.е мой домашний роутер стал доступен одновременно через два ISP и я смог откуда угодно на него подключаться.

Теперь пришло время озадачиться SNAT.. А именно поворотом VPN сети в необходимый мне ISP #2 вот тут и пришел полный каюк с которым я до сих пор честно говоря и не разобрался.....


# iptables -L -x -v -n -t nat
Chain PREROUTING (policy ACCEPT 107 packets, 9327 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 9 packets, 826 bytes)
pkts bytes target prot opt in out source destination
23 4072 SNAT all -- * eth0 192.168.0.0/24 0.0.0.0/0 to:x.x.x.x
0 0 SNAT all -- * eth2 192.168.5.0/24 0.0.0.0/0 to:y.y.y.y

Chain OUTPUT (policy ACCEPT 9 packets, 826 bytes)
pkts bytes target prot opt in out source destination


При поднятии VPN в SNAT правило попадает таки трафик, однако ситуация на столько абсурдно выглядит, что я даже затрудняюсь пояснить как это....
1. Запущенный пинг до поднятия VPN и после, качественно меняется (как и должно быть), трасса начинает ходить правильно, однако все сайты если и открываются то через несколько минут..... и не все... и не открываются...
2. Например обращаюсь на !!!! URI !!!! http://onyx.net.ua/ip.php через VPN - отстреливает на ура, а при обращении на !! URI !!! http://onyx.net.ua до апача вообще не доходит запрос.... ?????????
3. tcpdump на роутере показывает какие-то переменные результаты, сначала у меня не смотря на все правила трафик пытался уходить через оба внешних интерфейса.... сейчас же трафик уходит в правильный интерфейс , и возвращается оттуда же, но сайт не грузится и до апача запрос НЕ ДОХОДИТ.

В общем какая-то аномалия либо мега погрешность настройки, уже не могу второй день побороть, подскажите кто что знает и кто чем может как говорится .... :)))))

На всякий случай: Оба ISP по отдельности отлично работают, стоит мне только убрать все ВПН например и перекрутить SNAT + default gw на ISP #2 все начинает летать как и положено.... Однако задача держать одновременно 2 ИСП... без поднятого VPN всех клиентов натить в ISP #1 а с поднятым VPN в ISP #2.
Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#1

Вопрос закрыт, аномальное поведение вызвано не верно установленным значением MTU для ppp интерфейсов :)

Всем спасибо! :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий