From b6ebe0f136350a9d84b8cc56223b899826ab696b Mon Sep 17 00:00:00 2001 From: Astro Date: Sun, 18 Sep 2022 00:17:59 +0200 Subject: [PATCH] net/flpk: init --- config/net/core.nix | 1 + config/net/flpk.nix | 46 +++++---- config/secrets-production.nix.gpg | 141 ++++++++++++++-------------- config/secrets.nix | 6 ++ config/vlan.nix | 1 + nix/nixos-module/container/bird.nix | 10 +- 6 files changed, 113 insertions(+), 92 deletions(-) diff --git a/config/net/core.nix b/config/net/core.nix index 15c820a..4d147f4 100644 --- a/config/net/core.nix +++ b/config/net/core.nix @@ -68,6 +68,7 @@ upstream4 = "172.20.72.12"; yggdrasil = "172.20.72.62"; vpn-gw = "172.20.72.69"; + flpk-gw = "172.20.72.71"; }; hosts6 = { dn42 = { diff --git a/config/net/flpk.nix b/config/net/flpk.nix index 0cdbf53..45a7cd1 100644 --- a/config/net/flpk.nix +++ b/config/net/flpk.nix @@ -1,23 +1,31 @@ { - site.hosts = { - flpk-gw = { - interfaces = { - core = { - hwaddr = "0A:14:48:b7:e4:91"; - type = "veth"; - }; - up-flpk = { - type = "wireguard"; - upstream = { - provider = "flpk"; - }; - }; - }; - ospf = { - allowedUpstreams = [ "upstream3" "upstream4" "freifunk" ]; - # upstreamInstance = TODO; - }; - role = "container"; + site.net.flpk = { + domainName = "flpk.zentralwerk.org"; + subnet4 = "45.158.40.160/27"; + hosts4 = { + serv-gw = "45.158.40.161"; + }; + hosts6.flpk = { }; }; + + site.hosts.flpk-gw = { + interfaces = { + core = { + hwaddr = "0A:14:48:b7:e4:91"; + type = "veth"; + }; + up-flpk = { + type = "wireguard"; + upstream = { + provider = "flpk"; + }; + }; + }; + ospf = { + allowedUpstreams = [ "upstream4" "upstream3" "freifunk" ]; + upstreamInstance = 2; + }; + role = "container"; + }; } diff --git a/config/secrets-production.nix.gpg b/config/secrets-production.nix.gpg index fdfb681..4b79865 100644 --- a/config/secrets-production.nix.gpg +++ b/config/secrets-production.nix.gpg @@ -1,72 +1,75 @@ -----BEGIN PGP MESSAGE----- -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 -e/cwvwApOAPfnHRnIjgwpL8ClFKpb3eGJG0R -=/8M5 +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 +4Wisfym3fPj3GYbgBq6nfwBUKG2JyJsR6A== +=1iKS -----END PGP MESSAGE----- diff --git a/config/secrets.nix b/config/secrets.nix index 3eba901..efb287f 100644 --- a/config/secrets.nix +++ b/config/secrets.nix @@ -83,6 +83,12 @@ privateKey = "encrypted"; publicKey = "encrypted"; }; + flpk-gw.interfaces.up-flpk.wireguard = { + addresses = [ "fec0::1/64" "192.168.0.1/24" ]; + endpoint = "0.0.0.1"; + privateKey = "encrypted"; + publicKey = "encrypted"; + }; yggdrasil.services.yggdrasil.keys = '' { diff --git a/config/vlan.nix b/config/vlan.nix index 21d4efb..97cd074 100644 --- a/config/vlan.nix +++ b/config/vlan.nix @@ -18,6 +18,7 @@ in c3d2 = 5; cluster = 6; bmx = 7; + flpk = 8; # Modems up1 = 10; up2 = 11; diff --git a/nix/nixos-module/container/bird.nix b/nix/nixos-module/container/bird.nix index 80c97e9..51a8688 100644 --- a/nix/nixos-module/container/bird.nix +++ b/nix/nixos-module/container/bird.nix @@ -2,6 +2,8 @@ { hostName, config, lib, pkgs, ... }: let + hostNameEscaped = builtins.replaceStrings [ "-" ] [ "_" ] hostName; + hostConf = config.site.hosts.${hostName}; upstreamInterfaces = lib.filterAttrs (_: { upstream, ... }: @@ -170,7 +172,7 @@ in ${lib.optionalString isUpstream '' # OSPFv2 to advertise my default route - protocol ospf v2 ZW4_${hostName} { + protocol ospf v2 ZW4_${hostNameEscaped} { ipv4 { export where net = 0.0.0.0/0; }; @@ -279,7 +281,7 @@ in ${lib.optionalString isUpstream '' # OSPFv3 to advertise my default route - protocol ospf v3 ZW6_${hostName} { + protocol ospf v3 ZW6_${hostNameEscaped} { ipv6 { export where net = ::/0; }; @@ -412,8 +414,8 @@ in ]; }; instance = { - ipv4 = "ZW4_${hostName}"; - ipv6 = "ZW6_${hostName}"; + ipv4 = "ZW4_${hostNameEscaped}"; + ipv6 = "ZW6_${hostNameEscaped}"; }; checkService = addressFamily: { description = "Check connectivity for ${addressFamily}";