URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93726
[ Назад ]

Исходное сообщение
"setfib и 2 канала с одинаковыми основными шлюзами"

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

Содержание

Сообщения в этом обсуждении
"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено pavel , 25-Авг-12 23:52 
> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
> IP адресов через DHCP.
> На FreeBSD 8.2 соответственно поднимаем 2 таблицы маршрутизации и через setfib 1
> и 2 запускаем dhcpd демон. Адреса выдаються но с одинаковыми основными
> шлюзами и весь трафик который должен ходить через шлюз 2 канала
> setfib 2 таблицы, почему-то ходит через основной шлюз 1 канала.
> В чём проблема? Как разрулить трафик по по разным интерфейсам?

dhclient надо запускать,adslи включаются в разные эзернеты,gateway_enable=no
setfib для программ тоже надо выставить.Вообще-то с одной и той же сетью может непойти


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 26-Авг-12 00:15 
>> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
>> IP адресов через DHCP.
>> На FreeBSD 8.2 соответственно поднимаем 2 таблицы маршрутизации и через setfib 1
>> и 2 запускаем dhcpd демон. Адреса выдаються но с одинаковыми основными
>> шлюзами и весь трафик который должен ходить через шлюз 2 канала
>> setfib 2 таблицы, почему-то ходит через основной шлюз 1 канала.
>> В чём проблема? Как разрулить трафик по по разным интерфейсам?
> dhclient надо запускать,adslи включаются в разные эзернеты,gateway_enable=no
> setfib для программ тоже надо выставить.Вообще-то с одной и той же сетью
> может непойти

gateway_enable здесь нипричём.

Вот так запускаю 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.
Подскажите как исправить?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено reader , 26-Авг-12 10:28 
>[оверквотинг удален]
> default
>         /usr/sbin/setfib -2 /sbin/route add
> default $new_routers
> fi
> esac
> В итоге весь трафф идет через vlan3002 т.е. через тот интерфейс который
> раньше получил default gateway.
> Как сделать чтобы работало с одинаковыми шлюзами?
> Подозреваю что это баг либо недоработка setfib.
> Подскажите как исправить?

а если указывать не $new_routers , а интерфейс.

попробуйте разнести модемы на разные интерфейсы

и нужно указывать кто через какую таблицу работает


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 26-Авг-12 11:59 
>[оверквотинг удален]
>>         /usr/sbin/setfib -2 /sbin/route add
>> default $new_routers
>> fi
>> esac
>> В итоге весь трафф идет через vlan3002 т.е. через тот интерфейс который
>> раньше получил default gateway.
>> Как сделать чтобы работало с одинаковыми шлюзами?
>> Подозреваю что это баг либо недоработка setfib.
>> Подскажите как исправить?
> а если указывать не $new_routers , а интерфейс.

Как для команды route указать интерфейс а не адрес?

> попробуйте разнести модемы на разные интерфейсы

Они на разных интерфейсах vlan3002 и vlan3003.

> и нужно указывать кто через какую таблицу работает

Это я знаю.
Просто проблема в том что даже выполнив запрос напрямую от имени сервера setfib 2 ping 8.8.8.8 ICMP пакеты отправляються с IP адреса интерфейса vlan3002 а не vlan3003

P.S. Меня интересует ещё такой вопрос: Теоретически setfib может работать с одинаковыми шлюзами на интерфейсах или нет? Тоесть можна поменять что-то в исходниках чтобы заработало?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено reader , 27-Авг-12 12:06 
>[оверквотинг удален]
>>> default $new_routers
>>> fi
>>> esac
>>> В итоге весь трафф идет через vlan3002 т.е. через тот интерфейс который
>>> раньше получил default gateway.
>>> Как сделать чтобы работало с одинаковыми шлюзами?
>>> Подозреваю что это баг либо недоработка setfib.
>>> Подскажите как исправить?
>> а если указывать не $new_routers , а интерфейс.
> Как для команды route указать интерфейс а не адрес?

route add -net 0/0 -link em1

>[оверквотинг удален]
>> попробуйте разнести модемы на разные интерфейсы
> Они на разных интерфейсах vlan3002 и vlan3003.
>> и нужно указывать кто через какую таблицу работает
> Это я знаю.
> Просто проблема в том что даже выполнив запрос напрямую от имени сервера
> setfib 2 ping 8.8.8.8 ICMP пакеты отправляються с IP адреса интерфейса
> vlan3002 а не vlan3003
> P.S. Меня интересует ещё такой вопрос: Теоретически setfib может работать с одинаковыми
> шлюзами на интерфейсах или нет? Тоесть можна поменять что-то в исходниках
> чтобы заработало?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 26-Авг-12 21:49 
> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
> IP адресов через DHCP.

