git: ignore formatting with nixfmt-rfc-style
[julm/julm-nix.git] / hosts / aubergine / networking.nix
index 2f3eec7ec9e7fdb22dad6cc2cea704b300f7583d..a97095c219f4fc4f68dfa52c1e3f709cb7fe1e4f 100644 (file)
@@ -1,5 +1,9 @@
-{ lib, ... }:
-with lib;
+{
+  pkgs,
+  lib,
+  config,
+  ...
+}:
 with (import networking/names-and-numbers.nix);
 {
   imports = [
@@ -9,15 +13,28 @@ with (import networking/names-and-numbers.nix);
     networking/lte.nix
     networking/nftables.nix
     ../../nixos/profiles/dnscrypt-proxy2.nix
+    ../../nixos/profiles/printing.nix
     ../../nixos/profiles/networking/ssh.nix
   ];
   install.substituteOnDestination = false;
-  networking.domain = "wg";
+  networking.domain = "sp";
   networking.useDHCP = false;
 
   boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
-  networking.nftables.ruleset = mkAfter ''
+  networking.nftables.ruleset = lib.mkAfter ''
     table inet filter {
+      chain input-lan {
+        meta l4proto { udp, tcp } th dport domain counter accept comment "DNS"
+        meta l4proto { udp, tcp } th dport bootps counter accept comment "DHCP"
+      }
+      chain output-lan {
+        # net.netfilter.nf_conntrack_udp_timeout_stream is only 2min
+        # whereas a renew is ~1h after the initial connection.
+        meta skuid ${config.users.users."systemd-network".name} \
+          meta l4proto { udp, tcp } th sport bootps \
+          meta l4proto { udp, tcp } th dport bootpc \
+          counter accept comment "DHCP rebinding/renewing"
+      }
       chain forward-to-lan {
         #jump forward-connectivity
         counter accept
@@ -27,7 +44,8 @@ with (import networking/names-and-numbers.nix);
         counter accept
       }
       chain forward-from-net {
-        ct state { established, related } accept
+        ct state established accept
+        ct state related accept
         log level warn prefix "forward-from-net: " counter drop
       }
       chain forward {
@@ -40,7 +58,6 @@ with (import networking/names-and-numbers.nix);
   services.avahi = {
     enable = true;
     openFirewall = true;
-    nssmdns = true;
     publish = {
       enable = true;
       addresses = true;
@@ -49,6 +66,7 @@ with (import networking/names-and-numbers.nix);
       userServices = true;
       workstation = true;
     };
+    reflector = true;
   };
   # WARNING: settings.listen_addresses are not merged...
   # hence there all defined here.
@@ -68,4 +86,9 @@ with (import networking/names-and-numbers.nix);
   systemd.services.sshd.serviceConfig.LoadCredentialEncrypted = [
     "host.key:${ssh/host.key.cred}"
   ];
+
+  programs.wireshark = {
+    enable = true;
+    package = pkgs.wireshark-cli;
+  };
 }