背景
如果设备期望发布不属于本机接口上的 ip 的相关路由,一般就通过配置静态路由,然后通过bird进行发布。
如果是使用bird,则直接在bird.conf中配置静态路由;
如果是使用quagga,则通过在zebra.conf中配置静态路由,然后ospf将路由发布出去。
zebra主要用于监控,扫描本机的接口,ip,路由的变化,和ospf进行联动,然后发布出去。
注意:以下配置主要是在server端的配置,而非交换机侧是配置,用于向外发布路由。
bird静态路由配置
注意:以下使用的bird的版本为 1.4.5;
protocol direct {
interface "lo"; # Restrict network interfaces it works with; 关注本机 lo 口上的ip以及相关路由;
}
protocol kernel {
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
# export all; # Default is export none, 如果使能了 export all,则ip route在本机会看到配置的静态路由.
}
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}
protocol static {
route 192.22.2.9/32 via "lo"; #配置静态路由;
route 192.22.2.10/32 via "lo";
}
filter export_vip { #过滤器,控制向外发布哪些路由,此中是只将static中配置的vip的路由发布出去。
if net = 192.22.2.9/32 then {
if bgp_path ~ [= 123456 =] then { # bgp_path中包含了 123456,则追加一个123456;
bgp_path.prepend(123456);
bgp_path.prepend(123456);
}
accept;
}
if net = 192.22.2.10/32 then {
if bgp_path ~ [= 123456 =] then {
bgp_path.prepend(123456);
bgp_path.prepend(123456);
}
accept;
}
reject;
}
protocol bgp {
local as 123456;
neighbor 192.20.20.7 as 23444;
hold time 27;
keepalive time 9;
import filter { reject; }; #不从外部引入路由到本机;
export filter export_vip;
}
分析:
过滤器是用在导入和导出路由的时候的。过滤器会对每一条路由执行一次,同时该路由的所有属性都可以直接在过滤器中被使