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

setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-12 20:45:43
hsasha
Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей IP адресов через DHCP.
На FreeBSD 8.2 соответственно поднимаем 2 таблицы маршрутизации и через setfib 1 и 2 запускаем dhcpd демон. Адреса выдаються но с одинаковыми основными шлюзами и весь трафик который должен ходить через шлюз 2 канала setfib 2 таблицы, почему-то ходит через основной шлюз 1 канала.
В чём проблема? Как разрулить трафик по по разным интерфейсам?
Вот так запускаю dhclient:

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

setfib -1 /sbin/dhclient -c /etc/dhclient.conf vlan3002
setfib -2 /sbin/dhclient -c /etc/dhclient.conf vlan3003
потом скрипт /etc/dhclient-exit-hooks

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

#!/bin/sh

case $reason in
BOUND|RENEW|REBIND|REBOOT)
   if [ "$interface" = "vlan3002" ]
then
        /sbin/ipfw nat 1 delete
        /sbin/ipfw nat 1 config ip $new_ip_address reset same_ports deny_in unreg_only
        /usr/sbin/setfib -1 /sbin/route delete default
        /usr/sbin/setfib -1 /sbin/route add default $new_routers
fi
if [ "$interface" = "vlan3003" ]
then
        /sbin/ipfw nat 2 delete
        /sbin/ipfw nat 2 config ip $new_ip_address reset same_ports deny_in unreg_only
        /usr/sbin/setfib -2 /sbin/route delete default
        /usr/sbin/setfib -2 /sbin/route add default $new_routers
fi
esac
В итоге весь трафф идет через vlan3002 т.е. через тот интерфейс который раньше получил default gateway.
Как сделать чтобы работало с одинаковыми шлюзами?
Подозреваю что это баг либо недоработка setfib.
Подскажите как исправить?


P.S. Проблему обсуждал уже на форуме http://www.opennet.ru/openforum/vsluhfo ... 93726.html но так и не смог решить. Очень надеюсь что тут поможете или хотябы скажите куда копать?

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-16 19:44:45
fessoga5
У тебя же конфиг dhcp прописывает шлюз, тебе надо оптион 82 замутить в dhcp, или два dhcp держать.

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-17 14:41:40
skeletor
Если шлюз одинаковый, то попробуй использовать lagg (а там и отказоустойчивость, и балансировка)

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-23 21:08:30
hsasha
Удалось таки запустить мою конфигурацию, однако появились проблемы с arp таблицей.
Во-первых, для того чтобы конфигурация заработала пришлось добавить строки для пингования любого хоста в интернете через соответствующую таблицу маршрутизации для резольва MAC адреса основного шлюза, для этого были добавлены команды в /etc/dhclient-exit-hooks в итоге получился такой файл:

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

#!/bin/sh

case $reason in
BOUND|RENEW|REBIND|REBOOT)
   if [ "$interface" = "vlan3002" ]
then
        /sbin/ipfw nat 1 delete
        /sbin/ipfw nat 1 config ip $new_ip_address reset same_ports deny_in unreg_only
        /usr/sbin/setfib -1 /sbin/route delete default
        /usr/sbin/setfib -1 /sbin/route add default -ifp vlan3002 $new_routers
        /usr/sbin/setfib -1 /sbin/ping -c 4 8.8.8.8
fi
if [ "$interface" = "vlan3003" ]
then
        /sbin/ipfw nat 2 delete
        /sbin/ipfw nat 2 config ip $new_ip_address reset same_ports deny_in unreg_only
        /usr/sbin/setfib -2 /sbin/route delete default
        /usr/sbin/setfib -2 /sbin/route add default -ifp vlan3003 $new_routers
        /usr/sbin/setfib -2 /sbin/ping -c 4 8.8.8.8
fi
esac
Во-вторых, не всегда такая конфигурация стартует успешно, бывает что через 3-й 4-й раз перезагрузки через один из каналов трафик не проходит, из-за отсутствия соответствующей записи в arp таблице.

вот пример arp таблицы с которой всё работает:
testing# arp -a -nn
1. (37.54.160.249) at b0:48:7a:85:c1:4c on vlan3003 permanent [vlan]
2. (37.54.160.1) at 00:24:dc:44:7f:c0 on vlan3003 expires in 738 seconds [vlan]
3. (37.54.166.124) at b0:48:7a:85:b1:4f on vlan3002 permanent [vlan]
4. (37.54.167.255) at (incomplete) on vlan3002 expired [vlan]
5. (37.54.160.1) at 00:24:dc:44:7f:c0 on vlan3002 expires in 260 seconds [vlan]

Но бывает что отсутствует одна из-записей 2 или 5, тогда пинг не проходит через соответствующий канал.
Как побороть эту проблему?

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-25 17:09:38
fessoga5
Если я все верно понял у тебя нет arp записей шлюз - mac, так если ты знаешь его ip то ты же можешь добавить статический arp и наслаждаться, делать можно такой командой. arp -s ipaddress macaddress

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2012-12-26 22:11:00
hsasha
Так вся проблема в том что IP шлюза не всегда может быть одинаковый, и соответственно нельзя статически привязывать IP к MAC.

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2013-01-01 14:50:40
hsasha
Переодически в /var/log/messages появляються такие ошибки:
Jan 1 11:17:17 testing routed[951]: vlan3003 (37.54.160.249/21) is duplicated by vlan3002 (37.54.166.124/21)
Jan 1 11:17:17 testing routed[951]: 0.0.0.0 (mask 0x10120000) --> 37.54.160.1 disappeared from kernel

Re: setfib и 2 канала с одинаковыми основными шлюзами

Добавлено: 2013-01-12 15:06:54
fessoga5
Стартовый скрипт при запуске pppoe в mpd