Foster 0 Опубликовано: 2006-10-18 11:21:28 Share Опубликовано: 2006-10-18 11:21:28 войну и мир перечитал (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 не работает ничего. кто чего подскажет по этому поводу? Ссылка на сообщение Поделиться на других сайтах
Fergus 0 Опубліковано: 2006-10-18 16:38:30 Share Опубліковано: 2006-10-18 16:38:30 А есть ли проги с такими же функциями (раздиленя трафа на 2 канала) только для Windows? Есть портированные версии squid'а под винду... умеет все как и под unix кроме прозрачного проксирования. Лично ставил на win2000 server... матерая прокся получилась... и кэширует грамотно и настроить можно как тебе угодно. Имхо под винду в плане прокси лучше не найти )) другие типа - UserGate и т.п. просто отдыхают. Вот через него в одном офисе раздиление на два канала делал... мало того там под это есть еще целый ряд настроек... как работать с каждым каналом. Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2006-10-20 20:07:37 Share Опубліковано: 2006-10-20 20:07:37 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 Ссылка на сообщение Поделиться на других сайтах
Foster 0 Опубліковано: 2006-10-21 08:17:57 Автор Share Опубліковано: 2006-10-21 08:17:57 сделал вот еще чуть по другому [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 через некоторое время (наверное после того как кэш роута обнулился) пинги идут куда надо кто-то может что-то сказать по этому поводу? как заставить работать два канала параллельно? Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-10-21 08:31:43 Share Опубліковано: 2006-10-21 08:31:43 bgp or ospf! Ссылка на сообщение Поделиться на других сайтах
Foster 0 Опубліковано: 2006-10-21 08:44:18 Автор Share Опубліковано: 2006-10-21 08:44:18 это уже мне добрые люди сказали, что src routing тут не канает вроде бы еще можно iptables -j ROUTE --gw сижу пересобираю ядро параллельно ставлю зебру BGP если поднимать, что нужно? Ссылка на сообщение Поделиться на других сайтах
mr.Scamp 41 Опубліковано: 2006-10-21 20:57:45 Share Опубліковано: 2006-10-21 20:57:45 AS + блок PI-адресов Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-10-22 04:02:09 Share Опубліковано: 2006-10-22 04:02:09 вообщето нужно договориться с вашими провайдерами, о том что вы хотите BGP, с ними же и договариваетесь о номере AS (может быть приватным от 100 помоему), ну а адреса я так понял у вас уже есть. Хотя можно сделать и как скащал mr.Scamp Ссылка на сообщение Поделиться на других сайтах
codex 0 Опубліковано: 2006-11-11 07:56:27 Share Опубліковано: 2006-11-11 07:56:27 Если нужна именно балансировка+бэкап то: Пишем одной строкой(не забыв перед этим 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 при наличии в линуксе таких средств - из пушки по воробьям. Да забыл сказать все это работает на сервере с тремя провайдерскими линками Украина/не Украина быстрые/медленные и кучей тоннелей Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас