LINUX.ORG.RU
ФорумAdmin

2 провайдера и некорректная маршрутизация


0

0

Доброго дня

Тема банальная: дается 2 интернет канала от 2 провайдеров. Нужно часть народа пустить через один, часть через второй по всяким разным условиям. Но потыкавшись, попробовав нифига не вышло
Знаю, тема и поднималась неоднократно, но как-то...

Уже сделал банально, смотря вот на это http://www.opennet.ru/base/net/debian_multilink.txt.html аще копипастом (ну тока поменяв переменные на нужные значения), но всё равно одна и та же ситуация, а именно такая:
исходящие пакеты (смотрю tcpdump 'ом) уходят куда надо (например через провайдера P1), и ответы от удаленного сервера приходят на интерфейс прова P1, но до получателя ответы не доходят
НО, если в таблицу main добавить маршрут по умолчанию через этого же провайдера P1
ip route add default dev eth0 via 1.1.1.1
сразу начинает всё работать, но только для правил этого провайдера (с правилами для P2, та же самая ситуация - ответы до получателя не доходят)
Аналогично для провайдера P2
Куда копать?..

Ubuntu server 9.10


Вот конфиг:

IP_LOCAL=«10.10.1.99» # адрес нашего маршрутизатора в локальной сети.
IP_INET1=«1.1.1.10» # адрес нашего маршрутизатора в сети первого провайдера.
IP_INET2=«2.2.2.10» # адрес нашего марщрутизатора в сети второго провайдера.

IF_LOCAL=«eth1» # имя интерфейса на локальную сеть
IF_INET1=«eth0» # имя интерфейса на первого провайдера.
IF_INET2=«eth3» # имя интерфейса на второго провайдера.

NET_LOCAL=«10.10.0.0/16» # локальная сеть.
NET_INET1=«1.1.1.0/24» # адрес сети в которой гейт нашего первого провайдера.
NET_INET2=«2.2.2.0/24» # адрес сети в которой гейт нашего второго провайдера.
NET_SUB1=«10.10.10.0/24» # подсеть пользователей на первого провайдера
NET_SUB2=«10.10.1.0/24» # подсеть пользователей на второго провайдера

GW1=«1.1.1.1» # гейт первого провайдера.
GW2=«2.2.2.1» # гейт второго провайдера.


ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table P1
ip route add $NET_LOCAL dev $IF_LOCAL table P1
ip route add $NET_INET2 dev $IF_INET2 table P1
ip route add 127.0.0.0/8 dev lo table P1
ip route add default via $GW1 table P1

ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table P2
ip route add $NET_LOCAL dev $IF_LOCAL table P2
ip route add $NET_INET1 dev $IF_INET1 table P2
ip route add 127.0.0.0/8 dev lo table P2
ip route add default via $GW2 table P2

ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1
ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2

ip rule add from $IP_INET1 table P1
ip rule add from $IP_INET2 table P2
ip rule add fwmark 10 table P1
ip rule add fwmark 11 table P2

ip route flush cache

iptables -t mangle -A PREROUTING -s $NET_SUB1 ! -d $NET_LOCAL -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s $NET_SUB2 ! -d $NET_LOCAL -j MARK --set-mark 11

iptables -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE
iptables -t nat -A POSTROUTING -m mark --mark 11 -j MASQUERADE

>Нужно часть народа пустить через один, часть через второй

Две подсети сделать?

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

dreamer Через сквид всё рулится без проблем

Но помимо вэба есть банк-клиенты, видеонаблюдение и еще много всего интересного...

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

narayanrus ()

Добавь dev'ы в default-записи вспомогательных таблиц.

ip route add 127.0.0.0/8 dev lo можешь убрать, это проявления клинического маразма авторов lartc (никогда не слышавших про таблицу local и rule 0).

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

Решилось!

Почти везде пишут что надо отключать rp_filter таким макаром: sysctl net.ipv4.conf.all.rp_filter=0 Что собственно сделал и успокоился Сейчас случайно обнаружил что для конкретных интерфейсов он включен Отключил для eth0 и eth3 (те что смотрят в инет) и всё заработало!

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

Если бы были внимательнее, то решили бы этот вопрос быстрее. Уважаемый nnz это ещё несколько сообщений задад писал («sudo sysctl net.ipv4.conf.all.rp_filter=0»).

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