Перейти до

Разделение траффа между каналами


Рекомендованные сообщения

войну и мир перечитал (man iproute2)

но что-то не клеится

делал по схеме: http://gazette.linux.ru.net/rus/articles/lartc/x348.html

и еще по парочке схем

 

суть в чем:

система: линукс FC5

есть два канала в интернет. Один узкий, другой широкий.

все это от одного и того же провайдера.

нужно заставить работать две эти сетевухи. и чтобы сам сервер, т.е. 127.0.0.0/8 ходил в инет через узкий канал

 

eth0 - 192.168.78.1

eth1 - 193.109.129.IP1 - узкий анлим

eth2 - 193.109.129.IP2 - широкий пометраж

 

IF1="eth1"
IF2="eth2"
IP1="193.109.129.IP1"
IP2="193.109.129.IP2"
P1="193.109.129.161"
P2="193.109.129.193"
P1_NET="193.109.129.160/27"
P2_NET="193.109.129.192/27"

T1="unlim_ch"
T2="main_ch"

ip route add $P1_NET dev $IF1 src $IP1 table $T1
ip route add $P2_NET dev $IF2 src $IP2 table $T2

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip route add default via $P1 table $T1
ip route add default via $P2 table $T2

ip route add default via $P1

ip rule add from $IP1 table $T1
ip rule add from $IP2 table $T2


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

этот скрипт отрабатывает, правила все заносятся.

но смотрим дальше. Сервер действительно ходит через eth1, и клиенты, которые прописаны iptables postrouting -o eth1 -j snat --to-source 193.109.129.IP1 работают просто замечательно, но другой канал отдыхает, потому как при -o eth2-SNAT --to-source 193.109.129.IP2 не работает ничего.

 

кто чего подскажет по этому поводу?

Ссылка на сообщение
Поделиться на других сайтах
А есть ли проги с такими же функциями (раздиленя трафа на 2 канала) только для Windows?

 

Есть портированные версии squid'а под винду... умеет все как и под unix кроме прозрачного проксирования.

Лично ставил на win2000 server... матерая прокся получилась... и кэширует грамотно и настроить можно как тебе угодно.

Имхо под винду в плане прокси лучше не найти )) другие типа - UserGate и т.п. просто отдыхают.

 

Вот через него в одном офисе раздиление на два канала делал... мало того там под это есть еще целый ряд настроек... как работать с каждым каналом.

Ссылка на сообщение
Поделиться на других сайтах

ip rule add from <ip_пользователя который будет ходить через анлим> table unlim_ch

ip rule add from <ip_пользователя который будет ходить через широкий пометраж> table main_ch

далее достаточно открыть форвард в мир и сделать нат (или маскарадинг)

 

это:

ip rule add from 193.109.129.169 table unlim_ch

ip rule add from 193.109.129.206 table main_ch

насколько я понимаю не нужно

 

приведу свой пример кторый реально работает

перенаправим пользователя с ip 10.10.10.22 на канал adsl256

 

eth0- 10.10.10.1 1-я подсеть

eth1- 10.10.9.2 магистральная подсеть

eth2-ADSL128

адрес 2-го сервера на котором есть канал adsl256 - 10.10.9.1 (на нем уже разрешен инет для нашего сервера у котрого ip 10.10.9.2 в магистральной подсети)

 

echo 111 adsl >> /etc/iproute2/rt_tables

ip rule add from 10.10.10.22 table adsl256

ip route add default via 10.10.9.1 dev eth1 table adsl256

ip route flush cache

 

iptables -A FORWARD -s 10.10.10.22 -j ACCEPT

iptables -A FORWARD -d 10.10.10.22 -j ACCEPT

iptables -t nat -I POSTROUTING 1 -s 10.10.10.22 -d ! 10.0.0.0/8 -j MASQUERADE

Ссылка на сообщение
Поделиться на других сайтах

сделал вот еще чуть по другому

 

[root@next www]# ip route ls
194.50.254.3 via 172.1.1.1 dev tun0
194.50.254.7 via 172.1.1.1 dev tun0
172.1.1.1 dev tun0  proto kernel  scope link  src 172.1.1.2
192.168.76.0/22 dev eth0  proto kernel  scope link  src 192.168.78.1

 

[root@next www]# ip route ls table main_ch
193.109.129.192/27 dev eth2  proto static  scope link
192.168.76.0/22 dev eth0  scope link
127.0.0.0/8 dev lo  proto static  scope link
default via 193.109.129.193 dev eth2  src 193.109.129.IP2

 

[root@next www]# ip route ls table unlim_ch
193.109.129.160/27 dev eth1  proto static  scope link
192.168.76.0/22 dev eth0  scope link
127.0.0.0/8 dev lo  proto static  scope link
default via 193.109.129.161 dev eth1  proto static  src 193.109.129.IP1

 

