diff --git a/hosts/nonat/configuration.nix b/hosts/nonat/configuration.nix index 01e13ba..6102fd9 100644 --- a/hosts/nonat/configuration.nix +++ b/hosts/nonat/configuration.nix @@ -6,6 +6,7 @@ ./hardware-configuration.nix ../../configuration/common ../../configuration/proxmox-vm + ../../configuration/router ]; boot.loader.grub.enable = true; @@ -15,6 +16,16 @@ networking.hostName = "nonat"; networking.useDHCP = false; + # Local Router IPs + networking.interfaces.lo.ipv6.addresses = [ + { address = "fd00:152:152:103::1"; prefixLength = 64; } + { address = "fd00:152:152::1"; prefixLength = 64; } # Anycast + ]; + networking.interfaces.lo.ipv4.addresses = [ + { address = "10.152.103.1"; prefixLength = 24; } + { address = "10.152.0.1"; prefixLength = 24; } # Anycast + ]; + # Network networking.interfaces.ens18.ipv4.addresses = [ { address = "141.24.46.169"; prefixLength = 24; } ]; @@ -54,5 +65,48 @@ networking.firewall.allowedUDPPorts = [ 51337 ]; + services.bird2.enable = true; + services.bird2.config = '' + router id ${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address }; + + ipv6 table ospf6; + + protocol direct { + interface "lo"; + ipv6 { + table ospf6; + }; + } + + protocol kernel { + ipv6 { + table ospf6; + export filter { + krt_prefsrc=fd00:152:152:103::1; + accept; + }; + import none; + }; + } + + protocol ospf v3 { + ipv6 { + table ospf6; + import all; + export all; + }; + area 0 { + interface "wg-porter" { + cost 80; + type pointopoint; + }; + }; + } + + protocol device { + scan time 10; + } + ''; + system.stateVersion = "21.03"; } diff --git a/hosts/porter/configuration.nix b/hosts/porter/configuration.nix index 364844c..4999198 100644 --- a/hosts/porter/configuration.nix +++ b/hosts/porter/configuration.nix @@ -1,10 +1,11 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: { imports = [ ./hardware-configuration.nix ../../configuration/common + ../../configuration/router ]; boot.loader.grub.enable = true; @@ -14,6 +15,16 @@ networking.hostName = "porter"; networking.useDHCP = false; + # Local Router IPs + networking.interfaces.lo.ipv6.addresses = [ + { address = "fd00:152:152:102::1"; prefixLength = 64; } + { address = "fd00:152:152::1"; prefixLength = 64; } # Anycast + ]; + networking.interfaces.lo.ipv4.addresses = [ + { address = "10.152.102.1"; prefixLength = 24; } + { address = "10.152.0.1"; prefixLength = 24; } # Anycast + ]; + # Network networking.interfaces.ens3.ipv4.addresses = [ { address = "188.34.158.206"; prefixLength = 32; } ]; networking.interfaces.ens3.ipv6.addresses = [ { address = "2a01:4f8:c010:4c92::1"; prefixLength = 64; } ]; networking.defaultGateway = { address = "172.31.1.1"; interface = "ens3"; }; @@ -36,5 +47,48 @@ networking.firewall.allowedUDPPorts = [ 51337 ]; + services.bird2.enable = true; + services.bird2.config = '' + router id ${ (lib.head config.networking.interfaces.lo.ipv4.addresses).address }; + + ipv6 table ospf6; + + protocol direct { + interface "lo"; + ipv6 { + table ospf6; + }; + } + + protocol kernel { + ipv6 { + table ospf6; + export filter { + krt_prefsrc=fd00:152:152:102::1; + accept; + }; + import none; + }; + } + + protocol ospf v3 { + ipv6 { + table ospf6; + import all; + export all; + }; + area 0 { + interface "wg-nonat" { + cost 80; + type pointopoint; + }; + }; + } + + protocol device { + scan time 10; + } + ''; + system.stateVersion = "21.03"; }