... граблей на этом пути много, а вот данных от Вас маловато. Для начала хотелосьбы увидеть собрано ли ядро с:
options   RADIX_MPATH   <--- а вот это интересненько ;)
options   ROUTETABLES=3 <--- нужно думать, что да, если setfib работает ;)

для продолжения - вывод setfib 0 netstat -nr, setfib 1 netstat -nr, setfib 2 netstat -nr. А дальше поглядим ...


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 10:52 
>> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
>> IP адресов через DHCP.
> ... граблей на этом пути много, а вот данных от Вас маловато.
> Для начала хотелосьбы увидеть собрано ли ядро с:
> options   RADIX_MPATH   <--- а вот это интересненько ;)

такой опции нет.

> options   ROUTETABLES=3 <--- нужно думать, что да, если setfib работает
> ;)

такая опция есть.

> для продолжения - вывод setfib 0 netstat -nr, setfib 1 netstat -nr,
> setfib 2 netstat -nr. А дальше поглядим ...

setfib 0 - это основная таблица у меня пока не используеться.

testing# setfib 1 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0       28 vlan30
37.54.160.0/21     link#6             U           0        0 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0

testing# setfib 2 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0        0 vlan30
37.54.160.0/21     link#6             U           0        0 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0

testing# ifconfig
vlan3002: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether b0:48:7a:85:b1:4f
        inet 37.54.162.211 netmask 0xfffff800 broadcast 37.54.167.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 3002 parent interface: ste0
vlan3003: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether b0:48:7a:85:c1:4c
        inet 37.54.162.220 netmask 0xfffff800 broadcast 37.54.167.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 3003 parent interface: ste0


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 12:46 
>> options   RADIX_MPATH   <--- а вот это интересненько ;)
> такой опции нет.

хм... и как Вы себе представляете решение Вашей задачи на ядре FreeBSD, собранном без данной опции ? - пересобирайте ...

> setfib 0 - это основная таблица у меня пока не используеться.

.. ну раз у ВАС не используется, то и носите ВЫ пакеты между интерфейсами :):):)

А если серьезно - у FreeBSD это СИСТЕМНАЯ таблица маршрутизации, и как, например, заставить ядро использовать 1,2,3... и т.д. - лично я не знаю... Так что нулевая - пользуется ядром ВСЕГДА. Другой вопрос, что Вы можете добавить еще сотню-вторую таблиц маршрутизации, и пропускать трафик клиентов, или конкретных приложений сервера - по ним, но сие действие никак не отменяет "телодвижения" самой ОС согласно правил нулевой таблицы.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:09 
>[оверквотинг удален]
> собранном без данной опции ? - пересобирайте ...
>> setfib 0 - это основная таблица у меня пока не используеться.
> .. ну раз у ВАС не используется, то и носите ВЫ пакеты
> между интерфейсами :):):)
> А если серьезно - у FreeBSD это СИСТЕМНАЯ таблица маршрутизации, и как,
> например, заставить ядро использовать 1,2,3... и т.д. - лично я не
> знаю... Так что нулевая - пользуется ядром ВСЕГДА. Другой вопрос, что
> Вы можете добавить еще сотню-вторую таблиц маршрутизации, и пропускать трафик клиентов,
> или конкретных приложений сервера - по ним, но сие действие никак
> не отменяет "телодвижения" самой ОС согласно правил нулевой таблицы.

мне имеенно это и нужно, разделять траффик клиентов, для ядра пока интернета не нужно.
ядро собрал с опцией options   RADIX_MPATH не помогло, проблема осталась.
Клиентов разделяю так:
01001 setfib 1 ip from 192.168.1.0/24 to any
01002 setfib 2 ip from 192.168.2.0/24 to any
НАТы подняты на обоих интерфейсах.
Как проверить наличие RADIX_MPATH в ядре?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 14:23 
> для ядра пока интернета не нужно.
> ядро собрал с опцией options   RADIX_MPATH не помогло, проблема осталась.
> Как проверить наличие RADIX_MPATH в ядре?

