Add raccoon peer to wireguard

It routes traffic from fox, apex and the compute nodes so that we can
reach the git servers and tent.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
This commit is contained in:
Rodrigo Arias 2025-09-25 15:01:33 +02:00
parent 26a4a26ce0
commit 08e4dda6d2
10 changed files with 76 additions and 1 deletions

View File

@ -25,11 +25,18 @@
# Send keepalives every 25 seconds. Important to keep NAT tables alive. # Send keepalives every 25 seconds. Important to keep NAT tables alive.
persistentKeepalive = 25; persistentKeepalive = 25;
} }
{
name = "raccoon";
publicKey = "QUfnGXSMEgu2bviglsaSdCjidB51oEDBFpnSFcKGfDI=";
allowedIPs = [ "10.106.0.236/32" "192.168.0.0/16" "10.0.44.0/24" ];
}
]; ];
}; };
}; };
networking.hosts = { networking.hosts = {
"10.106.0.1" = [ "fox" ]; "10.106.0.1" = [ "fox" ];
"10.106.0.236" = [ "raccoon" ];
"10.0.44.4" = [ "tent" ];
}; };
} }

View File

@ -15,7 +15,6 @@
hosts = { hosts = {
"84.88.53.236" = [ "ssfhead.bsc.es" "ssfhead" ]; "84.88.53.236" = [ "ssfhead.bsc.es" "ssfhead" ];
"84.88.51.152" = [ "raccoon" ];
"84.88.51.142" = [ "raccoon-ipmi" ]; "84.88.51.142" = [ "raccoon-ipmi" ];
}; };
}; };

View File

@ -4,6 +4,7 @@
./xeon.nix ./xeon.nix
./ssf/fs.nix ./ssf/fs.nix
./ssf/hosts.nix ./ssf/hosts.nix
./ssf/hosts-remote.nix
./ssf/net.nix ./ssf/net.nix
./ssf/ssh.nix ./ssf/ssh.nix
]; ];

View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
networking.hosts = {
# Remote hosts visible from compute nodes
"10.106.0.236" = [ "raccoon" ];
"10.0.44.4" = [ "tent" ];
};
}

View File

@ -29,12 +29,19 @@
# List of IPs assigned to this peer within the tunnel subnet. Used to configure routing. # List of IPs assigned to this peer within the tunnel subnet. Used to configure routing.
allowedIPs = [ "10.106.0.30/32" ]; allowedIPs = [ "10.106.0.30/32" ];
} }
{
name = "raccoon";
publicKey = "QUfnGXSMEgu2bviglsaSdCjidB51oEDBFpnSFcKGfDI=";
allowedIPs = [ "10.106.0.236/32" "192.168.0.0/16" "10.0.44.0/24" ];
}
]; ];
}; };
}; };
networking.hosts = { networking.hosts = {
"10.106.0.30" = [ "apex" ]; "10.106.0.30" = [ "apex" ];
"10.106.0.236" = [ "raccoon" ];
"10.0.44.4" = [ "tent" ];
}; };
networking.firewall = { networking.firewall = {

View File

@ -8,6 +8,7 @@
../module/ssh-hut-extern.nix ../module/ssh-hut-extern.nix
../module/nvidia.nix ../module/nvidia.nix
../eudy/kernel/perf.nix ../eudy/kernel/perf.nix
./wireguard.nix
]; ];
# Don't install Grub on the disk yet # Don't install Grub on the disk yet

48
m/raccoon/wireguard.nix Normal file
View File

@ -0,0 +1,48 @@
{ config, pkgs, ... }:
{
networking.nat = {
enable = true;
enableIPv6 = false;
externalInterface = "eno0";
internalInterfaces = [ "wg0" ];
};
networking.firewall = {
allowedUDPPorts = [ 666 ];
};
age.secrets.wgRaccoon.file = ../../secrets/wg-raccoon.age;
# Enable WireGuard
networking.wireguard.enable = true;
networking.wireguard.interfaces = {
wg0 = {
ips = [ "10.106.0.236/24" ];
listenPort = 666;
privateKeyFile = config.age.secrets.wgRaccoon.path;
# Public key: QUfnGXSMEgu2bviglsaSdCjidB51oEDBFpnSFcKGfDI=
peers = [
{
name = "fox";
publicKey = "VfMPBQLQTKeyXJSwv8wBhc6OV0j2qAxUpX3kLHunK2Y=";
allowedIPs = [ "10.106.0.1/32" ];
endpoint = "fox.ac.upc.edu:666";
persistentKeepalive = 25;
}
{
name = "apex";
publicKey = "VwhcN8vSOzdJEotQTpmPHBC52x3Hbv1lkFIyKubrnUA=";
allowedIPs = [ "10.106.0.30/32" "10.0.40.0/24" ];
endpoint = "ssfhead.bsc.es:666";
persistentKeepalive = 25;
}
];
};
};
networking.hosts = {
"10.106.0.1" = [ "fox.wg" ];
"10.106.0.30" = [ "apex.wg" ];
};
}

View File

@ -35,6 +35,7 @@
defaultGateway = "10.0.44.1"; defaultGateway = "10.0.44.1";
hosts = { hosts = {
"84.88.53.236" = [ "apex" ]; "84.88.53.236" = [ "apex" ];
"10.0.44.1" = [ "raccoon" ];
}; };
}; };

View File

@ -4,6 +4,7 @@ let
hut = [ keys.hosts.hut ] ++ adminsKeys; hut = [ keys.hosts.hut ] ++ adminsKeys;
fox = [ keys.hosts.fox ] ++ adminsKeys; fox = [ keys.hosts.fox ] ++ adminsKeys;
apex = [ keys.hosts.apex ] ++ adminsKeys; apex = [ keys.hosts.apex ] ++ adminsKeys;
raccoon = [ keys.hosts.raccoon ] ++ adminsKeys;
mon = [ keys.hosts.hut keys.hosts.tent ] ++ adminsKeys; mon = [ keys.hosts.hut keys.hosts.tent ] ++ adminsKeys;
tent = [ keys.hosts.tent ] ++ adminsKeys; tent = [ keys.hosts.tent ] ++ adminsKeys;
# Only expose ceph keys to safe nodes and admins # Only expose ceph keys to safe nodes and admins
@ -29,4 +30,5 @@ in
"wg-fox.age".publicKeys = fox; "wg-fox.age".publicKeys = fox;
"wg-apex.age".publicKeys = apex; "wg-apex.age".publicKeys = apex;
"wg-raccoon.age".publicKeys = raccoon;
} }

BIN
secrets/wg-raccoon.age Normal file

Binary file not shown.