{ config, lib, ... }: { site.net.core = { domainName = "core.zentralwerk.org"; hosts4 = { anon1 = "172.20.72.7"; bgp = "172.20.72.27"; c3d2-anon = "172.20.72.9"; c3d2-gw1 = "172.20.72.8"; c3d2-gw2 = "172.20.72.63"; c3d2-gw3 = "172.20.72.64"; cls-gw = "172.20.72.29"; freifunk = "172.20.72.40"; mgmt-gw = "172.20.72.28"; priv1-gw = "172.20.72.4"; priv10-gw = "172.20.72.20"; priv11-gw = "172.20.72.21"; priv12-gw = "172.20.72.22"; priv13-gw = "172.20.72.23"; priv14-gw = "172.20.72.24"; priv15-gw = "172.20.72.25"; priv16-gw = "172.20.72.26"; priv17-gw = "172.20.72.30"; priv17-gw-up3 = "172.20.72.66"; priv18-gw = "172.20.72.31"; priv19-gw = "172.20.72.32"; priv2-gw = "172.20.72.5"; priv20-gw = "172.20.72.33"; priv21-gw = "172.20.72.34"; priv22-gw = "172.20.72.35"; priv23-gw = "172.20.72.36"; priv24-gw = "172.20.72.37"; priv25-gw = "172.20.72.38"; priv26-gw = "172.20.72.39"; priv27-gw = "172.20.72.41"; priv28-gw = "172.20.72.42"; priv29-gw = "172.20.72.43"; priv3-gw = "172.20.72.13"; priv30-gw = "172.20.72.44"; priv31-gw = "172.20.72.45"; priv32-gw = "172.20.72.46"; priv33-gw = "172.20.72.47"; priv34-gw = "172.20.72.48"; priv35-gw = "172.20.72.49"; priv36-gw = "172.20.72.50"; priv37-gw = "172.20.72.51"; priv38-gw = "172.20.72.52"; priv39-gw = "172.20.72.60"; priv4-gw = "172.20.72.14"; priv40-gw = "172.20.72.61"; priv41-gw = "172.20.72.65"; priv42-gw = "172.20.72.67"; priv43-gw = "172.20.72.68"; priv44-gw = "172.20.72.70"; priv45-gw = "172.20.72.72"; priv5-gw = "172.20.72.15"; priv6-gw = "172.20.72.16"; priv7-gw = "172.20.72.17"; priv8-gw = "172.20.72.18"; priv9-gw = "172.20.72.19"; pub-gw = "172.20.72.3"; serv-gw = "172.20.72.2"; server3 = "172.20.72.53"; server4 = "172.20.72.54"; server5 = "172.20.72.55"; server6 = "172.20.72.56"; server7 = "172.20.72.57"; server8 = "172.20.72.58"; upstream3 = "172.20.72.11"; upstream4 = "172.20.72.12"; # unused = "172.20.72.62"; vpn-gw = "172.20.72.69"; flpk-gw = "172.20.72.71"; }; hosts6 = { dn42 = { anon1 = "fd23:42:c3d2:581::9:1"; bgp = "fd23:42:c3d2:581::c3d2:b"; c3d2-anon = "fd23:42:c3d2:581::c3d2:a"; c3d2-gw1 = "fd23:42:c3d2:581::c3d2:1"; c3d2-gw2 = "fd23:42:c3d2:581::c3d2:2"; c3d2-gw3 = "fd23:42:c3d2:581::c3d2:3"; freifunk = "fd23:42:c3d2:581:8000::1"; mgmt-gw = "fd23:42:c3d2:581::8:3"; priv1-gw = "fd23:42:c3d2:581::c:0"; priv10-gw = "fd23:42:c3d2:581::c:9"; priv11-gw = "fd23:42:c3d2:581::c:a"; priv12-gw = "fd23:42:c3d2:581::c:b"; priv13-gw = "fd23:42:c3d2:581::c:c"; priv14-gw = "fd23:42:c3d2:581::c:d"; priv15-gw = "fd23:42:c3d2:581::c:e"; priv16-gw = "fd23:42:c3d2:581::c:f"; priv17-gw = "fd23:42:c3d2:581::c:10"; priv18-gw = "fd23:42:c3d2:581::c:11"; priv19-gw = "fd23:42:c3d2:581::c:12"; priv2-gw = "fd23:42:c3d2:581::c:1"; priv20-gw = "fd23:42:c3d2:581::c:13"; priv21-gw = "fd23:42:c3d2:581::c:14"; priv22-gw = "fd23:42:c3d2:581::c:15"; priv23-gw = "fd23:42:c3d2:581::c:16"; priv24-gw = "fd23:42:c3d2:581::c:17"; priv25-gw = "fd23:42:c3d2:581::c:18"; priv26-gw = "fd23:42:c3d2:581::c:19"; priv27-gw = "fd23:42:c3d2:581::c:1a"; priv28-gw = "fd23:42:c3d2:581::c:1b"; priv29-gw = "fd23:42:c3d2:581::c:1c"; priv3-gw = "fd23:42:c3d2:581::c:2"; priv30-gw = "fd23:42:c3d2:581::c:1d"; priv31-gw = "fd23:42:c3d2:581::c:1e"; priv32-gw = "fd23:42:c3d2:581::c:1f"; priv33-gw = "fd23:42:c3d2:581::c:20"; priv34-gw = "fd23:42:c3d2:581::c:21"; priv35-gw = "fd23:42:c3d2:581::c:22"; priv36-gw = "fd23:42:c3d2:581::c:23"; priv37-gw = "fd23:42:c3d2:581::c:24"; priv38-gw = "fd23:42:c3d2:581::c:25"; priv39-gw = "fd23:42:c3d2:581::c:26"; priv4-gw = "fd23:42:c3d2:581::c:3"; priv40-gw = "fd23:42:c3d2:581::c:27"; priv41-gw = "fd23:42:c3d2:581::c:28"; priv42-gw = "fd23:42:c3d2:581::c:29"; priv43-gw = "fd23:42:c3d2:581::c:2a"; priv44-gw = "fd23:42:c3d2:581::c:2b"; priv45-gw = "fd23:42:c3d2:581::c:2c"; priv5-gw = "fd23:42:c3d2:581::c:4"; priv6-gw = "fd23:42:c3d2:581::c:5"; priv7-gw = "fd23:42:c3d2:581::c:6"; priv8-gw = "fd23:42:c3d2:581::c:7"; priv9-gw = "fd23:42:c3d2:581::c:8"; pub-gw = "fd23:42:c3d2:581::8:2"; serv-gw = "fd23:42:c3d2:581::8:1"; upstream3 = "fd23:42:c3d2:581::b:2"; upstream4 = "fd23:42:c3d2:581::b:3"; vpn-gw = "fd23:42:c3d2:581:9001::1"; flpk-gw = "fd23:42:c3d2:581:9002::1"; }; up4 = { anon1 = "2a00:8180:2c00:281::9:1"; bgp = "2a00:8180:2c00:281::c3d2:b"; c3d2-anon = "2a00:8180:2c00:281::c3d2:a"; c3d2-gw1 = "2a00:8180:2c00:281::c3d2:1"; c3d2-gw2 = "2a00:8180:2c00:281::c3d2:2"; c3d2-gw3 = "2a00:8180:2c00:281::c3d2:3"; cls-gw = "2a00:8180:2c00:281::8:4"; freifunk = "2a00:8180:2c00:281:8000::1"; mgmt-gw = "2a00:8180:2c00:281::8:3"; priv1-gw = "2a00:8180:2c00:281::c:0"; priv10-gw = "2a00:8180:2c00:281::c:9"; priv11-gw = "2a00:8180:2c00:281::c:a"; priv12-gw = "2a00:8180:2c00:281::c:b"; priv13-gw = "2a00:8180:2c00:281::c:c"; priv14-gw = "2a00:8180:2c00:281::c:d"; priv15-gw = "2a00:8180:2c00:281::c:e"; priv16-gw = "2a00:8180:2c00:281::c:f"; priv17-gw = "2a00:8180:2c00:281::c:10"; priv18-gw = "2a00:8180:2c00:281::c:11"; priv19-gw = "2a00:8180:2c00:281::c:12"; priv2-gw = "2a00:8180:2c00:281::c:1"; priv20-gw = "2a00:8180:2c00:281::c:13"; priv21-gw = "2a00:8180:2c00:281::c:14"; priv22-gw = "2a00:8180:2c00:281::c:15"; priv23-gw = "2a00:8180:2c00:281::c:16"; priv24-gw = "2a00:8180:2c00:281::c:17"; priv25-gw = "2a00:8180:2c00:281::c:18"; priv26-gw = "2a00:8180:2c00:281::c:19"; priv27-gw = "2a00:8180:2c00:281::c:1a"; priv28-gw = "2a00:8180:2c00:281::c:1b"; priv29-gw = "2a00:8180:2c00:281::c:1c"; priv3-gw = "2a00:8180:2c00:281::c:2"; priv30-gw = "2a00:8180:2c00:281::c:1d"; priv31-gw = "2a00:8180:2c00:281::c:1e"; priv32-gw = "2a00:8180:2c00:281::c:1f"; priv33-gw = "2a00:8180:2c00:281::c:20"; priv34-gw = "2a00:8180:2c00:281::c:21"; priv35-gw = "2a00:8180:2c00:281::c:22"; priv36-gw = "2a00:8180:2c00:281::c:23"; priv37-gw = "2a00:8180:2c00:281::c:24"; priv38-gw = "2a00:8180:2c00:281::c:25"; priv39-gw = "2a00:8180:2c00:281::c:26"; priv4-gw = "2a00:8180:2c00:281::c:3"; priv40-gw = "2a00:8180:2c00:281::c:27"; priv41-gw = "2a00:8180:2c00:281::c:28"; priv42-gw = "2a00:8180:2c00:281::c:29"; priv43-gw = "2a00:8180:2c00:281::c:2a"; priv44-gw = "2a00:8180:2c00:281::c:2b"; priv45-gw = "2a00:8180:2c00:281::c:2c"; priv5-gw = "2a00:8180:2c00:281::c:4"; priv6-gw = "2a00:8180:2c00:281::c:5"; priv7-gw = "2a00:8180:2c00:281::c:6"; priv8-gw = "2a00:8180:2c00:281::c:7"; priv9-gw = "2a00:8180:2c00:281::c:8"; serv-gw = "2a00:8180:2c00:281::8:1"; upstream4 = "2a00:8180:2c00:281::b:1"; vpn-gw = "2a00:8180:2c00:281:9001::1"; }; }; subnet4 = "172.20.72.0/25"; subnets6 = { dn42 = "fd23:42:c3d2:581::/64"; up4 = "2a00:8180:2c00:281::/64"; }; }; site.hosts = lib.mkMerge ([ { bgp = { bgp = { peers = { "172.22.99.253" = { asn = 64699; type = "external"; name = "dn42_4"; }; "fe80::a800:42ff:fe7a:3246%c3d2" = { asn = 64699; type = "external"; name = "dn42_6"; }; # ${config.site.net.core.subnet4} = {}; ${config.site.net.core.subnets6.dn42} = { type = "rr_server"; name = "rr"; }; }; # allowedUpstreams = # [ "upstream4" "upstream3" "anon1" "freifunk" ]; nets4 = [ "172.20.0.0/14" "10.0.0.0/8" ]; nets6 = [ "fd00::/8" "2a00:8180:2c00:200::/56" ]; }; role = "container"; interfaces = { c3d2 = { hwaddr = "0A:14:48:01:22:01"; type = "veth"; }; core = { hwaddr = "0A:14:48:01:22:00"; type = "veth"; }; }; }; } ] ++ builtins.concatMap (hostName: if hostName != "bgp" # everyone in core peers with router "bgp" then [ { ${hostName}.bgp = { # peers.${config.site.net.core.hosts4.bgp} = {}; peers.${config.site.net.core.hosts6.dn42.bgp} = { type = "rr_client"; name = "rr"; }; }; # TODO: upstreams } ] # except "bgp" itself :) else [] ) (builtins.attrNames config.site.net.core.hosts6.dn42)); }