setfib 0 netstat -nr - можно показать ? ...



"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 27-Авг-12 14:29 
>> для ядра пока интернета не нужно.
>> ядро собрал с опцией options   RADIX_MPATH не помогло, проблема осталась.
>> Как проверить наличие RADIX_MPATH в ядре?
> setfib 0 netstat -nr - можно показать ? ...

RADIX_MPATH  как не работал так и не работает, и он бы вам и не помог, он добавляет два одинаковых роута и в теории можно использовать для балансировки и бекапа, но ни то ни другое не работает.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:40 
>>> для ядра пока интернета не нужно.
>>> ядро собрал с опцией options   RADIX_MPATH не помогло, проблема осталась.
>>> Как проверить наличие RADIX_MPATH в ядре?
>> setfib 0 netstat -nr - можно показать ? ...
> RADIX_MPATH  как не работал так и не работает, и он бы
> вам и не помог, он добавляет два одинаковых роута и в
> теории можно использовать для балансировки и бекапа, но ни то ни
> другое не работает.

testing# setfib 0 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
37.54.160.82       link#6             UHS         0        0    lo0
37.54.162.211      link#5             UHS         0        0    lo0
127.0.0.1          link#4             UH          0     1637    lo0
172.16.0.0/16      192.168.0.14       UGS         0        0   ste0
192.168.0.0/28     link#1             U           0    13254   ste0 =>
192.168.0.0/16     192.168.0.14       UGS         1      987   ste0
192.168.0.13       link#1             UHS         0        0    lo0

IP адреса уже поменялись но они всёравно находятся в одной подсети и с одинаковым шлюзом 37.54.160.1

testing# setfib 1 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0     5865 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        1   ste0
testing# setfib 2 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0    12266 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 27-Авг-12 14:48 
Почему идет через первый канал, обьясняю:
ваши две таблицы роутов отрабатывают правильно, но и в первой и во второй адрес default gateway 37.54.160.1, ядро видит это и ему нужен мак, а мак не разграничен таблицами, арп таблица только одна и он берет мак 37.54.160.1 с первого канала и в первый канал его и отправляет. Выход на одном канале адсль переведите модем с бриджа в роутер, смените адреса на одном интерфейсе фри, гейтвеи будут разные и все должно заработать.

"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 14:57 
сорри, но хватит бредить тем, что не осилили сделать...

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
        inet XXX.XXX.14.230 --> XXX.XX.14.18 netmask 0xffffffff
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
        inet XXX.XXX.68.152 --> XXX.XX.14.18 netmask 0xffffffff

setfib 0 netstat -nr:
default            ng0                US          0  7211198    ng0

setfib 1 netstat -nr:
default            ng1                US          0   916645    ng1

setfib 2 netstat -nr:
default            ng1                US          0        0    ng1

ЧЯНТД, уважаемый? или вопрос к знатоку - почему оно РАБОТАЕТ?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 14:52 
...а теперь задайте в таблицах (ка Вам и писали ранее) default ни через ip, а через -iface:
   setfib X route add default -iface vlanXXX
... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост через первую и вторую таблицу маршрутизации (setfib X ping YYY)... по идее должно заработать ...

"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:56 
> ...а теперь задайте в таблицах (ка Вам и писали ранее) default ни
> через ip, а через -iface:
>    setfib X route add default -iface vlanXXX
> ... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост
> через первую и вторую таблицу маршрутизации (setfib X ping YYY)... по
> идее должно заработать ...

Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через vlan3002 т.е. через IP первого канала.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 14:59 
>> ...а теперь задайте в таблицах (ка Вам и писали ранее) default ни
>> через ip, а через -iface:
>>    setfib X route add default -iface vlanXXX
>> ... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост
>> через первую и вторую таблицу маршрутизации (setfib X ping YYY)... по
>> идее должно заработать ...
> Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через
> vlan3002 т.е. через IP первого канала.

а давайте по порядку ;) задать маршруты через имена интерфейсов получилось? у Вас вывод netstat -nr должен быть типа:
default            ng1                US          0        0    ng1


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:57 
>...а теперь задайте в таблицах (ка Вам и писали ранее) default ни через ip, а через -iface:
>   setfib X route add default -iface vlanXXX
>... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост через >первую и вторую таблицу маршрутизации (setfib X ping YYY)... по идее должно заработать ...

Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через vlan3002 т.е. через IP первого канала.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 14:43 
> RADIX_MPATH  как не работал так и не работает, и он бы
> вам и не помог, он добавляет два одинаковых роута и в
> теории можно использовать для балансировки и бекапа, но ни то ни
> другое не работает.

1 - читаем внимательно - у человека должно построиться два маршрута с одинаковым ip-destination. Как по Вашему, это должно пройти без RADIX_MPATH ? ;) Попробуйте задать у себя без RADIX_MPATH два маршрута на один ip-destination, и не важно по ip или по iface...
2 - расскажу-ка я своему серверу, что оно "не работает", а то он, болезный, об этом ничего-то не знает, и чудно так работает в фактически описанной ТС конфигурации :)

... почему и прошу у ТС ВСЕ таблицы маршрутизации, а не только те, что он думает, что "используются"...


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:53 
>[оверквотинг удален]
>> другое не работает.
> 1 - читаем внимательно - у человека должно построиться два маршрута с
> одинаковым ip-destination. Как по Вашему, это должно пройти без RADIX_MPATH ?
> ;) Попробуйте задать у себя без RADIX_MPATH два маршрута на один
> ip-destination, и не важно по ip или по iface...
> 2 - расскажу-ка я своему серверу, что оно "не работает", а то
> он, болезный, об этом ничего-то не знает, и чудно так работает
> в фактически описанной ТС конфигурации :)
> ... почему и прошу у ТС ВСЕ таблицы маршрутизации, а не только
> те, что он думает, что "используются"...

Подскажите как мне быть в этой ситуации? Вариант с переводом одного модема в режим роутера по многим причинам не подходит.
Может как то исходники поправить или написать в конференцию разработчиков FreeBSD? Только как? Я никогда туда не обращался.
Я считаю что FreeBSD должна поддерживать такую конфигурацию сети!


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 14:58 
>...а теперь задайте в таблицах (ка Вам и писали ранее) default ни через ip, а через -iface:
>   setfib X route add default -iface vlanXXX
>... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост через >первую и вторую таблицу маршрутизации (setfib X ping YYY)... по идее должно заработать ...

Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через vlan3002 т.е. через IP первого канала.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:00 
а давайте по порядку ;) задать маршруты через имена интерфейсов получилось? у Вас вывод netstat -nr должен быть типа:
default            ng1                US          0        0    ng1

"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 27-Авг-12 15:05 
> а давайте по порядку ;) задать маршруты через имена интерфейсов получилось? у
> Вас вывод netstat -nr должен быть типа:
> default            
> ng1          
>      US      
>     0      
>  0    ng1

я только не пойму причем там туннели, туннель модем у него поднимает а у него просто ethernet с айпишником, т.к. модем бриджом работает, и прописать роут через интерфейс толку, работать не будет, если б туннель то да работало бы.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:07 
>[оверквотинг удален]
>> Вас вывод netstat -nr должен быть типа:
>> default
>> ng1
>>      US
>>     0
>>  0    ng1
> я только не пойму причем там туннели, туннель модем у него поднимает
> а у него просто ethernet с айпишником, т.к. модем бриджом работает,
> и прописать роут через интерфейс толку, работать не будет, если б
> туннель то да работало бы.

Да, через тунель это работает без проблем поскольку там Point-to-Point.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:10 
> я только не пойму причем там туннели, туннель модем у него поднимает
> а у него просто ethernet с айпишником, т.к. модем бриджом работает,
> и прописать роут через интерфейс толку, работать не будет, если б
> туннель то да работало бы.

в данном конкретном случае Вы видите какую-то разницу между туннелем и ethernet ? ... просветите, интересно...


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:07 
До тех пор, пока у Вас будет :

setfib 1 netstat -nr
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0     5865 vlan30
                   ^^^^^^^^^^^

setfib 2 netstat -nr
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0    12266 vlan30
                   ^^^^^^^^^^^

действительно, как и писал товарищь выше - все будет уходить в первый (по порядку подрыва) vlan - "и это правильно" :)


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:09 
>[оверквотинг удален]
>         Flags  
>  Refs      Use  Netif Expire
> default            
> 37.54.160.1        UGS  
>       0    12266
> vlan30
>            
>        ^^^^^^^^^^^
> действительно, как и писал товарищь выше - все будет уходить в первый
> (по порядку подрыва) vlan - "и это правильно" :)

Я согласен что это правильно, и поэтому и спросил теоретически возможна ли такая конфигурация в FreeBSD?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:13 
> Я согласен что это правильно, и поэтому и спросил теоретически возможна ли
> такая конфигурация в FreeBSD?

... бр-р-р-р... так Вам и выше писали, и я писал - ПЕРЕВЕСТИ с ip на iface. По-другому оно работать НЕ будет. Только с маршрутизацией, где destination - имя интерфейса...


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:13 
>[оверквотинг удален]
>> default
>> 37.54.160.1        UGS
>>       0    12266
>> vlan30
>>
>>        ^^^^^^^^^^^
>> действительно, как и писал товарищь выше - все будет уходить в первый
>> (по порядку подрыва) vlan - "и это правильно" :)
> Я согласен что это правильно, и поэтому и спросил теоретически возможна ли
> такая конфигурация в FreeBSD?

только что выполнил две команды:
setfib 2 route delete default
setfib 2 route add default -iface vlan3003

теперь видим такое:
testing# setfib 2 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            b0:48:7a:85:c1:4c  US          0       60 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           1       54   ste0

testing# setfib 2 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Invalid argument
ping: sendto: Invalid argument
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss

что дальше?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:20 
> только что выполнил две команды:
> setfib 2 route delete default
> setfib 2 route add default -iface vlan3003

... маловато будет - сносите и переписывайте оба vlan-а ...

> testing# setfib 2 netstat -nr
> Routing tables

... не смутило, куда указывает "Expire" ? ...


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:22 
>> только что выполнил две команды:
>> setfib 2 route delete default
>> setfib 2 route add default -iface vlan3003
> ... маловато будет - сносите и переписывайте оба vlan-а ...
>> testing# setfib 2 netstat -nr
>> Routing tables
> ... не смутило, куда указывает "Expire" ? ...

переписал скрипт /etc/dhclient-exit-hooks и перезагрузился. Достаточно?

testing# setfib 1 netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            b0:48:7a:85:b1:4f  US          0       49 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0       10   ste0
testing# setfib 2 netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            b0:48:7a:85:c1:4c  US          0        2 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0

имеем:
testing# setfib 1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Invalid argument
ping: sendto: Invalid argument
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
testing# setfib 2 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Invalid argument
ping: sendto: Invalid argument
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:24 
а это мы сейчас у netstat и ping спросим ;)

"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:25 
> а это мы сейчас у netstat и ping спросим ;)

теперь вообще нету пинга!


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 27-Авг-12 15:27 
> а это мы сейчас у netstat и ping спросим ;)

как вы не поймете не будет у него на виланах работать iface, он работает только на point-to-point, где не нада указывать айпи адрес назначения т.к. есть точка начала и точка конца, на ethernet нада указывать обязательно.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 15:42 
> как вы не поймете не будет у него на виланах работать iface,
> он работает только на point-to-point, где не нада указывать айпи адрес
> назначения т.к. есть точка начала и точка конца, на ethernet нада
> указывать обязательно.

упс! А вот-здесь признаю свою ошибку. С несколькими vlan-ами на одной сетевухе - действительно неработоспособно - MAC адрес у всего "пакована" vlan-ов и сетевухи один и тот-же :(


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 15:53 
>> как вы не поймете не будет у него на виланах работать iface,
>> он работает только на point-to-point, где не нада указывать айпи адрес
>> назначения т.к. есть точка начала и точка конца, на ethernet нада
>> указывать обязательно.
> упс! А вот-здесь признаю свою ошибку. С несколькими vlan-ами на одной сетевухе
> - действительно неработоспособно - MAC адрес у всего "пакована" vlan-ов и
> сетевухи один и тот-же :(

Насчёт MAC адресов я позаботился и поменял их в rc.conf
ifconfig ste0 up promisc
ifconfig_ste0="inet 192.168.0.13 netmask 255.255.255.240"
cloned_interfaces="vlan3002 vlan3003"
ifconfig vlan3002 ether b0:48:7a:85:b1:4f
ifconfig_vlan3002="vlan 3002 vlandev ste0 up"
ifconfig vlan3003 ether b0:48:7a:85:c1:4c
ifconfig_vlan3003="vlan 3003 vlandev ste0 up"

дальше /etc/rc.local у меня такой:
setfib -1 /sbin/dhclient -c /etc/dhclient.conf vlan3002
setfib -2 /sbin/dhclient -c /etc/dhclient.conf vlan3003


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 16:05 
> ifconfig vlan3002 ether b0:48:7a:85:b1:4f
> ifconfig vlan3003 ether b0:48:7a:85:c1:4c

... с mac-ом самой сетевой не совпадают ?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 16:11 
>> ifconfig vlan3002 ether b0:48:7a:85:b1:4f
>> ifconfig vlan3003 ether b0:48:7a:85:c1:4c
> ... с mac-ом самой сетевой не совпадают ?

Только что проверил, не совпадают.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 16:24 
> Только что проверил, не совпадают.

плохо ;) сорри, не где сейчас проверить, а можете попробовать перебить маршруты на :
route add default $new_routers -iface vlanXXXX


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 16:30 
>> Только что проверил, не совпадают.
> плохо ;) сорри, не где сейчас проверить, а можете попробовать перебить маршруты
> на :
> route add default $new_routers -iface vlanXXXX

testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
route: bad address: vlan3002


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено YuriStep , 27-Авг-12 16:55 
> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
> route: bad address: vlan3002

... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если найду решение - обязательно отпишусь ...



"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 27-Авг-12 17:02 
>> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
>> route: bad address: vlan3002
> ... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если
> найду решение - обязательно отпишусь ...

Могу дать доступ, чтобы не заморачиваться с виртуалкой.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 28-Авг-12 11:17 
>>> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
>>> route: bad address: vlan3002
>> ... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если
>> найду решение - обязательно отпишусь ...
> Могу дать доступ, чтобы не заморачиваться с виртуалкой.

ану попробуй:
route add -host 37.54.160.1 -link vlan3002 -iface
route add default -ifp vlan3002 37.54.160.1

setfib 1 route add -host 37.54.160.1 -link vlan3003 -iface
setfib 1 route add default -ifp vlan3003 37.54.160.1


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 28-Авг-12 11:29 
>>>> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
>>>> route: bad address: vlan3002
>>> ... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если
>>> найду решение - обязательно отпишусь ...
>> Могу дать доступ, чтобы не заморачиваться с виртуалкой.
> ану попробуй:
> route add -host 37.54.160.1 -link vlan3002 -iface
> route add default -ifp vlan3002 37.54.160.1
> setfib 1 route add -host 37.54.160.1 -link vlan3003 -iface
> setfib 1 route add default -ifp vlan3003 37.54.160.1

сделал:
/usr/sbin/setfib -1 /sbin/route delete default
/usr/sbin/setfib -1 /sbin/route add -host 37.54.160.1 -link vlan3002 -iface
/usr/sbin/setfib -1 /sbin/route add default -ifp vlan3002 37.54.160.1
/usr/sbin/setfib -2 /sbin/route delete default
/usr/sbin/setfib -2 /sbin/route add -host 37.54.160.1 -link vlan3003 -iface
/usr/sbin/setfib -2 /sbin/route add default -ifp vlan3003 37.54.160.1

testing# setfib 1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=52 time=59.164 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=62.139 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=58.597 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 58.597/59.967/62.139/1.553 ms
testing# setfib 2 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Invalid argument
ping: sendto: Invalid argument
ping: sendto: Invalid argument
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

testing# setfib 1 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0       13 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
37.54.160.1        76.6c.61.6e.33.30.30.32.0.0.0.fa.ce UHS         0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0
testing# setfib 2 netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.54.160.1        UGS         0       11 vlan30
37.54.160.0/21     link#5             U           0        0 vlan30 =>
37.54.160.0/21     link#6             U           0        0 vlan30
37.54.160.1        76.6c.61.6e.33.30.30.33.0.0.0.fa.ce UHS         0        0 vlan30
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/28     link#1             U           0        0   ste0


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено 1 , 28-Авг-12 12:54 
проверил у себя на виланах с одинаковыми маками, у меня все работает:
ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:26:55:c8:e9:b8
        inet 192.168.100.33 netmask 0xffffff00 broadcast 192.168.100.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
vlan3002: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:26:55:c8:e9:b8
        inet6 fe80::226:55ff:fec8:e9b8%vlan3002 prefixlen 64 scopeid 0x7
        inet 37.54.162.211 netmask 0xfffff800 broadcast 37.54.167.255
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 3002 parent interface: em0
vlan3003: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:26:55:c8:e9:b8
        inet6 fe80::226:55ff:fec8:e9b8%vlan3003 prefixlen 64 scopeid 0x8
        inet 37.54.162.220 netmask 0xfffff800 broadcast 37.54.167.255
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 3003 parent interface: em0

netstat -rnWf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use    Mtu    Netif Expire
default            37.54.160.1        UGS         0       17   1500 vlan3002
37.54.160.0/21     link#7             U           0       15   1500 vlan3002 =>
37.54.160.0/21     link#8             U           0        7   1500 vlan3003
37.54.162.211      link#7             UHS         1        0  16384      lo0
37.54.162.220      link#8             UHS         0        0  16384      lo0
127.0.0.1          link#6             UH          0        0  16384      lo0
192.168.1.254      link#3             UHS         0        0  16384      lo0
192.168.100.0/24   link#2             U           0       63   1500      em0
192.168.100.33     link#2             UHS         1        0  16384      lo0

setfib 1 netstat -rnWf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use    Mtu    Netif Expire
default            37.54.160.1        UGS         0        2   1500 vlan3003
37.54.160.0/21     link#7             U           0        0   1500 vlan3002 =>
37.54.160.0/21     link#8             U           0        0   1500 vlan3003
127.0.0.1          link#6             UH          0        0  16384      lo0
192.168.100.0/24   link#2             U           0        0   1500      em0

видите, в таблицах разные default_gateway
ping через vlan3002
ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=64 time=0.630 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.630/0.630/0.630/0.000 ms

tcpdump -nvpi vlan3002
tcpdump: listening on vlan3002, link-type EN10MB (Ethernet), capture size 65535 bytes
13:50:11.207752 IP (tos 0x0, ttl 64, id 350, offset 0, flags [none], proto ICMP (1), length 84)
    37.54.162.211 > 8.8.8.8: ICMP echo request, id 33029, seq 0, length 64
13:50:11.208341 IP (tos 0x0, ttl 64, id 44, offset 0, flags [none], proto ICMP (1), length 84)
    8.8.8.8 > 37.54.162.211: ICMP echo reply, id 33029, seq 0, length 64
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel

ping через vlan3003
setfib 1 ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=64 time=0.526 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.526/0.526/0.526/0.000 ms

tcpdump -nvpi vlan3003
tcpdump: listening on vlan3003, link-type EN10MB (Ethernet), capture size 65535 bytes
13:51:00.445624 IP (tos 0x0, ttl 64, id 393, offset 0, flags [none], proto ICMP (1), length 84)
    37.54.162.220 > 8.8.8.8: ICMP echo request, id 33541, seq 0, length 64
13:51:00.446113 IP (tos 0x0, ttl 64, id 45, offset 0, flags [none], proto ICMP (1), length 84)
    8.8.8.8 > 37.54.162.220: ICMP echo reply, id 33541, seq 0, length 64
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel

айпи ваши, роуты:
route add default -ifp vlan3002 37.54.160.1
setfib 1 route add default -ifp vlan3003 37.54.160.1


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 28-Авг-12 14:26 
>[оверквотинг удален]
> proto ICMP (1), length 84)
>     8.8.8.8 > 37.54.162.220: ICMP echo reply, id 33541,
> seq 0, length 64
> ^C
> 2 packets captured
> 2 packets received by filter
> 0 packets dropped by kernel
> айпи ваши, роуты:
> route add default -ifp vlan3002 37.54.160.1
> setfib 1 route add default -ifp vlan3003 37.54.160.1

А у меня не работает. vlan3002 кидал даже в основную системную таблицу (без setfib) не помогло.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 01-Сен-12 00:38 
>[оверквотинг удален]
>> seq 0, length 64
>> ^C
>> 2 packets captured
>> 2 packets received by filter
>> 0 packets dropped by kernel
>> айпи ваши, роуты:
>> route add default -ifp vlan3002 37.54.160.1
>> setfib 1 route add default -ifp vlan3003 37.54.160.1
> А у меня не работает. vlan3002 кидал даже в основную системную таблицу
> (без setfib) не помогло.

Подскажите как мне правильно диагностировать проблему?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 16-Сен-12 00:16 
>[оверквотинг удален]
>>> ^C
>>> 2 packets captured
>>> 2 packets received by filter
>>> 0 packets dropped by kernel
>>> айпи ваши, роуты:
>>> route add default -ifp vlan3002 37.54.160.1
>>> setfib 1 route add default -ifp vlan3003 37.54.160.1
>> А у меня не работает. vlan3002 кидал даже в основную системную таблицу
>> (без setfib) не помогло.
> Подскажите как мне правильно диагностировать проблему?

