diff --git a/pxe-server/configuration.nix b/pxe-server/configuration.nix index f4e3436..b1c772f 100644 --- a/pxe-server/configuration.nix +++ b/pxe-server/configuration.nix @@ -20,6 +20,11 @@ let interface = "enp0s31f6"; serverIp = "192.168.1.10"; + # Interface par laquelle CE serveur a lui-même accès à Internet — c'est + # elle qui sert de sortie NAT pour le segment PXE (utile seulement en + # standaloneDhcp = true, où ce serveur est aussi la passerelle). + internetInterface = "wlp3s0"; + fleetRepo = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git"; webroot = "/var/www/pxe"; tftpRoot = "/var/lib/tftpboot"; @@ -85,8 +90,13 @@ in "dhcp-range" = [ "192.168.1.50,192.168.1.150,12h" ]; # à adapter au réseau cible # port = 0 désactive le DNS de dnsmasq : sans ça, les PC installés # via DHCP de ce serveur n'ont aucun serveur DNS fonctionnel et ne - # peuvent résoudre ni GitHub ni Gitea pendant l'install. - "dhcp-option" = [ "option:dns-server,1.1.1.1,9.9.9.9" ]; + # peuvent résoudre ni GitHub ni Gitea pendant l'install. Pareil + # pour la passerelle : sans "router" explicite, les PC installés + # n'ont aucune route vers Internet (voir networking.nat plus bas). + "dhcp-option" = [ + "option:dns-server,1.1.1.1,9.9.9.9" + "option:router,${serverIp}" + ]; } else { "dhcp-range" = [ "192.168.1.0,proxy" ]; } # à adapter au sous-réseau existant @@ -179,6 +189,17 @@ in } ]; + # Route + NAT le segment PXE vers Internet via internetInterface. Sans + # ça, les PC installés reçoivent bien une IP/passerelle/DNS mais aucun + # paquet ne sort réellement du segment 192.168.1.0/24 — uniquement + # nécessaire en standaloneDhcp = true (ce serveur EST la passerelle). + boot.kernel.sysctl."net.ipv4.ip_forward" = lib.mkIf standaloneDhcp 1; + networking.nat = lib.mkIf standaloneDhcp { + enable = true; + internalInterfaces = [ interface ]; + externalInterface = internetInterface; + }; + services.openssh.enable = true; # git installé pour de bon (pull/push manuels sans réouvrir un