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

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
telo
рядовой
Сообщения: 21
Зарегистрирован: 2011-07-28 19:18:25

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

Непрочитанное сообщение telo » 2011-08-24 13:26:25

всем доброго дня!

была следующая сеть:
(локальная 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. (естественно, при потере связи с сервером)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

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

Непрочитанное сообщение Morty » 2011-08-25 9:26:42

наверно не в тему ответ будет тк тут ipfw
но пускай будет http://house.hcn-strela.ru/BSDCert/BSDA ... alance-out

telo
рядовой
Сообщения: 21
Зарегистрирован: 2011-07-28 19:18:25

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

Непрочитанное сообщение telo » 2011-08-25 14:20:07

да, спасибо, это видел. но также интересует вариант с ipfw

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

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

Непрочитанное сообщение ADRE » 2011-08-27 14:01:22

поискать в гугле: carp freebsd
//del