[root@next www]# ip rule ls
0:      from all lookup local
220:    from all to 193.109.129.160/27 lookup unlim_ch
220:    from 193.109.129.160/27 lookup unlim_ch
220:    from 193.109.129.192/27 lookup main_ch
220:    from all to 193.109.129.192/27 lookup main_ch
230:    from 193.109.129.160/27 lookup unlim_ch
230:    from all to 193.109.129.160/27 lookup unlim_ch
240:    from all lookup internet
32766:  from all lookup main
32767:  from all lookup default

 

делаем пинг с внутренней сети с компьютера 192.168.78.10

 

[root@next www]# tcpdump -i eth1 icmp
12:44:07.832844 IP 192.168.78.10 > hosting0.synapse.net.ua: ICMP echo request, id 20525, seq 11, length 64
12:44:08.008752 IP 192.168.78.10 > hosting0.synapse.net.ua: ICMP echo request, id 47144, seq 350, length 64
12:44:08.832764 IP 192.168.78.10 > hosting0.synapse.net.ua: ICMP echo request, id 20525, seq 12, length 64

 

при этом SNAT идет на eth2

20 1392 SNAT all -- * eth2 192.168.78.10 0.0.0.0/0 to:193.109.129.IP2

 

через некоторое время (наверное после того как кэш роута обнулился) пинги идут куда надо

 

кто-то может что-то сказать по этому поводу? как заставить работать два канала параллельно?

Ссылка на сообщение
Поделиться на других сайтах

это уже мне добрые люди сказали, что src routing тут не канает :)

вроде бы еще можно iptables -j ROUTE --gw

сижу пересобираю ядро

параллельно ставлю зебру :)

BGP если поднимать, что нужно?

Ссылка на сообщение
Поделиться на других сайтах

вообщето нужно договориться с вашими провайдерами, о том что вы хотите BGP, с ними же и договариваетесь о номере AS (может быть приватным от 100 помоему), ну а адреса я так понял у вас уже есть. Хотя можно сделать и как скащал mr.Scamp

Ссылка на сообщение
Поделиться на других сайтах
  • 3 weeks later...

Если нужна именно балансировка+бэкап то:

Пишем одной строкой(не забыв перед этим ip route del default):

 

ip route add default equalize nexthop via $GW_FAST weight 2 nexthop via $GW_SLOW weight 1

 

weight задает "вес". Грубо говоря - чем больше, тем больше вероятность выбора этого канала.

 

Соответственно под каждый внешний айпи необходимо прописать SNAT:

iptables -t nat -A POSTROUTING -o $DEV_FAST -j SNAT --to-source $IP_FAST

iptables -t nat -A POSTROUTING -o $DEV_SLOW -j SNAT --to-source $IP_SLOW

 

Чтобы извне можно было ходить на каждый внешний IP сервера:

ip route add default via $GW_FAST table 10

ip route add default via $GW_SLOW table 20

ip rule from $IP_FAST lookup 10

ip rule from $IP_SLOW lookup 20

 

Кроме того для балансировки необходимо выключить rp_filter на внешних интерфейсах:

echo 0 > /proc/sys/net/ipv4/conf/$DEV_FAST/rp_filter

echo 0 > /proc/sys/net/ipv4/conf/$DEV_SLOW/rp_filter

 

Но есть одно НО. После выключения rp_filter - все сервисы которые не понимают пакетов с разными src от одного клиента начинают глючить. Из основных нормально работает только 80 порт. FTP,SSH,мессенджеры глючат. Поэтому вместо записи в таблицу main пишем в отдельную таблицу и маркируем пакеты:

ip route add default equalize nexthop via $GW_FAST weight 2 nexthop via $GW_SLOW weight 1 table 30

ip rule fwmark 5 lookup 30

iptables -A PREROUTING -t mangle -m multiport -p tcp --dports 80 -j MARK --set-mark 5

Если найдете другие важные порты для которых необходима и работает балансировка - просто добавляем через запятую после --dports 80.

Можно также написать обратное правило - маркировать пакеты которые не надо балансировать.

 

Если надо делить каналы между группами юзеров(часть юзеров через один, часть через другой) - правило на каждого юзера. Например чтобы юзер ходил через быстрый канал: ip rule from $USER1_IP lookup 10. При этом в таблицу 10 необходимо прописать маршруты к локальным сетям. И для удобства лучше такие группы пользователей делить на подсети.

 

BGP при наличии в линуксе таких средств - из пушки по воробьям.

 

Да забыл сказать все это работает на сервере с тремя провайдерскими линками Украина/не Украина быстрые/медленные и кучей тоннелей :)

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...