Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей IP адресов через DHCP.
На FreeBSD 8.2 соответственно поднимаем 2 таблицы маршрутизации и через setfib 1 и 2 запускаем dhcpd демон. Адреса выдаються но с одинаковыми основными шлюзами и весь трафик который должен ходить через шлюз 2 канала setfib 2 таблицы, почему-то ходит через основной шлюз 1 канала.
В чём проблема? Как разрулить трафик по по разным интерфейсам?
> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
> IP адресов через DHCP.
> На FreeBSD 8.2 соответственно поднимаем 2 таблицы маршрутизации и через setfib 1
> и 2 запускаем dhcpd демон. Адреса выдаються но с одинаковыми основными
> шлюзами и весь трафик который должен ходить через шлюз 2 канала
> setfib 2 таблицы, почему-то ходит через основной шлюз 1 канала.
> В чём проблема? Как разрулить трафик по по разным интерфейсам?dhclient надо запускать,adslи включаются в разные эзернеты,gateway_enable=no
setfib для программ тоже надо выставить.Вообще-то с одной и той же сетью может непойти
>> Есть 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.
Подскажите как исправить?
>[оверквотинг удален]
> default
> /usr/sbin/setfib -2 /sbin/route add
> default $new_routers
> fi
> esac
> В итоге весь трафф идет через vlan3002 т.е. через тот интерфейс который
> раньше получил default gateway.
> Как сделать чтобы работало с одинаковыми шлюзами?
> Подозреваю что это баг либо недоработка setfib.
> Подскажите как исправить?а если указывать не $new_routers , а интерфейс.
попробуйте разнести модемы на разные интерфейсы
и нужно указывать кто через какую таблицу работает
>[оверквотинг удален]
>> /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 а не vlan3003P.S. Меня интересует ещё такой вопрос: Теоретически setfib может работать с одинаковыми шлюзами на интерфейсах или нет? Тоесть можна поменять что-то в исходниках чтобы заработало?
>[оверквотинг удален]
>>> 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 может работать с одинаковыми
> шлюзами на интерфейсах или нет? Тоесть можна поменять что-то в исходниках
> чтобы заработало?
> Есть 1 провайдер и 2 одинаковых ADSL канала от него и раздачей
> IP адресов через DHCP.... граблей на этом пути много, а вот данных от Вас маловато. Для начала хотелосьбы увидеть собрано ли ядро с:
options RADIX_MPATH <--- а вот это интересненько ;)
options ROUTETABLES=3 <--- нужно думать, что да, если setfib работает ;)для продолжения - вывод setfib 0 netstat -nr, setfib 1 netstat -nr, setfib 2 netstat -nr. А дальше поглядим ...
>> Есть 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 tablesInternet:
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 ste0testing# setfib 2 netstat -nr
Routing tablesInternet:
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 ste0testing# 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
>> options RADIX_MPATH <--- а вот это интересненько ;)
> такой опции нет.хм... и как Вы себе представляете решение Вашей задачи на ядре FreeBSD, собранном без данной опции ? - пересобирайте ...
> setfib 0 - это основная таблица у меня пока не используеться.
.. ну раз у ВАС не используется, то и носите ВЫ пакеты между интерфейсами :):):)
А если серьезно - у FreeBSD это СИСТЕМНАЯ таблица маршрутизации, и как, например, заставить ядро использовать 1,2,3... и т.д. - лично я не знаю... Так что нулевая - пользуется ядром ВСЕГДА. Другой вопрос, что Вы можете добавить еще сотню-вторую таблиц маршрутизации, и пропускать трафик клиентов, или конкретных приложений сервера - по ним, но сие действие никак не отменяет "телодвижения" самой ОС согласно правил нулевой таблицы.
>[оверквотинг удален]
> собранном без данной опции ? - пересобирайте ...
>> 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 в ядре?
> для ядра пока интернета не нужно.
> ядро собрал с опцией options RADIX_MPATH не помогло, проблема осталась.
> Как проверить наличие RADIX_MPATH в ядре?setfib 0 netstat -nr - можно показать ? ...
>> для ядра пока интернета не нужно.
>> ядро собрал с опцией options RADIX_MPATH не помогло, проблема осталась.
>> Как проверить наличие RADIX_MPATH в ядре?
> setfib 0 netstat -nr - можно показать ? ...RADIX_MPATH как не работал так и не работает, и он бы вам и не помог, он добавляет два одинаковых роута и в теории можно использовать для балансировки и бекапа, но ни то ни другое не работает.
>>> для ядра пока интернета не нужно.
>>> ядро собрал с опцией options RADIX_MPATH не помогло, проблема осталась.
>>> Как проверить наличие RADIX_MPATH в ядре?
>> setfib 0 netstat -nr - можно показать ? ...
> RADIX_MPATH как не работал так и не работает, и он бы
> вам и не помог, он добавляет два одинаковых роута и в
> теории можно использовать для балансировки и бекапа, но ни то ни
> другое не работает.testing# setfib 0 netstat -nr
Routing tablesInternet:
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 lo0IP адреса уже поменялись но они всёравно находятся в одной подсети и с одинаковым шлюзом 37.54.160.1
testing# setfib 1 netstat -nr
Routing tablesInternet:
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 tablesInternet:
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
Почему идет через первый канал, обьясняю:
ваши две таблицы роутов отрабатывают правильно, но и в первой и во второй адрес default gateway 37.54.160.1, ядро видит это и ему нужен мак, а мак не разграничен таблицами, арп таблица только одна и он берет мак 37.54.160.1 с первого канала и в первый канал его и отправляет. Выход на одном канале адсль переведите модем с бриджа в роутер, смените адреса на одном интерфейсе фри, гейтвеи будут разные и все должно заработать.
сорри, но хватит бредить тем, что не осилили сделать...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 0xffffffffsetfib 0 netstat -nr:
default ng0 US 0 7211198 ng0setfib 1 netstat -nr:
default ng1 US 0 916645 ng1setfib 2 netstat -nr:
default ng1 US 0 0 ng1ЧЯНТД, уважаемый? или вопрос к знатоку - почему оно РАБОТАЕТ?
...а теперь задайте в таблицах (ка Вам и писали ранее) default ни через ip, а через -iface:
setfib X route add default -iface vlanXXX
... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост через первую и вторую таблицу маршрутизации (setfib X ping YYY)... по идее должно заработать ...
> ...а теперь задайте в таблицах (ка Вам и писали ранее) default ни
> через ip, а через -iface:
> setfib X route add default -iface vlanXXX
> ... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост
> через первую и вторую таблицу маршрутизации (setfib X ping YYY)... по
> идее должно заработать ...Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через vlan3002 т.е. через IP первого канала.
>> ...а теперь задайте в таблицах (ка Вам и писали ранее) 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
>...а теперь задайте в таблицах (ка Вам и писали ранее) default ни через ip, а через -iface:
> setfib X route add default -iface vlanXXX
>... и поглядите, что будет говорить попытка пропинговать с сервера внешний хост через >первую и вторую таблицу маршрутизации (setfib X ping YYY)... по идее должно заработать ...Не получиться, поскольку даже пинг командой setfib 2 ping 8.8.8.8 уходит через vlan3002 т.е. через IP первого канала.
> RADIX_MPATH как не работал так и не работает, и он бы
> вам и не помог, он добавляет два одинаковых роута и в
> теории можно использовать для балансировки и бекапа, но ни то ни
> другое не работает.1 - читаем внимательно - у человека должно построиться два маршрута с одинаковым ip-destination. Как по Вашему, это должно пройти без RADIX_MPATH ? ;) Попробуйте задать у себя без RADIX_MPATH два маршрута на один ip-destination, и не важно по ip или по iface...
2 - расскажу-ка я своему серверу, что оно "не работает", а то он, болезный, об этом ничего-то не знает, и чудно так работает в фактически описанной ТС конфигурации :)... почему и прошу у ТС ВСЕ таблицы маршрутизации, а не только те, что он думает, что "используются"...
>[оверквотинг удален]
>> другое не работает.
> 1 - читаем внимательно - у человека должно построиться два маршрута с
> одинаковым ip-destination. Как по Вашему, это должно пройти без RADIX_MPATH ?
> ;) Попробуйте задать у себя без RADIX_MPATH два маршрута на один
> ip-destination, и не важно по ip или по iface...
> 2 - расскажу-ка я своему серверу, что оно "не работает", а то
> он, болезный, об этом ничего-то не знает, и чудно так работает
> в фактически описанной ТС конфигурации :)
> ... почему и прошу у ТС ВСЕ таблицы маршрутизации, а не только
> те, что он думает, что "используются"...Подскажите как мне быть в этой ситуации? Вариант с переводом одного модема в режим роутера по многим причинам не подходит.
Может как то исходники поправить или написать в конференцию разработчиков FreeBSD? Только как? Я никогда туда не обращался.
Я считаю что FreeBSD должна поддерживать такую конфигурацию сети!
>...а теперь задайте в таблицах (ка Вам и писали ранее) 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
> а давайте по порядку ;) задать маршруты через имена интерфейсов получилось? у
> Вас вывод netstat -nr должен быть типа:
> default
> ng1
> US
> 0
> 0 ng1я только не пойму причем там туннели, туннель модем у него поднимает а у него просто ethernet с айпишником, т.к. модем бриджом работает, и прописать роут через интерфейс толку, работать не будет, если б туннель то да работало бы.
>[оверквотинг удален]
>> Вас вывод netstat -nr должен быть типа:
>> default
>> ng1
>> US
>> 0
>> 0 ng1
> я только не пойму причем там туннели, туннель модем у него поднимает
> а у него просто ethernet с айпишником, т.к. модем бриджом работает,
> и прописать роут через интерфейс толку, работать не будет, если б
> туннель то да работало бы.Да, через тунель это работает без проблем поскольку там Point-to-Point.
> я только не пойму причем там туннели, туннель модем у него поднимает
> а у него просто ethernet с айпишником, т.к. модем бриджом работает,
> и прописать роут через интерфейс толку, работать не будет, если б
> туннель то да работало бы.в данном конкретном случае Вы видите какую-то разницу между туннелем и ethernet ? ... просветите, интересно...
До тех пор, пока у Вас будет :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 - "и это правильно" :)
>[оверквотинг удален]
> Flags
> Refs Use Netif Expire
> default
> 37.54.160.1 UGS
> 0 12266
> vlan30
>
> ^^^^^^^^^^^
> действительно, как и писал товарищь выше - все будет уходить в первый
> (по порядку подрыва) vlan - "и это правильно" :)Я согласен что это правильно, и поэтому и спросил теоретически возможна ли такая конфигурация в FreeBSD?
> Я согласен что это правильно, и поэтому и спросил теоретически возможна ли
> такая конфигурация в FreeBSD?... бр-р-р-р... так Вам и выше писали, и я писал - ПЕРЕВЕСТИ с ip на iface. По-другому оно работать НЕ будет. Только с маршрутизацией, где destination - имя интерфейса...
>[оверквотинг удален]
>> 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 tablesInternet:
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 ste0testing# 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 route delete default
> setfib 2 route add default -iface vlan3003... маловато будет - сносите и переписывайте оба vlan-а ...
> testing# setfib 2 netstat -nr
> Routing tables... не смутило, куда указывает "Expire" ? ...
>> только что выполнил две команды:
>> 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 tablesInternet:
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 tablesInternet:
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
а это мы сейчас у netstat и ping спросим ;)
> а это мы сейчас у netstat и ping спросим ;)теперь вообще нету пинга!
> а это мы сейчас у netstat и ping спросим ;)как вы не поймете не будет у него на виланах работать iface, он работает только на point-to-point, где не нада указывать айпи адрес назначения т.к. есть точка начала и точка конца, на ethernet нада указывать обязательно.
> как вы не поймете не будет у него на виланах работать iface,
> он работает только на point-to-point, где не нада указывать айпи адрес
> назначения т.к. есть точка начала и точка конца, на ethernet нада
> указывать обязательно.упс! А вот-здесь признаю свою ошибку. С несколькими vlan-ами на одной сетевухе - действительно неработоспособно - MAC адрес у всего "пакована" vlan-ов и сетевухи один и тот-же :(
>> как вы не поймете не будет у него на виланах работать 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
> ifconfig vlan3002 ether b0:48:7a:85:b1:4f
> ifconfig vlan3003 ether b0:48:7a:85:c1:4c... с mac-ом самой сетевой не совпадают ?
>> ifconfig vlan3002 ether b0:48:7a:85:b1:4f
>> ifconfig vlan3003 ether b0:48:7a:85:c1:4c
> ... с mac-ом самой сетевой не совпадают ?Только что проверил, не совпадают.
> Только что проверил, не совпадают.плохо ;) сорри, не где сейчас проверить, а можете попробовать перебить маршруты на :
route add default $new_routers -iface vlanXXXX
>> Только что проверил, не совпадают.
> плохо ;) сорри, не где сейчас проверить, а можете попробовать перебить маршруты
> на :
> route add default $new_routers -iface vlanXXXXtesting# setfib 1 route add default 37.54.160.1 -iface vlan3002
route: bad address: vlan3002
> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
> route: bad address: vlan3002... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если найду решение - обязательно отпишусь ...
>> testing# setfib 1 route add default 37.54.160.1 -iface vlan3002
>> route: bad address: vlan3002
> ... плЁхо ... попробую прогнать сегодня-завтра эту ситуацию на виртуалке - если
> найду решение - обязательно отпишусь ...Могу дать доступ, чтобы не заморачиваться с виртуалкой.
>>> 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.1setfib 1 route add -host 37.54.160.1 -link vlan3003 -iface
setfib 1 route add default -ifp vlan3003 37.54.160.1
>>>> 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.1testing# 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 losstesting# setfib 1 netstat -nr
Routing tablesInternet:
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 tablesInternet:
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
проверил у себя на виланах с одинаковыми маками, у меня все работает:
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: em0netstat -rnWf inet
Routing tablesInternet:
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 lo0setfib 1 netstat -rnWf inet
Routing tablesInternet:
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 mstcpdump -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 kernelping через 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 mstcpdump -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
>[оверквотинг удален]
> 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) не помогло.
>[оверквотинг удален]
>> 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) не помогло.Подскажите как мне правильно диагностировать проблему?
>[оверквотинг удален]
>>> ^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...
Но это очёнь кривое решение!
>[оверквотинг удален]
>>>> айпи ваши, роуты:
>>>> 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 автоматизировать и проделывать регулярно, чтобы не
зависить от смены оборулования провайдеромРешение кривое, но работать должно :)
>>Вопрос как это всё автоматизировать при условии что каналов больше двух?
Проблема актуальна, прошу помочь решить. Или подскажите как написать разработчикам?
"проверил у себя на виланах с одинаковыми маками, у меня все работает:"товарищ "1", пожалуйста, напиши болеё детально с конфигами каким чудом тебе удалось запустить на виртуалке конфигурацию с двумя одинаковыми основными шлюзами? Буду очень признателен.
Спасибо!
> "проверил у себя на виланах с одинаковыми маками, у меня все работает:"
> товарищ "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 назначаете нужную таблицу для трафика. Больше ничего не настраивал.
> ядро собрано с 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, тогда пинг не проходит через соответствующий канал.
Как побороть эту проблему?
Переодически в /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