LINUX.ORG.RU
ФорумAdmin

iproute2 два провайдера один сервер

 


0

1

В локалке есть два роутера 10.1.1.1 и 10.1.1.2, оба пробрасывают 80й порт на сервер 10.1.1.33.

Если заходить на сервер через первый роутер - все ок. Если через второй, то сервер отправляет ответы через первый, который прописан как дефолтгв.

Подскажите, чего сказать iproute чтобы пакеты уходили в гейт с которого пришли.

Чем вообще отличаются пакеты с разных роутеров кроме мака отправителя?

Придется в iptables второго роутера пакеты маркировать?

Как-то я такое уже делал, давно, вообще не помню как :(

Чем вообще отличаются пакеты с разных роутеров кроме мака отправителя?

Ничем, только этим. Следовательно нужно маркировать соединения на основе MAC-а router-а (по первому входящему на сервер пакету).

spirit ★★★★★ ()
Ответ на: комментарий от sirius

Не выйдет. Там ответы на оба шлюза идут от 10.1.1.33.

Если есть возможность поставить два адреса на сервере - то это лучший вариант.

Если нет - то проще маркировать трафик от второго шлюза.

Oleg_Iu ()
Ответ на: комментарий от spirit

То есть, сделать правило на сервере по маку источника и маркать его для iproute критерия fwmark? Еще пришло в голову. Может на втором роутере менять tos, а на сервере использовать критерей iproute tos? Как вариант.

klim888 ()

У меня точно такая же ситуация: 2 роутера в одной сети с белыми ip, несколько портов прокинуты внутрь на web-сервер. Если подключаться извне к первому роутеру (внутренний ip 192.168.1.1 - шлюз по дефолту), то всё ок, а если ко второму (внутренний ip 192.168.1.100, mac E8:28:C1:DF:EE:B0), то apache отправляет ответ на первый роутер и подключиться не получается. Решил проблему следующим образом:

echo 201 rt >> /etc/iproute2/rt_tables

iptables -t mangle -I PREROUTING 1 -p tcp -m mac –mac-source E8:28:C1:DF:EE:B0 -j CONNMARK –set-mark 1

ip rule add fwmark 1 table rt

ip route add default via 192.168.1.100 table rt

iptables -t mangle -I OUTPUT -j CONNMARK –restore-mark

Вроде работает, правильно я сделал?

asingl ()
Ответ на: комментарий от Bootmen

Похоже, Вы не поняли вопрос.

У клиентов всё хорошо, они ходят в инет через первый роутер. Второй используется как резервный. При аварии на первой линии достаточно сменить шлюз с первого на второй и инет заработает через второй роутер.

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

Sirius подсказал, как это можно сделать, а я нашел подходящие для меня команды.

asingl ()