Шлюз следующей конфигурации 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.1ip 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руб!!!
Что делать??!!
может как то маркировать пакеты?p.s. черт, сказали, что меня завтра повесят, если я не исправлю ситуацию.
p.p.s повесят за яйца... (((
>может как то маркировать пакеты?
>
>p.s. черт, сказали, что меня завтра повесят, если я не исправлю ситуацию.
>
>p.p.s повесят за яйца... (((Читать документацию или увольняться - какие еще варианты?
Не понимаю, зачем лезть туда куда не умеешь ?
В общем так и должно быть.
Либо маркируй пакеты с помощью 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
>В общем так и должно быть.
>Либо маркируй пакеты с помощью 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 провайдера...
>Из этого получилось, что исходящий трафик шел через второго прова(бесплатно) а приходил
>на первого по 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
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