aboutsummaryrefslogtreecommitdiff
path: root/hosts/ganymede/wireguard.nix
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/ganymede/wireguard.nix')
-rw-r--r--hosts/ganymede/wireguard.nix57
1 files changed, 57 insertions, 0 deletions
diff --git a/hosts/ganymede/wireguard.nix b/hosts/ganymede/wireguard.nix
new file mode 100644
index 0000000..a1be5f7
--- /dev/null
+++ b/hosts/ganymede/wireguard.nix
@@ -0,0 +1,57 @@
+{
+ config,
+ hosts,
+ pkgs,
+ ...
+}: {
+ environment.systemPackages = [pkgs.wireguard-tools];
+
+ services.dnsmasq = {
+ enable = true;
+ settings = {
+ port = 5353;
+ local = "/ganymede/";
+ address = "/.ganymede/10.100.0.1";
+ listen-address = ["127.0.0.1" "10.100.0.1"];
+ };
+ };
+
+ boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
+
+ networking.firewall.allowedUDPPorts = [51820 5353];
+ systemd.network.netdevs."50-wg0" = {
+ netdevConfig = {
+ Kind = "wireguard";
+ Name = "wg0";
+ MTUBytes = "1300";
+ };
+ wireguardConfig = {
+ PrivateKeyFile = config.collinux.secrets."wireguard-privkey".path;
+ ListenPort = 51820;
+ };
+ wireguardPeers = [
+ {
+ PublicKey = hosts.mercury.wg_pubkey;
+ AllowedIPs = ["${hosts.mercury.wg_ip}/32"];
+ }
+ {
+ PublicKey = hosts.terra.wg_pubkey;
+ AllowedIPs = ["${hosts.terra.wg_ip}/32"];
+ }
+ ];
+ };
+ systemd.network.networks."wg0" = {
+ matchConfig.Name = "wg0";
+ address = ["${hosts.ganymede.wg_ip}/24"];
+ dns = ["127.0.0.1:5353"];
+ domains = ["~ganymede"];
+ networkConfig = {
+ IPMasquerade = "ipv4";
+ IPv4Forwarding = true;
+ };
+ extraConfig = ''
+ DNSOverTLS=no
+ DNSSEC=no
+ '';
+ };
+}