log stderr all; router id 82.165.162.239; # interne BIRD Routing-Tabelle ipv6 table ffrl_v6; ipv4 table ffrl_v4; # freifunk ip ranges in general function is_ffrl_export_v6() { return net ~ [ 2a03:2260:3009:100::/56, 2a03:2260:3009::/56, 2a03:2260:3009:f00::/56 ]; } function is_default_v6() { return net ~ [ ::/0 ]; } # BGP Import Filter für Rheinland filter ffrl_import_filter_v6 { if is_default_v6() then accept; reject; } # BGP Export Filter für Rheinland filter ffrl_export_filter_v6 { if is_ffrl_export_v6() then accept; reject; } function is_ffrl_nat_v4() { return net ~ [ 185.66.193.26/32 ]; } function is_ffrl_tunnel_nets_v4() { return net ~ [ # anything within this subnets 100.64.0.0/16+ ]; } function is_default_v4() { return net ~ [ # Exactly matching this subnet 0.0.0.0/0 ]; } # BGP Import Filter für Rheinland filter ffrl_import_filter_v4 { if is_default_v4() then accept; reject; } # BGP Export Filter für Rheinland filter ffrl_export_filter_v4 { if is_ffrl_nat_v4() then accept; reject; } # Dies lädt die Devices in die Tabelle. Die meisten anderen Protokolle brauchen das. protocol device { scan time 30; } # Statische Routen für unsere Netze protocol static { ipv6 { table ffrl_v6; }; vrf "vrf_freifunk"; # FFRL-assigned space: Gateway subspaces # we are all in the same layer 2 segment, so we can take all this route 2a03:2260:3009:100::/56 via "saarBR"; route 2a03:2260:3009:200::/56 via "saarBR"; route 2a03:2260:3009:300::/56 via "saarBR"; route 2a03:2260:3009:400::/56 via "saarBR"; # FFRL-assigned space: subet for admin & user services route 2a03:2260:3009::/56 via "saarBR"; route 2a03:2260:3009:f00::/56 via "saarBR"; # FFRL-assigned space: blackhole the rest route 2a03:2260:3009::/48 unreachable; # Intranet space route fd4e:f2d7:88d2:ffff::/64 via "saarBR"; } protocol static local_routes { ipv4 { table ffrl_v4; }; vrf "vrf_freifunk"; # FFRL-assigned address route 185.66.193.26/32 via "ffrl_lo"; # Intranet space route 10.24.192.0/18 via "saarBR"; } # Wir exportieren über Rheinland gelernte Routen in die Kernel Table 1042 (freifunk) protocol kernel kernel_ffrl_v6 { scan time 30; ipv6 { import none; export filter { # Advise the kernel about which address to use as the source krt_prefsrc = 2a03:2260:3009::2; accept; }; table ffrl_v6; }; vrf "vrf_freifunk"; kernel table 1042; }; protocol kernel kernel_ffrl_v4 { scan time 30; ipv4 { import none; export filter { krt_prefsrc = 185.66.193.26; accept; }; table ffrl_v4; }; vrf "vrf_freifunk"; kernel table 1042; }; # P E E R I N G S protocol bgp ffrl_a_ak_v4 { local as 64899; ipv4 { table ffrl_v4; import keep filtered; import filter ffrl_import_filter_v4; export filter ffrl_export_filter_v4; next hop self; }; direct; debug all; vrf "vrf_freifunk"; source address 100.64.3.21; neighbor 100.64.3.20 as 201701; }; protocol bgp ffrl_a_ak_v6 { local as 64899; ipv6 { table ffrl_v6; import keep filtered; import filter ffrl_import_filter_v6; export filter ffrl_export_filter_v6; next hop self; }; direct; debug all; vrf "vrf_freifunk"; source address 2a03:2260:0:194::2; neighbor 2a03:2260:0:194::1 as 201701; };