network/config/net/priv.nix

730 lines
18 KiB
Nix

{ lib, ... }:
let
privCount = 46;
seq = n: max:
if n <= max
then [ n ] ++ seq (n + 1) max
else [];
in
lib.mkMerge (
map (n:
let
toHex = n: with lib; toLower (toHexString n);
subnetUp4 = "2a00:8180:2c00:${toHex (703 + n)}::";
subnetDn42 = "fd23:42:c3d2:${toHex (1471 + n)}::";
in {
site.net."priv${toString n}" = {
dhcp = {
server = "priv${toString n}-gw";
time = 120;
max-time = 86400;
router = "priv${toString n}-gw";
};
domainName = "priv${toString n}.zentralwerk.org";
dynamicDomain = true;
hosts6 = {
dn42 = { "priv${toString n}-gw" = "${subnetDn42}1"; };
up4 = { "priv${toString n}-gw" = "${subnetUp4}1"; };
};
subnets6 = {
dn42 = "${subnetDn42}/64";
up4 = "${subnetUp4}/64";
};
};
site.hosts."priv${toString n}-gw" = {
role = "container";
interfaces = {
core.type = "veth";
"priv${toString n}".type = "veth";
};
ospf.allowedUpstreams = [ "upstream4" "upstream3" "anon1" "freifunk" ];
};
}
) (seq 1 privCount)
++
[ {
site.net = {
priv1 = {
subnet4 = "172.20.74.0/28";
hosts4 = { priv1-gw = "172.20.74.1"; };
dhcp = {
end = "172.20.74.14";
start = "172.20.74.2";
};
};
priv2 = {
hosts4 = { priv2-gw = "172.20.75.1"; };
subnet4 = "172.20.75.0/27";
dhcp = {
start = "172.20.75.2";
end = "172.20.75.31";
fixed-hosts = {
"172.20.75.7" = "60:33:4b:0b:cd:fc";
"172.20.75.9" = "00:11:32:22:95:79";
};
};
};
priv3 = {
hosts4 = { priv3-gw = "172.20.74.129"; };
subnet4 = "172.20.74.128/28";
dhcp = {
start = "172.20.74.130";
end = "172.20.74.142";
};
};
priv4 = {
hosts4 = { priv4-gw = "172.20.75.129"; };
subnet4 = "172.20.75.128/28";
dhcp = {
start = "172.20.75.130";
end = "172.20.75.142";
};
};
priv5 = {
hosts4 = { priv5-gw = "172.20.74.65"; };
subnet4 = "172.20.74.64/28";
dhcp = {
start = "172.20.74.66";
end = "172.20.74.78";
};
};
priv6 = {
hosts4 = { priv6-gw = "172.20.74.193"; };
subnet4 = "172.20.74.192/28";
dhcp = {
start = "172.20.74.194";
end = "172.20.74.206";
};
};
priv7 = {
hosts4 = { priv7-gw = "172.20.75.65"; };
subnet4 = "172.20.75.64/28";
dhcp = {
start = "172.20.75.66";
end = "172.20.75.78";
};
};
priv8 = {
hosts4 = { priv8-gw = "172.20.75.193"; };
subnet4 = "172.20.75.192/28";
dhcp = {
start = "172.20.75.194";
end = "172.20.75.206";
};
};
priv9 = {
hosts4 = { priv9-gw = "172.20.74.33"; };
subnet4 = "172.20.74.32/28";
dhcp = {
start = "172.20.74.34";
end = "172.20.74.46";
};
};
priv10 = {
hosts4 = { priv10-gw = "172.20.74.97"; };
subnet4 = "172.20.74.96/28";
dhcp = {
start = "172.20.74.98";
end = "172.20.74.110";
};
};
priv11 = {
hosts4 = { priv11-gw = "172.20.74.161"; };
subnet4 = "172.20.74.160/28";
dhcp = {
start = "172.20.74.162";
end = "172.20.74.174";
};
};
priv12 = {
hosts4 = { priv12-gw = "172.20.74.225"; };
subnet4 = "172.20.74.224/28";
dhcp = {
start = "172.20.74.226";
end = "172.20.74.238";
};
};
priv13 = {
hosts4 = { priv13-gw = "172.20.75.33"; };
subnet4 = "172.20.75.32/28";
dhcp = {
start = "172.20.75.34";
end = "172.20.75.46";
};
};
priv14 = {
hosts4 = { priv14-gw = "172.20.75.97"; };
subnet4 = "172.20.75.96/28";
dhcp = {
start = "172.20.75.98";
end = "172.20.75.110";
};
};
priv15 = {
hosts4 = { priv15-gw = "172.20.75.161"; };
subnet4 = "172.20.75.160/28";
dhcp = {
start = "172.20.75.162";
end = "172.20.75.174";
};
};
priv16 = {
hosts4 = { priv16-gw = "172.20.75.225"; };
subnet4 = "172.20.75.224/28";
dhcp = {
start = "172.20.75.226";
end = "172.20.75.238";
};
};
priv17 = {
hosts4 = {
priv17-gw = "172.20.73.129";
priv17-gw-up3 = "172.20.73.130";
};
subnet4 = "172.20.73.128/27";
dhcp = {
start = "172.20.73.131";
end = "172.20.73.158";
};
};
priv18 = {
hosts4 = { priv18-gw = "172.20.74.49"; };
subnet4 = "172.20.74.48/28";
dhcp = {
start = "172.20.74.50";
end = "172.20.74.62";
};
};
priv19 = {
hosts4 = { priv19-gw = "172.20.73.193"; };
subnet4 = "172.20.73.192/26";
dhcp = {
start = "172.20.73.194";
end = "172.20.73.254";
max-time = lib.mkForce 2592000;
};
};
priv20 = {
hosts4 = { priv20-gw = "172.20.74.113"; };
subnet4 = "172.20.74.112/28";
dhcp = {
start = "172.20.74.114";
end = "172.20.74.126";
};
};
priv21 = {
hosts4 = { priv21-gw = "172.20.74.145"; };
subnet4 = "172.20.74.144/28";
dhcp = {
start = "172.20.74.146";
end = "172.20.74.158";
};
};
priv22 = {
hosts4 = { priv22-gw = "172.20.74.177"; };
subnet4 = "172.20.74.176/28";
dhcp = {
start = "172.20.74.178";
end = "172.20.74.190";
};
};
priv23 = {
hosts4 = { priv23-gw = "172.20.73.161"; };
subnet4 = "172.20.73.160/27";
dhcp = {
start = "172.20.73.165";
end = "172.20.73.190";
fixed-hosts = {
"172.20.73.162" = "da:2c:3a:2c:87:22";
"172.20.73.163" = "ca:9f:27:b2:bf:6d";
"172.20.73.164" = "60:01:94:6f:81:a6";
};
};
};
priv24 = {
hosts4 = { priv24-gw = "172.20.74.241"; };
subnet4 = "172.20.74.240/28";
dhcp = {
start = "172.20.74.242";
end = "172.20.74.254";
};
};
priv25 = {
hosts4 = { priv25-gw = "172.20.74.81"; };
subnet4 = "172.20.74.80/28";
dhcp = {
start = "172.20.74.82";
end = "172.20.74.94";
};
};
priv26 = {
hosts4 = { priv26-gw = "172.20.75.49"; };
subnet4 = "172.20.75.48/28";
dhcp = {
start = "172.20.75.50";
end = "172.20.75.62";
};
};
priv27 = {
hosts4 = { priv27-gw = "172.20.75.81"; };
subnet4 = "172.20.75.80/28";
dhcp = {
start = "172.20.75.82";
end = "172.20.75.94";
};
};
priv28 = {
hosts4 = { priv28-gw = "172.20.75.113"; };
subnet4 = "172.20.75.112/28";
dhcp = {
start = "172.20.75.114";
end = "172.20.75.126";
};
};
priv29 = {
hosts4 = { priv29-gw = "172.20.75.145"; };
subnet4 = "172.20.75.144/28";
dhcp = {
start = "172.20.75.146";
end = "172.20.75.158";
};
};
priv30 = {
hosts4 = { priv30-gw = "172.20.75.177"; };
subnet4 = "172.20.75.176/28";
dhcp = {
start = "172.20.75.178";
end = "172.20.75.190";
};
};
priv31 = {
hosts4 = { priv31-gw = "172.20.75.209"; };
subnet4 = "172.20.75.208/28";
dhcp = {
start = "172.20.75.210";
end = "172.20.75.221";
fixed-hosts = {
# zw-ev-vm
"172.20.75.222" = "92:a8:00:49:a6:61";
};
};
};
priv32 = {
hosts4 = { priv32-gw = "172.20.75.241"; };
subnet4 = "172.20.75.240/28";
dhcp = {
start = "172.20.75.242";
end = "172.20.75.254";
};
};
priv33 = {
hosts4 = { priv33-gw = "172.20.74.17"; };
subnet4 = "172.20.74.16/28";
dhcp = {
start = "172.20.74.18";
end = "172.20.74.30";
};
};
priv34 = {
hosts4 = { priv34-gw = "172.20.74.209"; };
subnet4 = "172.20.74.208/28";
dhcp = {
start = "172.20.74.210";
end = "172.20.74.222";
};
};
priv35 = {
hosts4 = { priv35-gw = "172.20.76.1"; };
subnet4 = "172.20.76.0/28";
dhcp = {
start = "172.20.76.2";
end = "172.20.76.14";
};
};
priv36 = {
hosts4 = { priv36-gw = "172.20.76.65"; };
subnet4 = "172.20.76.64/28";
dhcp = {
start = "172.20.76.66";
end = "172.20.76.78";
};
};
priv37 = {
hosts4 = { priv37-gw = "172.20.76.129"; };
subnet4 = "172.20.76.128/28";
dhcp = {
start = "172.20.76.130";
end = "172.20.76.142";
};
};
priv38 = {
hosts4 = { priv38-gw = "172.20.76.193"; };
subnet4 = "172.20.76.192/28";
dhcp = {
start = "172.20.76.194";
end = "172.20.76.206";
};
};
priv39 = {
hosts4 = { priv39-gw = "172.20.77.129"; };
subnet4 = "172.20.77.128/28";
dhcp = {
start = "172.20.77.130";
end = "172.20.77.142";
};
};
priv40 = {
hosts4 = { priv40-gw = "172.20.77.65"; };
subnet4 = "172.20.77.64/28";
dhcp = {
start = "172.20.77.66";
end = "172.20.77.78";
};
};
priv41 = {
hosts4 = { priv41-gw = "172.20.77.193"; };
subnet4 = "172.20.77.192/28";
dhcp = {
start = "172.20.77.194";
end = "172.20.77.206";
};
};
priv42 = {
hosts4 = { priv42-gw = "172.20.76.33"; };
subnet4 = "172.20.76.32/28";
dhcp = {
start = "172.20.76.34";
end = "172.20.76.46";
};
};
priv43 = {
hosts4 = { priv43-gw = "172.20.76.97"; };
subnet4 = "172.20.76.96/28";
dhcp = {
start = "172.20.76.98";
end = "172.20.76.110";
};
};
priv44 = {
hosts4 = { priv44-gw = "172.20.77.97"; };
subnet4 = "172.20.77.96/28";
dhcp = {
start = "172.20.77.98";
end = "172.20.77.110";
};
};
priv45 = {
hosts4 = { priv45-gw = "172.20.77.161"; };
subnet4 = "172.20.77.160/28";
dhcp = {
start = "172.20.77.162";
end = "172.20.77.174";
};
};
priv46 = {
hosts4 = { priv46-gw = "172.20.77.225"; };
subnet4 = "172.20.77.224/29";
dhcp = {
start = "172.20.77.225";
end = "172.20.77.230";
};
};
};
site.hosts = {
priv1-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:19:00";
priv1.hwaddr = "0A:14:48:01:19:01";
};
};
priv2-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:18:00";
priv2.hwaddr = "0A:14:48:01:18:01";
};
};
priv3-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:08:00";
priv3.hwaddr = "0A:14:48:01:08:01";
};
};
priv4-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:17:01";
priv4.hwaddr = "0A:14:48:01:17:00";
};
};
priv5-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:12:00";
priv5.hwaddr = "0A:14:48:01:12:01";
};
};
priv6-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:11:00";
priv6.hwaddr = "0A:14:48:01:11:01";
};
};
priv7-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:10:00";
priv7.hwaddr = "0A:14:48:01:10:01";
};
};
priv8-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:09:00";
priv8.hwaddr = "0A:14:48:01:09:01";
};
};
priv9-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:20:00";
priv9.hwaddr = "0A:14:48:01:20:01";
};
};
priv10-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:13:02";
priv10.hwaddr = "0A:14:48:01:13:03";
};
};
priv11-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:29:00";
priv11.hwaddr = "0A:14:48:01:29:01";
};
};
priv12-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:00";
priv12.hwaddr = "0A:14:48:01:2A:01";
};
};
priv13-gw = {
firewall.enable = true;
interfaces = {
core.hwaddr = "0A:14:48:01:2A:10";
priv13.hwaddr = "0A:14:48:01:2A:11";
};
};
priv14-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:12";
priv14.hwaddr = "0A:14:48:01:2A:13";
};
};
priv15-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:14";
priv15.hwaddr = "0A:14:48:01:2A:15";
};
};
priv16-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:16";
priv16.hwaddr = "0A:14:48:01:2A:17";
};
};
priv17-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:18";
priv17.hwaddr = "0A:14:48:01:2A:19";
};
};
priv17-gw-up3 = {
role = "container";
interfaces = {
core = {
type = "veth";
hwaddr = "0A:14:47:02:2A:18";
};
priv17 = {
type = "veth";
hwaddr = "0A:14:47:02:2A:19";
};
};
ospf.allowedUpstreams = [ "upstream3" "upstream4" "anon1" "freifunk" ];
};
priv18-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:1A";
priv18.hwaddr = "0A:14:48:01:2A:1B";
};
};
priv19-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:1C";
priv19.hwaddr = "0A:14:48:01:2A:1D";
};
};
priv20-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:1E";
priv20.hwaddr = "0A:14:48:01:2A:1F";
};
};
priv21-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:20";
priv21.hwaddr = "0A:14:48:01:2A:21";
};
};
priv22-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:24";
priv22.hwaddr = "0A:14:48:01:2A:25";
};
};
priv23-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:22";
priv23.hwaddr = "0A:14:48:01:2A:23";
};
};
priv24-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:26";
priv24.hwaddr = "0A:14:48:01:2A:27";
};
};
priv25-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:28";
priv25.hwaddr = "0A:14:48:01:2A:29";
};
};
priv26-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:2A";
priv26.hwaddr = "0A:14:48:01:2A:2B";
};
};
priv27-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:2C";
priv27.hwaddr = "0A:14:48:01:2A:2D";
};
};
priv28-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:2E";
priv28.hwaddr = "0A:14:48:01:2A:2F";
};
};
priv29-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:30";
priv29.hwaddr = "0A:14:48:01:2A:31";
};
};
priv30-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:32";
priv30.hwaddr = "0A:14:48:01:2A:33";
};
};
priv31-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:34";
priv31.hwaddr = "0A:14:48:01:2A:35";
};
};
priv32-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:36";
priv32.hwaddr = "0A:14:48:01:2A:37";
};
};
priv33-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:38";
priv33.hwaddr = "0A:14:48:01:2A:39";
};
};
priv34-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:40";
priv34.hwaddr = "0A:14:48:01:2A:41";
};
};
priv35-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:42";
priv35.hwaddr = "0A:14:48:01:2A:43";
};
};
priv36-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:44";
priv36.hwaddr = "0A:14:48:01:2A:45";
};
};
priv37-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:46";
priv37.hwaddr = "0A:14:48:01:2A:47";
};
};
priv38-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:48";
priv38.hwaddr = "0A:14:48:01:2A:49";
};
};
priv39-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:4A";
priv39.hwaddr = "0A:14:48:01:2A:4B";
};
};
priv40-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:4C";
priv40.hwaddr = "0A:14:48:01:2A:4D";
};
};
priv41-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:4E";
priv41.hwaddr = "0A:14:48:01:2A:4F";
};
};
priv42-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:50";
priv42.hwaddr = "0A:14:48:01:2A:51";
};
};
priv43-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:52";
priv43.hwaddr = "0A:14:48:01:2A:53";
};
};
priv44-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:54";
priv44.hwaddr = "0A:14:48:01:2A:55";
};
};
priv45-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:56";
priv45.hwaddr = "0A:14:48:01:2A:57";
};
};
priv46-gw = {
interfaces = {
core.hwaddr = "0A:14:48:01:2A:58";
priv46.hwaddr = "0A:14:48:01:2A:59";
};
};
};
} ]
)