LINUX.ORG.RU
ФорумAdmin

помогите с route


0

0

Есть машина с Linuxом
eth0 : ip=192.168.0.247
она подключена к свитчу
к свитчу также подключены роутер1 (GW1) и роутер2 (GW2)
IP_GW1 = 192.168.0.250
IP_GW2 = 192.168.0.240
оба роутера подсоединены к интернету
соответсвенно у них внешние адреса
IP_out1 = x.x.x.x
IP_out2 = y.y.y.y
сейчас на машине с линухом есть маршрут:
route add -net 0.0.0.0/0 gw 192.168.0.250 dev eth0
соответсвенно роутер1 выступает дефолтным гетвеем

На роутере1 прокинут порт 22.
(там через веб интерфейс, но так думаю понятней)
iptables -t nat -s 0.0.0.0/0 -p tcp --dport 22 -j DNAT 192.168.0.247

Соответсвенно извне есть доступ по SSH.
ssh -l user -p 22 x.x.x.x

Я хочу, чтобы доступ был и по
ssh -l user -p 22 y.y.y.y
для этого на роутере2 я прописал
iptables -t nat -s 0.0.0.0/0 -p tcp --dport 22 -j DNTA 192.168.0.247

на линукс машине я попробовал прописать:
route add -net 0.0.0.0/0 gw 192.168.0.240 dev eth0

но доступ получается только по x.x.x.x ИЛИ y.y.y.y
т.е. если я отключаю роутер1, удаётся получить доступ по адресу y.y.y.y
если отключаю роутер2, то через некоторе время получаю доступ по x.x.x.x

но вместе никак. Такое ощущение, что GW становится тот, чья скорость выше, а другой испольуется только в случае недоступности другого.

Вопрос: как сделать так, чтобы пакеты шли на тот GW, с которого был запрос?


Пропиши на роутере 2: iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -d 192.168.0.247 -j SNAT --to-source 192.168.0.240

т.е. заходя по ssh на y.y.y.y тебя будут прокидывать на 22 порт 192.168.0.247, и при этом, по новому правилу source ip будет меняться на приватный адресс второго роутера. route add прописывать не надо.

у меня таким образом работает несколько подобных конструкций.

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

Дело в том, что роутер1 и роутер2 - роутеры только с веб-интерфейсом.
Я "iptables" написал чтобы понятнее было :)
Делать SNAT они не умеют. Они только DNAT умеют.

И к тому же не очень понятно, как тогда отслеживать заходы по тому же ssh. Придётся логи не только сервера но и роутеров анализировать иначе не понятно, из локалки или извне доступ был.

ksicom
() автор топика
Ответ на: комментарий от ksicom

> Дело в том, что роутер1 и роутер2 - роутеры только с веб-интерфейсом.

Железки из разряда D-Link DI-604?.. тогда ooops.

Есть еще вариант: если снаружи через роутер1 и роутер2 ходят с разных ip (например через роутер1 только с ip qqq.qqq.qqq.qqq, а через роутер2 только c www.www.www.www), то можно прописать на linux'е жесткий роутинг:

route add -host qqq.qqq.qqq.qqq -gw роутер1_ip
route add -host www.www.www.www -gw роутер2_ip

не универсально конечно, но работает, в зависимости от исходных данных :)

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