protocol device { scan time 10; } protocol static { route 172.20.170.192/28 reject; import all; export none; } include "/etc/bird/local4.conf"; # filter helpers ################# ##include "/etc/bird/filter4.conf"; protocol kernel { scan time 20; metric 64; # Use explicit kernel route metric to avoid collisions # with non-BIRD routes in the kernel routing table import none; #export all; # Actually insert routes into the kernel routing table export filter { if source = RTS_STATIC then reject; krt_prefsrc = OWNIP; accept; }; } filter filter_OSPF { if net = 172.20.170.192/28 then accept; else reject; }; protocol ospf { import all; export all; area 0 { interface "wg-ospf-triton" { cost 10; type pointopoint; hello 5; retransmit 2; wait 10; dead 20; authentication cryptographic; password "R5fg2d66hTuP"; }; interface "wg-ospf-mail" { cost 10; type pointopoint; hello 5; retransmit 2; wait 10; dead 20; authentication cryptographic; password "R5fg2d66hTuP"; }; interface "lo" { stub; }; }; } template bgp dnpeers { local as OWNAS; # metric is the number of hops between us and the peer path metric 1; # this lines allows debugging filter rules # filtered routes can be looked up in birdc using the "show route filtered" command import keep filtered; import filter { # accept every subnet, except our own advertised subnet # filtering is important, because some guys try to advertise routes like 0.0.0.0 if is_valid_network() && !is_self_net() then { accept; } reject; }; export filter { # here we export the whole net if is_valid_network() then { accept; } reject; }; import limit 1000 action block; #source address 172.20.170.192; }; include "/etc/bird/peers4/*";