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

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

Отправлено Cyber , 14-Фев-08 14:42 
Шлюз следующей конфигурации LinuxRedHat9:
eth0 - 172.30.2.126 (первый пров)
eth1 - 172.17.0.1 (локалка)
eth2 - 192.168.1.2 (второй пров)

шлюз по умолчанию 172.30.2.125

через впн раздаю адресацию:
172.20.2.0 для 1 прова
172.21.1.0 для 2 прова

нат:
iptables -t nat -A POSTROUTING -s 172.20.2.0/24 -o eth0 -j SNAT --to-source 172.30.2.126
iptables -t nat -A POSTROUTING -s 172.21.1.0/24 -o eth2 -j SNAT --to-source 192.168.1.2

скрипт роутинга:
IP1=172.30.2.126
IP2=192.168.1.2
G1=172.30.2.125
G2=192.168.1.1

ip route add default via $G1 dev eth0 table T1
ip route add default via $G2 dev eth2 table T2
ip route add default via $G1
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add from 172.21.1.0/24 table T2
route add -net 172.21.1.0/24 dev eth2 gw 192.168.1.1
ip route flush cache

Все работает, но есть но:
если пакеты идут через второго прова, то возвращаются через первого!
У меня первый пров платный, а второй анлим.

Из этого получилось, что исходящий трафик шел через второго прова(бесплатно) а приходил на первого по 1 руб за мег!!! и я попал на 17000руб!!!

Что делать??!!


Содержание

Сообщения в этом обсуждении
"Два канала в инет, все работает, но...."
Отправлено Cyber , 14-Фев-08 17:14 
может как то маркировать пакеты?

p.s. черт, сказали, что меня завтра повесят, если я не исправлю ситуацию.
p.p.s повесят за яйца... (((


"Два канала в инет, все работает, но...."
Отправлено PavelR , 14-Фев-08 19:14 
>может как то маркировать пакеты?
>
>p.s. черт, сказали, что меня завтра повесят, если я не исправлю ситуацию.
>
>p.p.s повесят за яйца... (((

Читать документацию или увольняться - какие еще варианты?
Не понимаю, зачем лезть туда куда не умеешь ?


"Два канала в инет, все работает, но...."
Отправлено kailex , 14-Фев-08 18:12 
В общем так и должно быть.
Либо маркируй пакеты с помощью iptables --mark, а потом с помощью правила ip rule ... fwmark направляй в нужную таблицу.
Либо весь трафик с помощью source routing направляй в нужную таблицу, что-то типа
ip rule add from $cheap_ip table cheap_prov
ip route add default via $cheap_prov_gateway_ip dev $cheap_int table cheap_prov
ip route flush cache

У тебя $cheap_ip=$IP2, cheap_prov=T2, $cheap_prov_gateway_ip=$G2, $cheap_int=eth2


"Два канала в инет, все работает, но...."
Отправлено Cyber , 15-Фев-08 09:42 
>В общем так и должно быть.
>Либо маркируй пакеты с помощью iptables --mark, а потом с помощью правила
>ip rule ... fwmark направляй в нужную таблицу.
>Либо весь трафик с помощью source routing направляй в нужную таблицу, что-то
>типа
>ip rule add from $cheap_ip table cheap_prov
>ip route add default via $cheap_prov_gateway_ip dev $cheap_int table cheap_prov
>ip route flush cache
>
>У тебя $cheap_ip=$IP2, cheap_prov=T2, $cheap_prov_gateway_ip=$G2, $cheap_int=eth2

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


"Два канала в инет, все работает, но...."
Отправлено PavelR , 14-Фев-08 19:21 

>Из этого получилось, что исходящий трафик шел через второго прова(бесплатно) а приходил
>на первого по 1 руб за мег!!! и я попал на
>17000руб!!!
>
>Что делать??!!

Чтобы не было такой фигни, надо делать правильно, а не "все работает".

>нат:
>iptables -t nat -A POSTROUTING -s 172.20.2.0/24 -o eth0 -j SNAT --to-source
>172.30.2.126
>iptables -t nat -A POSTROUTING -s 172.21.1.0/24 -o eth2 -j SNAT --to-source
>192.168.1.2

неправильно. правильно:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.30.2.126
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.1.2

почему - думаю сами поняли уже. Выгоняем в интерфейс с левым айпи и оно уходит. Если писать правильно - проблем не будет. Читайте маны, они рулят.

Кому чего можно настраивается в цепочке FORWARD

>ip route add default via $G1 dev eth0 table T1
>ip route add default via $G2 dev eth2 table T2
>ip route add default via $G1
>ip rule add from $IP1 table T1
>ip rule add from $IP2 table T2
>ip rule add from 172.21.1.0/24 table T2
>route add -net 172.21.1.0/24 dev eth2 gw 192.168.1.1
>ip route flush cache

не совсем правильно. правильно примерно так:

ip route add default via $G1 dev eth0 table T1
ip route add default via $G2 dev eth2 table T2
ip route add default via $G1   <- влияет только на тот траффик, который мы не прописали умолчально, например для самого рутера.
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add from 172.21.1.0/24 table T2
ip rule add from 172.21.1.0/24 table T2

но нужно вставить pref чтобы правила вставлялись в нужные места в списке правил.
Поищи по форуму, найдешь. + нужно чтобы траффик со внешних адресов в локалки уходил именно в локалки а не на шлюзы провайдера(нужно доп правила в нужные места, опять же в поиск.)

#route add -net 172.21.1.0/24 dev eth2 gw 192.168.1.1  # не понял чо за бред

ip route flush cache


"Два канала в инет, все работает, но...."
Отправлено PavelR , 15-Фев-08 06:25 
ip rule add from 172.21.1.0/24 table T2
-ip rule add from 172.21.1.0/24 table T2
+ip rule add from 172.21.2.0/24 table T1