nixy/wireguard: add proton vpn with network namespace
This commit is contained in:
parent
390d3a3ddb
commit
cfc66a92cb
@ -35,6 +35,10 @@
|
|||||||
sopsFile = ./secrets/wg_privkey_proton.yaml;
|
sopsFile = ./secrets/wg_privkey_proton.yaml;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"wg_endpoint_proton" = {
|
||||||
|
sopsFile = ./secrets/wg_privkey_proton.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
"borgbase_enc_key" = {
|
"borgbase_enc_key" = {
|
||||||
sopsFile = ./secrets/borgbase_enc_key.yaml;
|
sopsFile = ./secrets/borgbase_enc_key.yaml;
|
||||||
owner = config.users.users.akill.name;
|
owner = config.users.users.akill.name;
|
||||||
@ -148,19 +152,6 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
proton = {
|
|
||||||
ips = [ "10.2.0.2/32" ];
|
|
||||||
privateKeyFile = config.sops.secrets."wg_privkey_proton".path;
|
|
||||||
peers = [
|
|
||||||
{
|
|
||||||
publicKey = builtins.readFile ../common/wg_pubkey_proton;
|
|
||||||
allowedIPs = [ "10.2.0.0/24" ];
|
|
||||||
endpoint = "109.236.81.166:51820";
|
|
||||||
persistentKeepalive = 25;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -208,6 +199,50 @@
|
|||||||
ExecStart = "${zremap.defaultPackage.${system}}/bin/zremap %I";
|
ExecStart = "${zremap.defaultPackage.${system}}/bin/zremap %I";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"netns@" = {
|
||||||
|
description = "%I network namespace";
|
||||||
|
before = ["network.target"];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${pkgs.iproute}/bin/ip netns add %I";
|
||||||
|
ExecStop = "${pkgs.iproute}/bin/ip netns del %I";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"wg_proton" = {
|
||||||
|
description = "wg network interface";
|
||||||
|
bindsTo = ["netns@wg.service"];
|
||||||
|
requires = ["network-online.target"];
|
||||||
|
after = ["netns@wg.service"];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = pkgs.writers.writeBash "wg-up" ''
|
||||||
|
set -e
|
||||||
|
ENDPOINT_IP=$(${pkgs.coreutils-full}/bin/cat "${config.sops.secrets."wg_endpoint_proton".path}")
|
||||||
|
${pkgs.iproute}/bin/ip link add proton_wg type wireguard
|
||||||
|
${pkgs.iproute}/bin/ip link set proton_wg netns wg
|
||||||
|
${pkgs.iproute}/bin/ip -n wg address add 10.2.0.2/32 dev proton_wg
|
||||||
|
${pkgs.iproute}/bin/ip netns exec wg \
|
||||||
|
${pkgs.wireguard-tools}/bin/wg set "proton_wg" private-key "${config.sops.secrets."wg_privkey_proton".path}"
|
||||||
|
${pkgs.iproute}/bin/ip netns exec wg \
|
||||||
|
${pkgs.wireguard-tools}/bin/wg set "proton_wg" peer "g6DkXWKI/68RsLjROIwCEcyB/ZhyK5Q7OWcz1TtqER0=" \
|
||||||
|
endpoint "$ENDPOINT_IP:51820" \
|
||||||
|
persistent-keepalive "25" \
|
||||||
|
allowed-ips "0.0.0.0/0"
|
||||||
|
${pkgs.iproute}/bin/ip -n wg link set lo up
|
||||||
|
${pkgs.iproute}/bin/ip -n wg link set proton_wg up
|
||||||
|
${pkgs.iproute}/bin/ip -n wg route add default dev proton_wg
|
||||||
|
'';
|
||||||
|
ExecStop = pkgs.writers.writeBash "wg-down" ''
|
||||||
|
${pkgs.iproute}/bin/ip -n wg route del default dev proton_wg
|
||||||
|
${pkgs.iproute}/bin/ip -n wg link del proton_wg
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
Loading…
Reference in New Issue
Block a user