iproute2, два провайдера (Покажите, пожалуйста, где я ошибся.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
ivul
Сообщения: 104
ОС: Debian/Ubuntu Linux

iproute2, два провайдера

Сообщение ivul »

Приветствую!
Ситуация такая. Был один интернет канал (a.a.a.1). Появился второй интернет-канал (b.b.b.1).
Сейчас сеть выглядит так:
Изображение

Настраивал маршрутизацию на Хост2 согласно руководству: http://www.opennet.ru/docs/RUS/LARTC/x348.html

В файл /etc/iproute2/rt_tables добавил строки:

Код: Выделить всё

200 inet_a
201 Inet_b


Далее выполнил команды:

Код: Выделить всё

ip route add 192.168.10.0/30 dev eth0 table inet_a
ip route add b.b.b.0/30      dev eth2 table inet_a
ip route add 127.0.0.0/8     dev lo   table inet_a

ip route add 192.168.10.0/30 dev eth0 table inet_b
ip route add a.a.a.0/30      dev eth1 table inet_b
ip route add 127.0.0.0/8     dev lo   table inet_b

ip route add a.a.a.0/30 dev eth1 src 212.32.220.134 table inet_a
ip route add default via a.a.a.2 table inet_a

ip route add b.b.b.0/30 dev eth2 src 94.139.127.6 table inet_b
ip route add default via b.b.b.2 table inet_b

ip route add a.a.a.0/30 dev eth1 src a.a.a.1
ip route add b.b.b.0/30 dev eth2 src b.b.b.1

ip route add default via a.a.a.2

ip rule add from a.a.a.1 table inet_a
ip rule add from b.b.b.1 table inet_b

ip route add 192.168.0.0/24 via 192.168.10.1

ip route flush cache

Здесь eth0 (IP: 192.168.10.2) - к Хост1, eth1 (IP: a.a.a.1) - первый канал, eth2 (IP: b.b.b.1) - второй канал.

По-умолчанию, весь трафик идет через a.a.a.1. Чтобы трафик, например, c IP 192.168.0.100 завернуть через b.b.b.1, добавляю правило

Код: Выделить всё

ip rule add from 192.168.0.100 table inet_b


В iptables:

Код: Выделить всё

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source a.a.a.1
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source b.b.b.1


Проблема 1
С любого IP локальной сети не доступен адрес a.a.a.1. Т.е. ping проходит на шлюз первого провайдера a.a.a.2, на другие IP из интернета, на IP b.b.b.1, а сам a.a.a.1 не отвечает.

Проблема 2
Если IP из локальной сети добавлен в таблицу inet_b, трафик идет через b.b.b.1, но связь не стабильная, часто прерывается. Хотя если подключить компьютер напрямую ко второму каналу, связь ровная.

Что я сделал не так?
Спасибо сказали:
Аватара пользователя
pilson66
Сообщения: 59
ОС: Debian Squeeze

Re: iproute2, два провайдера

Сообщение pilson66 »

1. Непонятно зачем ты в таблицы добавил локалхост.

2. Судя по схеме - 192.168.0.0/24 у тебя доступен через 192.168.10.1
Зачем же ты тогда указал на него следующее?
ip route add 192.168.0.0/24 via 192.168.10.2

3. непонятно как тогда из локалки доступен провайдер :)
Спасибо сказали:
Аватара пользователя
ivul
Сообщения: 104
ОС: Debian/Ubuntu Linux

Re: iproute2, два провайдера

Сообщение ivul »

pilson66 писал(а):
22.06.2009 14:41
1. Непонятно зачем ты в таблицы добавил локалхост.

Согдласно рекомендации "читателя Рода Роака" http://www.opennet.ru/docs/RUS/LARTC/x348.html.
Честно скажу, сам плохо понял, для чего это надо было.

pilson66 писал(а):
22.06.2009 14:41
2. Судя по схеме - 192.168.0.0/24 у тебя доступен через 192.168.10.1
Зачем же ты тогда указал на него следующее?
ip route add 192.168.0.0/24 via 192.168.10.2

Виноват. Опечатался.
Спасибо сказали:
Аватара пользователя
ivul
Сообщения: 104
ОС: Debian/Ubuntu Linux

Re: iproute2, два провайдера

Сообщение ivul »

Разобрался...
Вот хорошая инструкция
http://www.opennet.ru/base/net/debian_multilink.txt.html
Спасибо сказали:
Аватара пользователя
ivul
Сообщения: 104
ОС: Debian/Ubuntu Linux

Re: iproute2, два провайдера

Сообщение ivul »

С маршрутами ясно.
Еще вопрос.

Что в правилах ip rule имеет больший приоритет метка пакета или IP адрес?

Например. Если в iptables есть цепочка
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j MARK --set-mark 1

а в таблицах маршрутизации добавлены такие правила:
ip rule add from 192.168.0.10 table T2
ip rule add fwmark 1 table T1

через какую таблицу пойдет web-трафик?
Спасибо сказали: