mgmt init
This commit is contained in:
parent
0a9aa08cd6
commit
a4fd96a197
8 changed files with 121 additions and 3 deletions
|
@ -1,2 +1,4 @@
|
||||||
# nix
|
# nix
|
||||||
|
|
||||||
|
bastion.mtz.lasuite.federez: nePNA6RDzgNeSC7deXqeoK2rGGei65tBNnCEN6ZKkEI=
|
||||||
|
bastion.ren.lasuite.federez: tSnZQM0s1EaN2uvCgYP8xkLXt+NccBBPJj5UBzV3h2Y=
|
15
secrets/bastion/wg-private-zone-1.age
Normal file
15
secrets/bastion/wg-private-zone-1.age
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 AoNqxQ knbcHLEYnoQjMfF+ZNck0wpAceeb8ooq3A8bzoLgFy8
|
||||||
|
W+CESgJr8Ck3JQ61I2G7vPpycfIcWp/gUt1pIk2XaWE
|
||||||
|
-> ssh-ed25519 Ql/wMw a7yY5Jvs6n//AiCDnPX19jjlmvZKXivO33Cg0aMjQ08
|
||||||
|
2I0uy0Nk2w1Kg7CYu3lyOJUqZNbb3WaQudwviXlZB4A
|
||||||
|
-> ssh-ed25519 Ecp4NA cn8KR9O3a/DXUt5nwCvNBToAbClwvb5P7AYpey11dTs
|
||||||
|
Xg7veR9JMgjSzBf4dfqmJdJ/byZADiiwBvUzOkQb/+A
|
||||||
|
-> ssh-ed25519 vHebMw pgh2K90AbukQANSsagUTpHWBJUCcBVPIRXNhiUFS7Sw
|
||||||
|
3QaFQ6DkZq9UhK6/l2nu5IOESN6VRnxoRgSkIWBFLqk
|
||||||
|
-> ssh-ed25519 um7xWA y1cegmPgkhOFFML7ZgMvXqV2ZCx44LyxHbgga6wDkg8
|
||||||
|
qDoj0U0Ky0V5S3dSUIahsjkB7y2VFROtK3CoLog/VUY
|
||||||
|
-> ssh-ed25519 oRtTqQ 06JdS8UUfhneHp7NE2vAVde0uwcwirgFDy2QFTPdPxE
|
||||||
|
3JaKSODSeWx59iCv8b1THvUY8kH7KPE6BNPuAS28E6o
|
||||||
|
--- Q/FVLEXjSsvWbtq29gvNrXKS0CmFgHay48x5PvT5vOM
|
||||||
|
ËBÝÍ:îA×Ö˜bäõ˜h<™öp`özj<7A>`¶ÔG@¦Ù¼WcghêÊæú»²³TƈÉãÓÝúYöÖu…Öþó_N™<4E>XÞ˜ºIhn
|
15
secrets/bastion/wg-private-zone-2.age
Normal file
15
secrets/bastion/wg-private-zone-2.age
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 AoNqxQ 70DTIbXzMPbLII1tQzjnPSVcSnPL7DeRO2OhSQkZIQ8
|
||||||
|
EOnW7swnuwE+FXcnMAE9xbhqwmV/PAhrKqnZEnvn80g
|
||||||
|
-> ssh-ed25519 Ql/wMw abCAkodTVDy0q4WZS9OzEpGnLa0tB9cW4jpk9nwslx8
|
||||||
|
1OEMzTHAjEbv03UH5HNFPQ0Wp6G8WegAsEBZaZWY5O0
|
||||||
|
-> ssh-ed25519 Ecp4NA 4sCVyiIkgsEJkZbTJIBYSAIR6Ya8YcfHAkDkadpP6ng
|
||||||
|
ubYW2caWfDZg9KDasuVYZg+VlKPl1d7ajlb/XKMREb0
|
||||||
|
-> ssh-ed25519 vHebMw 2WWQ6SmwdWIyDZVvPVQQVyRf1tI1Em46DbiTbwTCaTg
|
||||||
|
8+aGXKlD27AVCDRBJVt1AaOKcKhfe5N61Zcx+43qEak
|
||||||
|
-> ssh-ed25519 um7xWA 09ho4VI2L9LlPiOXP9U60fiWRWTJWOHN9bISD9KGZyk
|
||||||
|
qB0wZoAfxSxd/2V+4TiyqF8qLaITntMV9L7Qdaz8JrQ
|
||||||
|
-> ssh-ed25519 oRtTqQ M7/+Ny2J6DH+1Y2kEa/OuvkL51sclCg7IyBiezmOO18
|
||||||
|
Scdi37jHccwVU7tyIv8i2GYrvqbbelGt6rwC70iZ3Jc
|
||||||
|
--- RC4WIZOZChP56Jz+PQiQp1w4v7ylmB0HgUN+Rd/x/84
|
||||||
|
Ä®¼_+þªt4ܰJ< sËÅc¼Ò€-±¼Ñä\Ya:_¡àtRG7ï:À›¢ë¯;r*!W¯2ÛçÁj„§X—e Y¨ À ^î<>˜
|
|
@ -27,6 +27,11 @@ let
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHZC+1P5nIJwsPA39OF4LYEqRYZVE0jDFQxu9nSr5nF0 root@auth-ren-lasuite-federez"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHZC+1P5nIJwsPA39OF4LYEqRYZVE0jDFQxu9nSr5nF0 root@auth-ren-lasuite-federez"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
system-bastion = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICqc0bjLqkfLXrt1eZNdZiEvUbOyWD6fluyx/nDGf9Rh root@bastion-mtz-lasuite-federez"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFg7cpJC6sUc8Gt8VnGZ/BpojEp/dbRdVjpOBf2NO5Rg root@bastion-ren-lasuite-federez"
|
||||||
|
];
|
||||||
|
|
||||||
asyncnomi = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIENo/g3BZ1bJViYE6EY4VZO96a4q8U4nWKjTprQJtjEH asyncnomi" ];
|
asyncnomi = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIENo/g3BZ1bJViYE6EY4VZO96a4q8U4nWKjTprQJtjEH asyncnomi" ];
|
||||||
gamma = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKhuKmuBPLAtQSjy4E4UaEmf8Qj56414r+adAJ6BgmO8 gamma" ];
|
gamma = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKhuKmuBPLAtQSjy4E4UaEmf8Qj56414r+adAJ6BgmO8 gamma" ];
|
||||||
jeltz = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHabXDr/vrx361yaxKK58jHJB77TNVZvqhkIiaTB7ECI jeltz" ];
|
jeltz = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHabXDr/vrx361yaxKK58jHJB77TNVZvqhkIiaTB7ECI jeltz" ];
|
||||||
|
@ -64,4 +69,9 @@ in
|
||||||
"wireguard/wg-private-zone-2-id-10.age".publicKeys = system-wg ++ users;
|
"wireguard/wg-private-zone-2-id-10.age".publicKeys = system-wg ++ users;
|
||||||
"wireguard/wg-private-zone-2-id-11.age".publicKeys = system-wg ++ users;
|
"wireguard/wg-private-zone-2-id-11.age".publicKeys = system-wg ++ users;
|
||||||
"wireguard/wg-private-zone-2-id-12.age".publicKeys = system-wg ++ users;
|
"wireguard/wg-private-zone-2-id-12.age".publicKeys = system-wg ++ users;
|
||||||
|
|
||||||
|
# Bastion secrets
|
||||||
|
|
||||||
|
"bastion/wg-private-zone-1.age".publicKeys = system-bastion ++ users;
|
||||||
|
"bastion/wg-private-zone-2.age".publicKeys = system-bastion ++ users;
|
||||||
}
|
}
|
14
shared/bastion/forward.nix
Normal file
14
shared/bastion/forward.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
# Enable packet forwarding and pack logging
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
# Ipv4
|
||||||
|
"net.ipv4.conf.all.forwarding" = true;
|
||||||
|
# Ipv6
|
||||||
|
"net.ipv6.conf.all.forwarding" = true;
|
||||||
|
|
||||||
|
# NF
|
||||||
|
"net.netfilter.nf_conntrack_acct" = 1;
|
||||||
|
"net.netfilter.nf_conntrack_log_invalid" = 255;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +1,55 @@
|
||||||
{ ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# Import users wireguard sessions
|
||||||
|
users-wg = import ./../users-wg.nix;
|
||||||
|
|
||||||
|
# Import nodes
|
||||||
|
nodes = import ./../../nodes.nix;
|
||||||
|
myPeer = nodes."${config.hostName}";
|
||||||
|
myZone = myPeer.zone;
|
||||||
|
|
||||||
|
buildSecret = zone: {
|
||||||
|
"wg-private-zone-${toString zone}" = {
|
||||||
|
file = ./../../secrets/bastion + ( "/wg-private-zone-" + toString zone + ".age" );
|
||||||
|
owner = "root";
|
||||||
|
group = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
peers = map (peerConfig: {
|
||||||
|
name = "${peerConfig.name}";
|
||||||
|
publicKey = peerConfig.publicKey;
|
||||||
|
allowedIPs = [
|
||||||
|
"172.19..${toString (myZone + 128)}${toString peerConfig.id}/32"
|
||||||
|
"fc00:f::${toString (myZone + 128)}:${toString peerConfig.id}/128"
|
||||||
|
];
|
||||||
|
persistentKeepalive = 25;
|
||||||
|
}) users-wg;
|
||||||
|
|
||||||
|
interface = {
|
||||||
|
"mgmt" = {
|
||||||
|
ips = [
|
||||||
|
"172.19.${toString (myZone + 128)}.254/24"
|
||||||
|
"fc00:f::${toString (myZone + 128)}:254/96"
|
||||||
|
];
|
||||||
|
privateKeyFile = config.age.secrets."wg-private-zone-${toString myZone}".path;
|
||||||
|
listenPort = 51920;
|
||||||
|
peers = peers;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# TODO
|
age.secrets = buildSecret myZone;
|
||||||
|
|
||||||
|
# Networkd backend introduce in 25.05
|
||||||
|
# No independant target are generated
|
||||||
|
# when using networkd as a backend
|
||||||
|
# If custom systemd ordering is needed
|
||||||
|
# between wg interface and the rest of
|
||||||
|
# networking: switch to false here
|
||||||
|
networking.wireguard.useNetworkd = true;
|
||||||
|
|
||||||
|
# Return all WireGuard interfaces for each node
|
||||||
|
networking.wireguard.interfaces = interface;
|
||||||
}
|
}
|
|
@ -35,7 +35,7 @@ let
|
||||||
interface = {
|
interface = {
|
||||||
"mesh" = {
|
"mesh" = {
|
||||||
ips = [
|
ips = [
|
||||||
"172.19.${toString myZone}.${toString myId}/16"
|
"172.19.${toString myZone}.${toString myId}/17"
|
||||||
"fc00::${toString myZone}:${toString myId}/96"
|
"fc00::${toString myZone}:${toString myId}/96"
|
||||||
];
|
];
|
||||||
privateKeyFile = config.age.secrets."wg-private-zone-${toString myZone}-id-${toString myId}".path;
|
privateKeyFile = config.age.secrets."wg-private-zone-${toString myZone}-id-${toString myId}".path;
|
||||||
|
|
12
shared/users-wg.nix
Normal file
12
shared/users-wg.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
id = 1;
|
||||||
|
name = "asyncnomi";
|
||||||
|
publicKey = "bj79Gbb4vIv4/fFFANtr8BwjADDQtrZfZg85sZpCuRM=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = 2;
|
||||||
|
name = "gamma";
|
||||||
|
publicKey = "hrYk9spPai3X2bxtZXvwE35MGKUr/G60ZZ4ahgPeZhs=";
|
||||||
|
}
|
||||||
|
]
|
Loading…
Add table
Add a link
Reference in a new issue