Страница 1 из 1

балансировка внешних каналов

Добавлено: 2011-08-24 13:26:25
telo
всем доброго дня!

была следующая сеть:
(локальная 192.168.1.0/24) - (192.168.1.1/24 маршрутизатор 192.168.10.2/24) - (192.168.10.1/24 adsl модем в режиме роутера) - (интернет)
Изображение
фрибсд режет трафик пайпами, даёт доступ к www серверу.

в ядре добавлены IPFIREWALL, DUMMYNET, IPFIREWALL_FORWARD, IPDIVERT, pf, ALTQ

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

добавил в /etc/ppp/ppp.conf

Код: Выделить всё

skynet:
  set device PPPoE:vr0
  set authname username_of_skynet
  set authkey password_of_skynet
  set dial
  set login
(default gateway не ставлю -- т.к. не основной канал)

подключаюсь через /etc/rc.local

Код: Выделить всё

ppp -ddial skynet
пролучаю:

Код: Выделить всё

#ifconfig
fxp0 -- интерфейс "старого" провайдера
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        inet 192.168.10.2 netmask 0xffffff00 broadcast 192.168.10.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
vr0 -- интерфейс, в который включен "новый" провайдер
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl0 -- локальная сеть
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
pflog0: flags=0<> metric 0 mtu 33204
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> metric 0 mtu 1460
        syncpeer: 224.0.0.240 maxupd: 128
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
        inet 6.6.6.6 --> 192.168.192.2 netmask 0xffffffff
        Opened by PID 1477
пингую яндекс с одного и другого интерфейса
ping -S 6.6.6.6 http://www.ya.ru
ping -S 192.168.10.2 http://www.ya.ru
пинги проходят, с существенно различным лагом ответа
пытаюсь извне пинговать адрес 6.6.6.6, ответ приходит с адреса первого провайдера. :-(

пытаюсь организовать условную балансировку трафика следующим скриптом:

Код: Выделить всё

ip1=192.168.10.2
ip2=6.6.6.6

if1=fxp0
if2=tun0

gw1=192.168.10.1
gw2=6.6.6.6

ipfw -q flush

natd -p 8668 -a $ip1 -u -redirect_port tcp 192.168.1.2:80 80 -l -log_denied -use_sockets -same_ports
natd -p 8669 -u -n tun0

ipfw add divert 8668 ip from any to $ip1 recv $if1
ipfw add divert 8669 ip from any to $ip2 recv $if2
ipfw add check-state
ipfw add prob 0.5 divert 8668 ip from 192.168.1.0/24 to any xmit $if1 keep-state
ipfw add divert 8669 ip from 192.168.1.0/24 to any xmit $if2 keep-state
ipfw add fwd $gw1 log ip from $ip1 to any out xmit $if1
ipfw add fwd $gw2 log ip from $ip2 to any out xmit $if2
ipfw add allow log ip from any to any
не работает.
кроме того, как только начинаю извне обращаться на проброшенный сервис -- резко растёт количество счётчиков на правиле с prob 0.5 и natd начинает есть всё процессорное время.
подскажите, что можно поправить? куда лучше смотреть?
от сервера не очень близко, поэтому ошибки конфигурирования исправляю перезагрузкой (или сервера или правил фаервола) по команде at. (естественно, при потере связи с сервером)

Re: балансировка внешних каналов

Добавлено: 2011-08-25 9:26:42
Morty
наверно не в тему ответ будет тк тут ipfw
но пускай будет http://house.hcn-strela.ru/BSDCert/BSDA ... alance-out

Re: балансировка внешних каналов

Добавлено: 2011-08-25 14:20:07
telo
да, спасибо, это видел. но также интересует вариант с ipfw

Re: балансировка внешних каналов

Добавлено: 2011-08-27 14:01:22
ADRE
поискать в гугле: carp freebsd