The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"2 интернет канала... "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"2 интернет канала... "  +/
Сообщение от narayan (ok) on 28-Июл-10, 18:12 
Доброго дня

Тема банальная: дается 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


Заранее благодарен

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "2 интернет канала... "  +/
Сообщение от Tux (??) on 28-Июл-10, 20:47 
>[оверквотинг удален]
>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
>
>
>Заранее благодарен

попробуйте MASQUERADE заменить четко на SNAT , если оба интерфейса ppp то поставить в правилах маскарадинга "-o pppX" иначе как iptables узнает на какой ip ему маскарадинг делать

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "2 интернет канала... "  +/
Сообщение от narayan (ok) on 29-Июл-10, 09:21 

>попробуйте MASQUERADE заменить четко на SNAT , если оба интерфейса ppp то
>поставить в правилах маскарадинга "-o pppX" иначе как iptables узнает на
>какой ip ему маскарадинг делать

Сделал - не помогло )
Уходили пакеты и так куда нужно
iproute же на основании марок маршрутизирует, а iptables потом в построутинге просто маскарадит

Не улавливаю связь между маршрутом по умолчанию в таблице main и тем что ответы до внутренней сети не доходят...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "2 интернет канала... "  +/
Сообщение от narayan (ok) on 29-Июл-10, 19:23 
Решилось!

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


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру