Вопрос в следующий. Как сделать router с двумя интернет подключениями, сеичас он подключен к одному проваидеру и надо подключить второго. Т.е. если инет не идет у первого то переклучаемся на второго проваидера, ну или как то так.
>Вопрос в следующий. Как сделать router с двумя интернет подключениями, сеичас он
>подключен к одному проваидеру и надо подключить второго. Т.е. если инет
>не идет у первого то переклучаемся на второго проваидера, ну или
>как то так.Возможно, подойдет протокол OSPF (http://ru.wikipedia.org/wiki/OSPF).
Во FreeBSD быстрый поиск нашел сразу: /usr/ports/net/quagga , /usr/ports/net/zebra (похоже, что больше не развивается) и /usr/ports/net/openospfd-devel . Удачи в настройке!
Два и более подключения к инету по нормальному будут работать только под Linux. Сам с этим сталкивался :)Под FreeBSD будет работать только статическая маршрутизация. Причем при обрашении с не дефолтного интерфейса, ответные пакеты пойдут всеравно по дефолтному и поэтому клиент ничего не получит. Ну а изменять дефольтный маршрут под FreeBSD можно используя простейший пинг по крону (zebra делает тоже самое).
В Linux существуют множество таблиц маршрутизации и выбор, по какой таблице пройдет пакет, происходит на основании пользовательских правил (по адерсам, по портам, по TTL, по TOS), весь этот огород называется роутинг-полиси.
Совет: сноси FreeBSD и ставь Gentoo Linux, в нем также все пакеты ставятся из дерева портов, только нызвается это portage и работает круче :)
PS: По сути, Gentoo это механизм установки этих portage, а все остальное просто ставится из них, к примеру ядро может быть от FreeBSD. Но для твоих задач необходимо ядро именно Linux.
>Два и более подключения к инету по нормальному будут работать только под
>Linux. Сам с этим сталкивался :)
>
>Под FreeBSD будет работать только статическая маршрутизация. Причем при обрашении с не
>дефолтного интерфейса, ответные пакеты пойдут всеравно по дефолтному и поэтому клиент
>ничего не получит. Ну а изменять дефольтный маршрут под FreeBSD можноГражданин, не болтайте ерундой.
Во фре можно правилами фаервола на нужных пакетах задавать route-to. А зебра, это вообще демон протоколов маршрутизации.
Вот пример для pf, откорректируйте на свой вкус:
eif0="rl0"
eif1="ed0"
int_net1="192.168.1.0/24"
int_if1="rl1"
ext_nat_addr1="a.a.a.a"
ext_nat_route1="a.a.a.b"
ext_if1="ed0"int_net3="192.168.3.0/24"
int_if3="rl1"
ext_nat_addr3="b.b.b.b"
ext_nat_route3="b.b.b.c"
ext_if3="ed0"int_net4="192.168.4.0/24"
int_if4="rl1"
ext_nat_addr4="c.c.c.c"
ext_nat_route4="c.c.c.d"
ext_if4="rl0"int_if="rl1"
int_net="rl1:network"
scrub in allnat on $ext_if1 from $int_net1 to any -> ($ext_if1)
nat on $ext_if3 from $int_net3 to any -> ($ext_if3)
nat on $ext_if4 from $int_net4 to any -> ($ext_if4)pass in all label "$nr"
pass out all label "$nr"block in on $eif0 all label "$nr"
block in on $eif1 all label "$nr"pass out on $int_if from $int_if to $int_net
pass in quick on $int_if from $int_net to $int_if
pass on $int_if from $int_net to $int_netpass in on $eif0 proto tcp from any to $eif0 port 22 flags S/SA keep state label "$nr"
pass in on $eif0 proto icmp from any to $eif0 keep state label "$nr"pass in on $eif1 proto tcp from any to $eif1 port 22 flags S/SA keep state label "$nr"
pass in on $eif1 proto icmp from any to $eif1 keep state label "$nr"pass out on $eif0 proto { tcp } all flags S/SA keep state label "$nr"
pass out on $eif0 proto { udp, icmp } all keep state label "$nr"pass out on $eif1 proto { tcp } all flags S/SA keep state label "$nr"
pass out on $eif1 proto { udp, icmp } all keep state label "$nr"pass in on $int_if1 route-to ($ext_if1 $ext_nat_route1) from $int_net1 to any keep state label "$nr"
pass in on $int_if3 route-to ($ext_if3 $ext_nat_route3) from $int_net3 to any keep state label "$nr"
pass in on $int_if4 route-to ($ext_if4 $ext_nat_route4) from $int_net4 to any keep state label "$nr"pass out on $ext_if1 route-to ($ext_if1 $ext_nat_route1) from $ext_if1 to any keep state label "$nr"
pass out on $ext_if3 route-to ($ext_if3 $ext_nat_route3) from $ext_if3 to any keep state label "$nr"
pass out on $ext_if4 route-to ($ext_if4 $ext_nat_route4) from $ext_if4 to any keep state label "$nr"для ipfw и ipfilter есть подобные вещи
Уважаемый, а вот попробуйте apache на сервак поставить и из инета на него через разные соединения позаходить, работать будет всегда? У меня не работало, ибо ответные пакеты уходили по дефолтному машруту. Если с таким apache можно жить, то для named это будет большим недостатком (ip два, хочется master и slave у себя держать).А с nat в pf возникают проблемы с разбиением пакетов по mtu, когда выходит ethernet и pppoe, а входит ethernet и pptp. И как трафик шейпер с pf работает?
Про zebra я так и писал, чудес она не делает, а просто проверяет доступность используя BGP4 или OSPF, а при обрыве может что-нибудь выполнить.
iptables сам разрулить два выхода в инет также не способен, он может только маркировать и адреса подменять, дальше в роль вступает iproute2, который по маркам выбирает отдельную таблицу маршрутизации. (ессно команды iptables и iproute2 это просто пользовательский интерфейс к модулям ядра)
ipfw это вообще хроника, в нем простейщий nat отдельным демоном запускается, сам по себе ipfw сравним с фильтром в winxp :)
Я вообще не понял Ваш код для pf, но сложилось такое ощущение что выбор канала в инет происходит только для пользователей за натом и только на основании ip во внутреней сети, для своего разубеждение хотелось бы увидить выбор исходящего канала для NAT и самого FreeBSD, на основании сетей назначения, портов, тосов, пользователей, программ, потомков соединений (от ftp) и вроде дургих я не знаю :)
PS: Я так пишу не потому что я Вас не уважаю (я Вас уважаю), а по причине ушербности FreeBSD. После года моей *бли с FreeBSD я не смог выполнить простейщей цели (с 3 провами, но для дома), при этом все бздоиды гововрили: "Во фре можно все, да у тебя руки кривые", но при дарени ящика пива дело не двигалось. Никто мне не сказал что переход на Gentoo Linux решит все мои проблемы, поэтому я хочу скачать это новичкам и показать на контрасте :)
>Уважаемый, а вот попробуйте apache на сервак поставить и из инета на
>него через разные соединения позаходить, работать будет всегда? У меня не
>работало, ибо ответные пакеты уходили по дефолтному машруту. Если с таким
>apache можно жить, то для named это будет большим недостатком (ip
>два, хочется master и slave у себя держать).прикладуха открывает сокет на всех подключениях. адрес в пакетах будет соответствовать сокету, соответственно и разруливаться будет на основании адреса источника.
>А с nat в pf возникают проблемы с разбиением пакетов по mtu,
>когда выходит ethernet и pppoe, а входит ethernet и pptp. И
>как трафик шейпер с pf работает?ALTQ
>ipfw это вообще хроника, в нем простейщий nat отдельным демоном запускается, сам
>по себе ipfw сравним с фильтром в winxp :)Если вы 10 лет назад что-то пробовали, это не означает, что это не развивается больше. Оно уже давно ipfw2.
>Я вообще не понял Ваш код для pf, но сложилось такое ощущение
>что выбор канала в инет происходит только для пользователей за натом
>и только на основании ip во внутреней сети, для своего разубеждениечто мешает добавить другие критерии выбора пакетов в правило???
>
>Вас уважаю), а по причине ушербности FreeBSD. После года моей *бли
>с FreeBSD я не смог выполнить простейщей цели (с 3 провами,если вы что-то не смогли сделать или решение не было для вас очевидным, это не означает, что его нет.
В приведенном конфиге вообще-то пофиг, есть там НАТ или нет.
>>Уважаемый, а вот попробуйте apache на сервак поставить и из инета на
>>него через разные соединения позаходить, работать будет всегда? У меня не
>>работало, ибо ответные пакеты уходили по дефолтному машруту. Если с таким
>>apache можно жить, то для named это будет большим недостатком (ip
>>два, хочется master и slave у себя держать).
>
>прикладуха открывает сокет на всех подключениях. адрес в пакетах будет соответствовать сокету,Покажите пример, как Апач или named будут отвечать через недефолтный интерфейс.
P.S. Ситуация с NAT меня мало интересует.
>[оверквотинг удален]
> pass in on $int_if3 route-to ($ext_if3 $ext_nat_route3) from $int_net3 to any keep
> state label "$nr"
> pass in on $int_if4 route-to ($ext_if4 $ext_nat_route4) from $int_net4 to any keep
> state label "$nr"
> pass out on $ext_if1 route-to ($ext_if1 $ext_nat_route1) from $ext_if1 to any keep
> state label "$nr"
> pass out on $ext_if3 route-to ($ext_if3 $ext_nat_route3) from $ext_if3 to any keep
> state label "$nr"
> pass out on $ext_if4 route-to ($ext_if4 $ext_nat_route4) from $ext_if4 to any keep
> state label "$nr"Уважаемый)-Если не сложно подробней.. не дошло... буквенные обозначения а.а.а.b и т.п.
Имею 2 провайдера, 1 локалка, впн...freeBSD 10.2, pf
задача объеденить каналы..и если один отпадёт- чтобы всё по второму шло..
буду мега признателен если подскажите..
и как вижу скрип в cron для замены шлюза по умолчанию не требуется..?
>Вопрос в следующий. Как сделать router с двумя интернет подключениями, сеичас он
>подключен к одному проваидеру и надо подключить второго. Т.е. если инет
>не идет у первого то переклучаемся на второго проваидера, ну или
>как то так.по пингу делай, принудительно указывай через какой интерфейс пинговать ( -S ), если код возврата молчание, то просто меняется дефаулт гетвейт на второй и ноборот. Скрипт получится строк на 6 :) Бросаешь его в крон с интервалом выполнения 1 минута. Удачи
>>Вопрос в следующий. Как сделать router с двумя интернет подключениями, сеичас он
>>подключен к одному проваидеру и надо подключить второго. Т.е. если инет
>>не идет у первого то переклучаемся на второго проваидера, ну или
>>как то так.
>
>по пингу делай, принудительно указывай через какой интерфейс пинговать ( -S
>), если код возврата молчание, то просто меняется дефаулт гетвейт на
>второй и ноборот. Скрипт получится строк на 6 :) Бросаешь его
>в крон с интервалом выполнения 1 минута. УдачиНафига? Если надо одновременно рулить обоими каналами, Через один хттп пустить, через другой ещё чё-нить. Выше всё правильно написано про фаервол. Конечно в линуксе iproute2 весЧ прикольная, но и во фре всё это можно сделать.
>>Вопрос в следующий. Как сделать router с двумя интернет подключениями, сеичас он
>>подключен к одному проваидеру и надо подключить второго. Т.е. если инет
>>не идет у первого то переклучаемся на второго проваидера, ну или
>>как то так.
>
>по пингу делай, принудительно указывай через какой интерфейс пинговать ( -S
>), если код возврата молчание, то просто меняется дефаулт гетвейт на
>второй и ноборот. Скрипт получится строк на 6 :) Бросаешь его
>в крон с интервалом выполнения 1 минута. УдачиМне одновременно с двумя проваидерами работать не надо, один сдох на другого перехожу. А если скрипт ваять, что писать в rc.conf ( defaultrouter )
Случайно нет ни у кого такои скриптины?
На FreeBSD 6.1 год назад делал одновременную работу с двумя Интернет-каналами:Делал через Policy Base Routing:
http://www.opennet.me/base/net/bsd_pbr_route.txt.html
http://ipfw.ism.kiev.ua/pbr.html
http://www.lissyara.su/?id=1330Все работает нормально.
Самое интересное - порт SSH этого FreeBSD-сервера мне доступен с обоих провайдеров...также как и Apache :)
>На FreeBSD 6.1 год назад делал одновременную работу с двумя Интернет-каналами:В этой версии есть еще IPFIREWALL_FORWARD_EXTENDED, в свежих:
The IPFIREWALL_FORWARD_EXTENDED kernel option has been removed. This option was used to permit ipfw(4) to redirect packets with local destinations. This behavior is now always enabled when the IPFIREWALL_FORWARD kernel option is enabled.
>>На FreeBSD 6.1 год назад делал одновременную работу с двумя Интернет-каналами:
>
>В этой версии есть еще IPFIREWALL_FORWARD_EXTENDED, в свежих:
>The IPFIREWALL_FORWARD_EXTENDED kernel option has been removed. This option was used to
>permit ipfw(4) to redirect packets with local destinations. This behavior is
>now always enabled when the IPFIREWALL_FORWARD kernel option is enabled.Ну прочитали Вы man ipfw - маладца...только не об этом речь :)
Все эти наезды на FreeBSD - бессмысленны. И Linux и FreeBSD хорошие ОС. 99% задач можно решить с их использованием.