mirror of
https://git.dn42.dev/wiki/wiki
synced 2025-03-15 03:43:33 +00:00
add bird ipv6 configuration
This commit is contained in:
parent
ba5eb7ca12
commit
5b4ea6e766
162
howto/Bird.md
162
howto/Bird.md
@ -10,6 +10,8 @@ Compared to quagga, bird supports multiple routing, which is useful, if you also
|
||||
* Replace `<PEER_AS>` the Autonomous System Number of your peer
|
||||
* Replace `<PEER_NAME>` a self chosen name for your peer
|
||||
|
||||
### IPV4
|
||||
|
||||
```
|
||||
# /etc/bird/bird.conf
|
||||
# Device status
|
||||
@ -146,6 +148,157 @@ protocol bgp <PEER_NAME> from dnpeers {
|
||||
};
|
||||
```
|
||||
|
||||
### IPV6
|
||||
|
||||
```
|
||||
#/etc/bird/bird6.conf
|
||||
protocol device {
|
||||
scan time 10;
|
||||
}
|
||||
|
||||
# filter helpers
|
||||
#################
|
||||
|
||||
include "/etc/bird/filter6.conf";
|
||||
|
||||
# local configuration
|
||||
######################
|
||||
|
||||
include "bird/local6.conf";
|
||||
|
||||
# Kernel routing tables
|
||||
########################
|
||||
|
||||
protocol kernel {
|
||||
scan time 20;
|
||||
device routes;
|
||||
import none;
|
||||
export filter {
|
||||
krt_prefsrc = OWNIP;
|
||||
accept;
|
||||
};
|
||||
}
|
||||
|
||||
# static routes
|
||||
################
|
||||
|
||||
protocol static {
|
||||
route <SUBNET> reject;
|
||||
}
|
||||
|
||||
template bgp dnpeers {
|
||||
local as OWNAS;
|
||||
path metric 1;
|
||||
import keep filtered;
|
||||
import filter {
|
||||
if is_valid_network() && !is_self_net() then {
|
||||
accept;
|
||||
}
|
||||
reject;
|
||||
};
|
||||
export filter {
|
||||
if is_valid_network() then {
|
||||
accept;
|
||||
}
|
||||
reject;
|
||||
};
|
||||
route limit 10000;
|
||||
}
|
||||
|
||||
include "/etc/bird/peers6/*";
|
||||
```
|
||||
|
||||
```
|
||||
# /etc/bird/local6.conf
|
||||
# should be a unique identifier, use same id as for ipv4
|
||||
router id <GATEWAY_IP>;
|
||||
|
||||
define OWNAS = <AS>;
|
||||
define OWNIP = <GATEWAY_IP>;
|
||||
|
||||
function is_self_net() {
|
||||
return net ~ [<SUBNET>+];
|
||||
}
|
||||
```
|
||||
|
||||
Generate the filter list from the monotone repository
|
||||
|
||||
```
|
||||
cd net.dn42.registry
|
||||
ruby utils/bgp-filter.rb < data/filter6.txt > /etc/bird/filter6.conf
|
||||
```
|
||||
|
||||
example filter list:
|
||||
|
||||
```
|
||||
function is_valid_network() {
|
||||
return net ~ [
|
||||
fc00::/8{48,64}, # ULA (undefined)
|
||||
fd00::/8{48,64}, # ULA (defined)
|
||||
2001:67c:20c1::/48{48,48}, # E-UTP IPv6
|
||||
2001:bf7::/32{32,128}, # Freifunk (Foerderverein Freie Netzwerke) IPv6 Range
|
||||
2001:67c:20a1::/48{48,48}, # CCC Event Network
|
||||
2001:0470:006c:01d5::/64{64,64}, # Registered IANA
|
||||
2001:0470:006d:0655::/64{64,64},
|
||||
2001:0470:1f09:172d::/64{64,64},
|
||||
2001:0470:1f0b:0592::/64{64,64},
|
||||
2001:0470:1f0b:0bca::/64{64,64},
|
||||
2001:0470:1f0b:1af5::/64{64,64},
|
||||
2001:0470:1f10:0275::/64{64,64},
|
||||
2001:0470:1f12:0004::/64{64,64},
|
||||
2001:0470:5084::/48{48,64},
|
||||
2001:0470:51c6::/48{48,64},
|
||||
2001:0470:73d3::/48{48,64},
|
||||
2001:0470:7972::/48{48,64},
|
||||
2001:0470:9949::/48{48,64},
|
||||
2001:0470:99fc::/48{48,64},
|
||||
2001:0470:9af8::/48{48,64},
|
||||
2001:0470:9ce6::/55{55,64},
|
||||
2001:0470:9f43::/48{48,64},
|
||||
2001:0470:caab::/48{48,64},
|
||||
2001:0470:cd99::/48{48,64},
|
||||
2001:0470:d4df::/48{48,64},
|
||||
2001:0470:d889:0010::/64{64,64},
|
||||
2001:0470:e3f0:000a::/64{64,64},
|
||||
2001:067c:21ec::/48{48,64},
|
||||
2001:06f8:1019:0000::/64{64,64},
|
||||
2001:06f8:118b::/48{48,64},
|
||||
2001:06f8:1194::/48{48,64},
|
||||
2001:06f8:121a::/48{48,64},
|
||||
2001:06f8:1c1b::/48{48,64},
|
||||
2001:06f8:1d14::/48{48,64},
|
||||
2001:06f8:1d26::/48{48,64},
|
||||
2001:06f8:1d53::/48{48,64},
|
||||
2001:07f0:3003::/48{48,64},
|
||||
2001:08d8:0081:05c8::/63{63,64},
|
||||
2001:08d8:0081:05ca::/64{64,64},
|
||||
2001:15c0:1000:0100::/64{64,64},
|
||||
2001:1b60:1000:0001::/64{64,64},
|
||||
2001:41d0:0001:b6bb::/64{64,64},
|
||||
2001:41d0:0001:cd42::/64{64,64},
|
||||
2001:4dd0:fcff::/48{48,64},
|
||||
2001:4dd0:fdd3::/48{48,64},
|
||||
2001:4dd0:ff00:8710::/64{64,64},
|
||||
2604:8800:0179:4200::/56{56,64},
|
||||
2801:0000:80:8000::/50{50,64},
|
||||
2a00:1328:e101:0200::/56{56,64},
|
||||
2a00:1828:2000:0289::/64{64,64},
|
||||
2a00:1828:a013:d242::/64{64,64},
|
||||
2a00:5540:0387::/48{48,64},
|
||||
2a01:0198:022c::/48{48,64},
|
||||
2a01:0198:035a:fd13::/64{64,64},
|
||||
2a01:0198:0485::/48{48,64},
|
||||
2a01:04f8:0121:4fff::/64{64,64},
|
||||
2a01:04f8:0140:1ffd::/64{64,64},
|
||||
2a01:04f8:0d13:17c0::/64{64,64},
|
||||
2a02:0a00:e010:3c00::/56{56,64},
|
||||
2a02:0ee0:0002:0051::/64{64,64},
|
||||
2a03:2260::/30{30,64}
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
# Useful bird commmands
|
||||
|
||||
bird can be remote controlled via the `birdc` command. Here is a list of useful bird commands:
|
||||
@ -169,6 +322,15 @@ bird> show route for 172.22.141.181 # show possible routes to internal.dn42
|
||||
172.22.141.0/24 via 172.23.67.1 on tobee [tobee 07:20:30] * (100) [AS64737i]
|
||||
via 172.23.64.1 on chelnok [chelnok 07:20:29] (100) [AS64737i]
|
||||
via 172.23.136.65 on hax404 [hax404 07:20:26] (100) [AS64737i]
|
||||
bird> show route filtered
|
||||
172.23.245.1/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS76175i]
|
||||
172.22.247.128/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS76175i]
|
||||
172.22.227.1/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS76115i]
|
||||
172.23.196.75/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS76115i]
|
||||
172.22.41.241/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS76115i]
|
||||
172.22.249.4/30 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS4242420002i]
|
||||
172.22.255.133/32 via 172.23.64.1 on chelnok [chelnok 21:26:18] * (100) [AS64654i]
|
||||
...
|
||||
```
|
||||
|
||||
# External Links
|
||||
|
Loading…
x
Reference in New Issue
Block a user