LINUX.ORG.RU
ФорумAdmin

iptables/NAT/2 шлюза


0

1

Привет всем, помогите разобраться с маршрутизацией:

есть ubuntu роутер - 
 eth0 - смотрит в локальную сеть
 eth1 - смотрит в провайдера1
 ppp0 - поднимается интернет от провайдера1
 eth2 - смотрит в сторону роутера с провайдером2

/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet dhcp

auto eth0
    iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    broadcast 192.168.1.255

auto eth2
    iface eth2 inet static
    address 192.168.0.252
    netmask 255.255.255.0
    network 192.168.0.0
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider dsl-provider

Суть проблемы в том, что, когда пишу 
route add default gw 192.168.0.1 eth2 
то теряю доступ по ssh со стороны ppp0, а когда поднимаю ppp0, то теряю доступ по ssh со стороны роутера 192.168.0.1

Как настроить этот NAT, чтобы убунта была доступна по ssh по обоим провайдерам?

Это не NAT надо настраивать, а policy based routing, гуглите, описано много-много раз.

mky ★★★★★ ()
Ответ на: комментарий от mky
Ага, спасибо за направление.
Поправьте, если не правильно:
# ip route add default via 192.168.0.1 table 101
# ip route add default via {ip_ppp0} table 102

# ip rule add from 192.168.0.1 table 101
# ip rule add from {ip_ppp0} table 102
где {ip_ppp0} - ip адрес получаемый при поднятии ppp0?
deny12rus ()
Ответ на: комментарий от mky

Лень пытаться понять твою схему. Решение для 2-х аплинков (eth0 и eth1, eth2-внутренняя локалка):

echo 101 provider1 >> /etc/iproute2/rt_tables
echo 102 provider2 >> /etc/iproute2/rt_tables
ip rule add prio 500 from <eth0-ip> to <eth2-network> table main
ip rule add prio 1000 from <eth0-ip> table provider1
ip rule add prio 1500 from <eth1-ip> to <eth2-network> table main
ip rule add prio 2000 from <eth1-ip> table provider2
ip route add default via <provider1-gw> table provider1
ip route add default via <provider2-gw> table provider2
Black_Shadow ★★★★★ ()
Ответ на: комментарий от mky

Хмм, но проблема не исчезла, доступ по ssh все также только с одной стороны.

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

Вы подключаетесь по ssh на разные ip-адреса 192.168.0.252 и {ip_ppp0}? Если на одинаковый, то вам нужно маркировать соединение, маркировать пакеты и маршрутизировать по маркеру.

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

Нет, пробую подключиться на разные ip. Вечером еще поковыряю. Единственное, что осложняет ситуацию - это то, что сам сервак находится в 150 км от меня, и если к нему потерять вообще полный доступ - будет печалька.

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

Вы соединяетесь на внешние (public) IP которые ваш сервер получает от разных провайдеров? Ваш сервер имеет эти адреса на своих интерфейсах?

Смотрите куда смотрят оба этих роута. Посмотрите на пакет которым отвечает ваш сервер. Куда он собирается его отправлять, знает ли он маршрут либо полагается на default gateway.

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

Ну не знаю что сказать, тренироваться, конечно, лучше на доступных серверах. Ну пропишите там в crontab перезагрузку каждый час (ночью), отключив, если есть, сохранение правил iptables при перезагрузке. Или, вместо презагрузки, пропишите в crontab регулярную проверку открытых сессий по ssh, незабыв включить keepalive у sshd. Только сначала убедитесь, что этот скрипт работает, а потом уже ломайте маршруты.

А по подключениям — пробуйте ловить пакеты tcpdump'ом, только указывайте ему правильный фильтр, чтобы не получилось, что он ловит пакеты той ssh-сессии, куда сам же вывыводит перехваченные пакеты. Так, либо пакет уходит по неправильному маршруту, либо уходит правильно, но попадает под какое-нибудь правило в iptables. При поднятии ppp правила в iptables не дописываются?

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