Megas Posted August 16, 2016 Добрый день всем. Раньше для резервирования домашнего интернета использовал quagga, которая долго трудилась и справлялась со своими задачами, но вот решил попробовать bird чтобы начать потихоньку его изучать и впоследствии применять в работе. Есть 2 домашних провайдера, 1 отдает внешний канал по Ethernet 1G через dhcp, другой обычный adsl, adsl роутер вещает свой default gw через rip2, меня такой порядок полностью устраивал. Quagga выглядела так: log stdout ! interface eth0 ipv6 nd suppress-ra ! interface eth1 ipv6 nd suppress-ra ! interface eth2 ipv6 nd suppress-ra ! interface lo ! interface tun0 ipv6 nd suppress-ra ! interface tun11 ipv6 nd suppress-ra ! router rip version 2 redistribute connected network 192.168.8.0/24 ! ip forwarding ! line vty ! Bird настроен пока так: timeformat base iso long; timeformat log iso long; timeformat protocol iso long; timeformat route iso long; log "/var/log/bird/bird.log" all; log stderr all; router id 192.168.7.254; protocol kernel { scan time 20; import none; export all; # Actually insert routes into the kernel routing table } protocol direct { interface "eth0", "eth3"; } protocol device { scan time 20; } debug protocols { routes, interfaces }; protocol rip { debug all; interface "eth0" { metric 2; mode multicast; }; import filter { print "importing"; accept; }; export filter { print "exporting"; accept; }; } В данной ситуации в системе видно что роут от adsl приходит на bird, когда выключает 1G eth0, то новый default gw на adsl прилетает становится через несколько секунд, но проблема в том что когда включаешь назад 1G c dhcp, то вот тут адрес на интерфейсе появляется, но вот роут не меняется. На сколько понимаю в голове, то bird должен получать информацию о всех маршрутах в системе и держать оба default gw в своей таблице машрутизации как это делала quagga чтобы в случае падение первого спокойно включать второй и возращать назад. Помогите правильно описать bird чтобы он случае и использовал роуты от eth3 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 16, 2016 какая версия птички? в 1.4 каком-то что ли ЕМНИП была какая-то грабля с назначением/убиранием роутов (т.е. если есть 2 роута и убирается один через один ифейс - убираются оба), не ваш ли случай? в 1.5 этой баги нет. хотя не - вроде не ваш, вы пытаетесь скрестить прописывание статик роута в dhcpd с получением динамики через птичку, пичка может и затирать дефолт при этом... как выйти из положения тут - хз; как вариант - прописывать роуты птичкой с недефолтной метрикой (к примеру 1000). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted August 16, 2016 Версия: ii bird 1.6.0-1 amd64 Internet Routing Daemon Моя проблема в том что птица ничего не знает о eth3 и 1G интерфейсе и все что на нем приходит, соотвественно она не знает что есть второй гейт и у его должна быть другая метрика. и как её решить не понятно. Пробовал отталкиваться от: https://habrahabr.ru/post/199478/ но там везде статика. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 16, 2016 protocol kernel { ... import none; ни на что не наводит?... и опять же - bird'у и не важно знать роут, который получен по дхцп. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Megas Posted August 17, 2016 NiTr0 , спасибо, но ситуация уже чуть проясняется, если передернуть bird то он нормально видит 2 default route: # birdc show route BIRD 1.6.0 ready. 0.0.0.0/0 via 192.168.8.250 on eth0 [rip1 2016-08-17 21:34:01] * (120/3) via 111.11.33.1 on eth3 [kernel1 2016-08-17 21:36:25] (10) 111.11.33.0/24 dev eth3 [direct1 2016-08-17 21:36:24] * (240) 192.168.8.0/24 dev eth0 [direct1 2016-08-17 21:34:01] * (240) но увы, после того как опустишь и поднимеш eth3, ситуация становится такой: birdc show route BIRD 1.6.0 ready. 0.0.0.0/0 via 192.168.8.250 on eth0 [rip1 2016-08-17 21:34:02] * (120/3) 111.11.33.0/24 dev eth3 [direct1 2016-08-17 21:37:57] * (240) 192.168.8.0/24 dev eth0 [direct1 2016-08-17 21:34:02] * (240) он не хочет изучать default из dhcp в системе. protocol kernel { scan time 20; #import none; import all; export all; # Actually insert routes into the kernel routing table learn; } Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted August 18, 2016 он не хочет изучать default из dhcp в системе. а дефолт-то от dhcp в системе есть? :) или может dhcpcd его не прописывает/bird его затирает? вообще, птичке и не надо знать маршруты из системы, ее задача - впихнуть второй дефолт с метрикой скажем 1000. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SABRE Posted August 19, 2016 он не хочет изучать default из dhcp в системе. Опцию learn добавьте. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...