URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 70596
[ Назад ]

Исходное сообщение
"2 канала в интернет"

Отправлено Vsiliy , 29-Ноя-06 11:03 
Имеется 2 канала от разных провов, и стоит цель чтобы каналы работали одновременно (один для почтовика и второй для сёрфинга в инет)
проблема в том что 2 дефолтовых шлюза быть неможет как прописать таблицу маршрутизации чтоб каналы не конфликтовали м\у собой

вот таблица маршрутизации для одно канала
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.3.0.6        *               255.255.255.255 UH    0      0        0 tun0
ХХХ01-L4.ov     *               255.255.255.255 UH    0      0        0 ppp0
195.ххх.ххх.120 *               255.255.255.252 U     0      0        0 eth2
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     10.3.0.6        255.255.255.0   UG    0      0        0 tun0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth2
default         ХХХ01-L4.ov     0.0.0.0         UG    0      0        0 ppp0

второй канал висит на интерфейсе eth2


Содержание

Сообщения в этом обсуждении
"2 канала в интернет"
Отправлено _KAV_ , 29-Ноя-06 11:06 
Здесь , раздел документации, LARTC (можно смотреть в переводе Киселева)

"2 канала в интернет"
Отправлено Syava , 29-Ноя-06 11:50 
копай файрвол
ipfw add fwd ИП_Шлюз_ed2 from any to any 80
только не забудь пронатировать

"2 канала в интернет"
Отправлено Vsiliy , 29-Ноя-06 18:04 
Короче настроил маршрутизацию подобным образом:
Раздельный доступ

Первый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 1, уходили через того же провайдера.

Давайте определим некоторые переменные. Пусть $IF1 будет именем первого интерфейса (if1 на рисунке), а $IF2 -- именем второго. Тогда $IP1 будет IP адресом $IF1 , а $IP2 -- IP адресом $IF2 . Далее, $P1 это IP-адрес шлюза провайдера 1, а $P2 -- IP адрес шлюза провайдера 2. Наконец, $P1_NET это IP сеть, к которой принадлежит $P1 , а $P2_NET -- сеть, к которой принадлежит $P2 .

Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables. Теперь можно настроить эти таблицы следующими командами:
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
        
Ничего особо эффектного, маршрут к шлюзу и маршрут по-умолчанию через этот шлюз. Точно так же, как и в случае одного провайдера, но по таблице на каждого провайдера. Заметьте, что маршрута к сети, в которой находится шлюз достаточно, потому что он определяет как найти все хосты в этой сети, включая сам шлюз.

Теперь нужно настроить главную таблицу маршрутизации. Хорошо бы маршрутизировать пакеты для сетей провайдеров через соответствующие интерфейсы. Обратите внимание на аргумент `src', который обеспечивает правильный выбор исходного IP-адреса.
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2        
        
Теперь задаем маршрут по умолчанию:
ip route add default via $P1      
        
Зададим правила маршрутизации. Они будут отвечать за то, какая таблица будет использоваться при маршрутизации. Вы хотите, чтобы пакет с определенным адресом источника маршрутизировался через соответствующий интерфейс:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2        
        
Этот набор команд обеспечивает маршрутизацию ответов через интерфейс, на котором был получен запрос.
    
Заметка читателя Рода Роака (Rod Roark): ' если $P0_NET это локальная сеть, а $IF0 -- соответствующий ей интерфейс, желательно задать следующие команды:
ip route add $P0_NET     dev $IF0 table T1
ip route add $P2_NET     dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo   table T1
ip route add $P0_NET     dev $IF0 table T2
ip route add $P1_NET     dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo   table T2
          

Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов, выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов (NAT/masquerading). В противном случае, вам будет необходим диапазон IP адресов обоих провайдеров, или выполнять маскирование для одного из провайдеров. В любом случае, вы можете задать правила выбора провайдера для каждого конкретного адреса вашей локальной сети.


пометил пакеты при помощи iptables
создал правило:
ip rule add fwmark 2 table T2
пакеты помеченные 2 попадают в таблицу 2 и отправляются через шлюз для этой таблицы


теперь косяк: пакеты отправляются с нужного интерфеса, но в заголовке у них стоит IP сетевухи с дефолтовым шлюзом и соответственно возвращатся всё пытается на него, подскажите где копать??



"2 канала в интернет"
Отправлено GByte , 29-Ноя-06 21:29 
А не проще будет почтовик посадить на прямую на отдельный канал, остальное на другой? - и отказоустойчивость повышается и гемороя с файером меньше. файер конечно нужен, но в такой конфигурации получится все гораздо проще :)

"2 канала в интернет"
Отправлено Vsiliy , 30-Ноя-06 09:18 
>А не проще будет почтовик посадить на прямую на отдельный канал, остальное
>на другой? - и отказоустойчивость повышается и гемороя с файером меньше.
>файер конечно нужен, но в такой конфигурации получится все гораздо проще
>:)


Проблема в том что разделить нужно гораздо больше не только почту и впн


"2 канала в интернет"
Отправлено _KAV_ , 30-Ноя-06 10:39 
>Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов,
>выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов
>(NAT/masquerading).
Вот это выполнни

"2 канала в интернет"
Отправлено Vsiliy , 30-Ноя-06 15:38 
>>Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов,
>>выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов
>>(NAT/masquerading).
>Вот это выполнни

всё сделано косяк теперь в том что те пакеты которые идут с компов в локальной сети рулятся нормально, а то что с локального интерфейса на раутере нивкакую.
например:
помечаю: iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80 -j MARK --set-mark 180
и всё помеченное идёт через нужный шлюз
а проблема в том что мне нужно рулить например трафик openvpn
делаю: iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 180
пакеты метятся но идут по старому


"2 канала в интернет"
Отправлено _KAV_ , 01-Дек-06 11:02 
Дык _внимательно_  посмотри Iptables Tutorial, рисунок структуры фильтра - ты метишь пакеты _после_ маршрутизации.
Здесь в конференции проскакивали примеры как работать с этим