Jump to content
Калькуляторы

Bird, вопрос новичка. Проблема с интерфейсом который получает адрес по dhcp

Добрый день всем.

 

Раньше для резервирования домашнего интернета использовал 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

Share this post


Link to post
Share on other sites

какая версия птички? в 1.4 каком-то что ли ЕМНИП была какая-то грабля с назначением/убиранием роутов (т.е. если есть 2 роута и убирается один через один ифейс - убираются оба), не ваш ли случай? в 1.5 этой баги нет.

 

хотя не - вроде не ваш, вы пытаетесь скрестить прописывание статик роута в dhcpd с получением динамики через птичку, пичка может и затирать дефолт при этом... как выйти из положения тут - хз; как вариант - прописывать роуты птичкой с недефолтной метрикой (к примеру 1000).

Share this post


Link to post
Share on other sites

Версия:

ii  bird                           1.6.0-1                      amd64        Internet Routing Daemon

Моя проблема в том что птица ничего не знает о eth3 и 1G интерфейсе и все что на нем приходит, соотвественно она не знает что есть второй гейт и у его должна быть другая метрика.

и как её решить не понятно.

 

Пробовал отталкиваться от: https://habrahabr.ru/post/199478/

но там везде статика.

Share this post


Link to post
Share on other sites

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;

}

Share this post


Link to post
Share on other sites

он не хочет изучать default из dhcp в системе.

а дефолт-то от dhcp в системе есть? :) или может dhcpcd его не прописывает/bird его затирает?

 

вообще, птичке и не надо знать маршруты из системы, ее задача - впихнуть второй дефолт с метрикой скажем 1000.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.