From ca287b95c9592d21a408b2436092bc7ffb251f4d Mon Sep 17 00:00:00 2001 From: Felix Albrigtsen Date: Sun, 28 Jul 2024 19:25:52 +0200 Subject: [PATCH] Ildkule/openstack: fix networking Removes systemd-networkd, and configures proper ipv4 and ipv6 in openstack. --- hosts/ildkule/configuration.nix | 41 +++++++++++++++++---------------- misc/metrics-exporters.nix | 2 -- values.nix | 38 +++++++----------------------- 3 files changed, 29 insertions(+), 52 deletions(-) diff --git a/hosts/ildkule/configuration.nix b/hosts/ildkule/configuration.nix index 557f4985..c66d2618 100644 --- a/hosts/ildkule/configuration.nix +++ b/hosts/ildkule/configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, values, ... }: +{ config, pkgs, lib, values, ... }: { imports = [ # Include the results of the hardware scan. @@ -19,27 +19,28 @@ boot.tmp.cleanOnBoot = true; zramSwap.enable = true; - networking.hostName = "ildkule"; # Define your hostname. + # Openstack Neutron and systemd-networkd are not best friends, use something else: + systemd.network.enable = lib.mkForce false; + networking = let + hostConf = values.hosts.ildkule; + in { + hostName = "ildkule"; + tempAddresses = "disabled"; + useDHCP = lib.mkForce true; - # Main connection, using the global/floatig IP, for communications with the world - systemd.network.networks."30-ntnu-global" = values.openstackGlobalNetworkConfig // { - matchConfig.Name = "ens4"; + search = values.defaultNetworkConfig.domains; + nameservers = values.defaultNetworkConfig.dns; + defaultGateway.address = hostConf.ipv4_internal_gw; - # Add the global addresses in addition to the local address learned from DHCP - addresses = [ - { addressConfig.Address = "${values.hosts.ildkule.ipv4_global}/32"; } - { addressConfig.Address = "${values.hosts.ildkule.ipv6_global}/128"; } - ]; - }; - - # Secondary connection only for use within the university network - systemd.network.networks."40-ntnu-internal" = values.openstackLocalNetworkConfig // { - matchConfig.Name = "ens3"; - # Add the ntnu-internal addresses in addition to the local address learned from DHCP - addresses = [ - { addressConfig.Address = "${values.hosts.ildkule.ipv4}/32"; } - { addressConfig.Address = "${values.hosts.ildkule.ipv6}/128"; } - ]; + interfaces."ens4" = { + ipv4.addresses = [ + { address = hostConf.ipv4; prefixLength = 32; } + { address = hostConf.ipv4_internal; prefixLength = 24; } + ]; + ipv6.addresses = [ + { address = hostConf.ipv6; prefixLength = 64; } + ]; + }; }; # List packages installed in system profile diff --git a/misc/metrics-exporters.nix b/misc/metrics-exporters.nix index 4ee67e88..fed7c34e 100644 --- a/misc/metrics-exporters.nix +++ b/misc/metrics-exporters.nix @@ -14,8 +14,6 @@ "::1" values.hosts.ildkule.ipv4 values.hosts.ildkule.ipv6 - values.hosts.ildkule.ipv4_global - values.hosts.ildkule.ipv6_global ]; }; diff --git a/values.nix b/values.nix index 2e11f4fa..bfb87850 100644 --- a/values.nix +++ b/values.nix @@ -30,11 +30,10 @@ in rec { ipv6 = pvv-ipv6 168; }; ildkule = { - ipv4 = "10.212.25.209"; - ipv6 = "2001:700:300:6025:f816:3eff:feee:812d"; - - ipv4_global = "129.241.153.213"; - ipv6_global = "2001:700:300:6026:f816:3eff:fe58:f1e8"; + ipv4 = "129.241.153.213"; + ipv4_internal = "192.168.12.209"; + ipv4_internal_gw = "192.168.12.1"; + ipv6 = "2001:700:300:6026:f816:3eff:fe58:f1e8"; }; bicep = { ipv4 = pvv-ipv4 209; @@ -66,32 +65,11 @@ in rec { }; defaultNetworkConfig = { - networkConfig.IPv6AcceptRA = "no"; - gateway = [ hosts.gateway ]; - dns = [ "129.241.0.200" "129.241.0.201" ]; + dns = [ "129.241.0.200" "129.241.0.201" "2001:700:300:1900::200" "2001:700:300:1900::201" ]; domains = [ "pvv.ntnu.no" "pvv.org" ]; + gateway = [ hosts.gateway ]; + + networkConfig.IPv6AcceptRA = "no"; DHCP = "no"; }; - - openstackGlobalNetworkConfig = { - networkConfig.IPv6AcceptRA = "yes"; - dns = [ "129.241.0.200" "129.241.0.201" ]; - domains = [ "pvv.ntnu.no" "pvv.org" ]; - DHCP = "yes"; - }; - - openstackLocalNetworkConfig = { - networkConfig.IPv6AcceptRA = "no"; - dns = [ "129.241.0.200" "129.241.0.201" ]; - domains = [ "pvv.ntnu.no" "pvv.org" ]; - DHCP = "yes"; - - # Only use this network for link-local networking, not global/default routes - dhcpV4Config.UseRoutes = "no"; - routes = [ - { routeConfig = { Destination = "10.0.0.0/8"; Gateway = "_dhcp4"; }; } - ]; - - linkConfig.RequiredForOnline = "no"; - }; }