Не могу решить эту проблему. Всётаки проблема с одинаковыми MAC адресами основного шлюза и мне кажется что нужно тут копать в этом направлении. Вот нашёл попытки решить эту проблему https://groups.google.com/forum/?fromgroups=#!topic/uafug/br...

Но это очёнь кривое решение!


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 04-Ноя-12 14:14 
>[оверквотинг удален]
>>>> айпи ваши, роуты:
>>>> route add default -ifp vlan3002 37.54.160.1
>>>> setfib 1 route add default -ifp vlan3003 37.54.160.1
>>> А у меня не работает. vlan3002 кидал даже в основную системную таблицу
>>> (без setfib) не помогло.
>> Подскажите как мне правильно диагностировать проблему?
> Не могу решить эту проблему. Всётаки проблема с одинаковыми MAC адресами основного
> шлюза и мне кажется что нужно тут копать в этом направлении.
> Вот нашёл попытки решить эту проблему https://groups.google.com/forum/?fromgroups=#!topic/uafug/br...
> Но это очёнь кривое решение!

Вот оно:

>>

В итоге ничего лучше чем такое:
1 прописываем на один интерфейс первый IP (1.1.1.2/24) + default->1.1.1.1
2 прописываем на второй инерфейс второй IP (1.1.1.3/32)
3 на второй интерфейс цепляем alias-ом совсем левый IP (например 10.0.0.3/24)
4 сотрим ARP для default-а (например получилось 00:11:22:33:44:55)
5 прописываем вручную "arp -s 10.0.0.1 00:11:22:33:44:55)
6 пишем правила ipfw для 1.1.1.2 "обычным" образом, для для 1.1.1.3
добавляем что-то вроде:

add pass ip from  1.1.1.3 to me
add pass ip from  1.1.1.3 to <локалка>

add fwd 10.0.0.1 ip from 10.0.0.3 to any

В результате все от 1.1.1.2 будет улетать через 1-й интерфейс,
а от 1.1.1.3 через второй.
Использовать 1.1.1.3 будет можно, но неудобно: во всех командах
нужно явно указывать какой source использовать (ping -S) или
явно вписывать IP в конфиги серверов. Использовать для
NAT-ов можно будет оба (доточив firewall и конфиги NAT-ов)
Пункты 3-4 автоматизировать и проделывать регулярно, чтобы не
зависить от смены оборулования провайдером

Решение кривое, но работать должно :)
>>

Вопрос как это всё автоматизировать при условии что каналов больше двух?
Проблема актуальна, прошу помочь решить. Или подскажите как написать разработчикам?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 13-Дек-12 00:18 
"проверил у себя на виланах с одинаковыми маками, у меня все работает:"

товарищ "1", пожалуйста, напиши болеё детально с конфигами каким чудом тебе удалось запустить на виртуалке конфигурацию с двумя одинаковыми основными шлюзами? Буду очень признателен.
Спасибо!


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено sirius , 13-Дек-12 02:55 
> "проверил у себя на виланах с одинаковыми маками, у меня все работает:"
> товарищ "1", пожалуйста, напиши болеё детально с конфигами каким чудом тебе удалось
> запустить на виртуалке конфигурацию с двумя одинаковыми основными шлюзами? Буду очень
> признателен.
> Спасибо!

ядро собрано с RADIX_MPATH, ROUTETABLES=2,
роуты
route add default -ifp vlan3002 37.54.160.1
setfib 1 route add default -ifp vlan3003 37.54.160.1
тут указываются выходные интерфейсы, дальше через ipfw setfib назначаете нужную таблицу для трафика. Больше ничего не настраивал.


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 23-Дек-12 22:07 
> ядро собрано с RADIX_MPATH, ROUTETABLES=2,
> роуты
> route add default -ifp vlan3002 37.54.160.1
> setfib 1 route add default -ifp vlan3003 37.54.160.1
> тут указываются выходные интерфейсы, дальше через ipfw setfib назначаете нужную таблицу
> для трафика. Больше ничего не настраивал.

Удалось таки запустить мою конфигурацию, однако появились проблемы с 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, тогда пинг не проходит через соответствующий канал.
Как побороть эту проблему?


"setfib и 2 канала с одинаковыми основными шлюзами"
Отправлено hsasha , 01-Янв-13 15:49 
Переодически в /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