aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Nipper <nipsy@bitgnome.net>2025-09-22 19:04:06 -0700
committerMark Nipper <nipsy@bitgnome.net>2025-09-22 19:04:06 -0700
commitdd49ff9375dc0d24ea079047990433d360920ee5 (patch)
tree725425ee7dcac8ab31812bc25790ffa583998964
parent02952de4eec3b65d2612925e1ce168ed2dc5db45 (diff)
downloadnix-dd49ff9375dc0d24ea079047990433d360920ee5.tar
nix-dd49ff9375dc0d24ea079047990433d360920ee5.tar.gz
nix-dd49ff9375dc0d24ea079047990433d360920ee5.tar.bz2
nix-dd49ff9375dc0d24ea079047990433d360920ee5.tar.lz
nix-dd49ff9375dc0d24ea079047990433d360920ee5.tar.xz
nix-dd49ff9375dc0d24ea079047990433d360920ee5.tar.zst
nix-dd49ff9375dc0d24ea079047990433d360920ee5.zip
Add VPN firewall rule @arrakis
-rw-r--r--hosts/arrakis/default.nix32
1 files changed, 18 insertions, 14 deletions
diff --git a/hosts/arrakis/default.nix b/hosts/arrakis/default.nix
index c5b1f89..6613c67 100644
--- a/hosts/arrakis/default.nix
+++ b/hosts/arrakis/default.nix
@@ -27,53 +27,57 @@
environment.etc."nftables-vpn.conf".text = ''
# VPN firewall
-
+
flush ruleset
-
+
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
-
+
# established/related connections
ct state established,related accept
-
+
# invalid connections
ct state invalid drop
-
+
# loopback interface
iif lo accept
-
+
# ICMP (routers may also want: mld-listener-query, nd-router-solicit)
#ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, echo-reply, echo-request, nd-neighbor-advert, nd-neighbor-solicit, nd-router-advert, packet-too-big, parameter-problem, time-exceeded } accept
ip protocol icmp icmp type { destination-unreachable, echo-reply, echo-request, parameter-problem, router-advertisement, source-quench, time-exceeded } accept
-
+
# services
iif veth.vpn tcp dport 8080 accept # qBittorrent
iif veth.vpn tcp dport 9696 accept # Prowlarr
iifname wg1 tcp dport { 49152-65535 } accept # Transmission
+
+ # drop everything else
+ tcp flags & (fin | syn | rst | ack) == syn log prefix "refused connection: " level info
+ counter drop
}
chain output {
type filter hook output priority filter; policy drop;
-
+
# explicitly allow my DNS traffic without VPN
skuid nipsy ip daddr 192.168.1.1 tcp dport domain accept
skuid nipsy ip daddr 192.168.1.1 udp dport domain accept
-
+
# explicitly allow my traffic without VPN
oifname veth.vpn skuid nipsy tcp sport 8080 accept # qBittorrent
oifname veth.vpn skuid nipsy tcp sport 9696 accept # Prowlarr
oifname veth.vpn skuid nipsy ip daddr 192.168.1.2 tcp dport { 7878, 8686, 8787, 8989 } accept # Prowlarr to { Radarr, Lidarr, Readarr, Sonarr }
oif lo skuid nipsy ip daddr 192.168.1.3 tcp dport 8080 accept # Prowlarr to qBittorrent
-
+
# allow any traffic out through VPN
oifname wg1 accept
-
- # drop everything else
- tcp flags & (fin | syn | rst | ack) == syn log prefix "refused connection: " level info
+
+ # drop everything else
+ tcp flags & (fin | syn | rst | ack) == syn log prefix "refused connection: " level info
counter drop
}
-
+
chain forward {
type filter hook forward priority filter; policy drop;
}