Iptables für Wireguard zu nftables konvertieren

Avenger84

Lt. Commander
Registriert
Feb. 2008
Beiträge
1.551
Hallo,
ich hatte dies schon mal gefragt aber keine Lösung erhalten.

Für Wireguard unter Raspian Bullseye wird laut Anleitung empfohlen wieder iptables zu installieren um damit Wireguard ans laufen zu kriegen mit den Regeln:

Code:
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT
PostDown = ip6tables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Habe versucht gem. Anleitungen die Regeln in nftables Sprache zu übersetzen, kriege aber immer nur:
iptables-translate-restore: line 1 failed

Muss man für Wireguard tatsächlich zwingend iptables installieren ?
Vielleicht funktioniert "PostUp" und "PostDown" nicht mit nftables.
 
PostUp und PostDown haben nichts mit iptables zu tun. Das sind Einträge in der wg.conf, die lediglich angeben, dass die dahiner formulierten Kommandos nach dem Herstellen bzw. dem Schließen der VPN-Verbindung ausgeführt werden sollen. Diese Zeilen kannst du nicht mittels iptables-translate-restore übersetzen, weil PostUp und PostDown schlicht und ergreifend nicht übersetzt werden können, da es keine iptables-Kommandos sind.
iptables-translate-restore erwartet eine Datei, die mittels iptables-save erzeugt wurde. Dort stehen die aktuellen Regeln drin, in vollständiger Syntax von iptables.

Entweder du sicherst ohne/mit aktivem VPN mit iptables-save die jeweils aktuelle Konfiguration, übersetzt diese mit iptables-translate-restore und suchst dir die entsprechenden Zeilen raus oder aber du nimmst die Regeln von oben und übersetzt sie einzeln mittels iptables-translate -A FORWARD -i ......
Die so übersetzten Kommandos müsstest du dann 1:1 in die wg.conf übernehmen können, je nachdem ob sie eben nach dem Verbindungsaufbau oder -abbau ausgeführt werden sollen.

Schau mal hier
 
  • Gefällt mir
Reaktionen: snaxilian, SoDaTierchen und Avenger84
Danke, scheinbar ist nftables bei meinem jetzigen Buster gar nicht installiert.
PostUp & PostDown habe ich natürlich gelöscht.

Allerdings bleibt die erzeugte iptables.txt leer obwohl Wireguard läuft.

edit:

Code:
iptables-translate -A FORWARD -i %i -j ACCEPT
nft add rule ip filter FORWARD iifname "%i" counter accept

iptables-translate -A FORWARD -o %i -j ACCEPT
nft add rule ip filter FORWARD oifname "%i" counter accept

iptables-translate -t nat -A POSTROUTING -o eth0 -j MASQUERADE
nft add rule ip nat POSTROUTING oifname "eth0" counter masquerade

sieht das gut aus?

Wie wird IPv6 bei nft definiert? einfach ntf6 ?

Die "-D" also deaktivieren Regeln kann er nicht
 
Zuletzt bearbeitet:
Nein, bei nft ist alles in einem Paket. Die IPv6-Regeln werden mit ip6 bzw. IPv4+IPv6-Regeln mit inet spezifiziert, wenn ich mich nicht täusche.
 
  • Gefällt mir
Reaktionen: Avenger84
blöde Frage:
würde es etwas ausmachen, wenn man die Regeln, unabhängig davon ob mit Iptables oder Nftables, nicht mit Wireguard startet, sondern einfach immer aktiviert lässt ?
Also aus der wg0.conf raus und einfach nur einmalig "add rule..." ?
oder sind die nach einem neustart dann weg?

IP6 wäre dann:
Code:
nft add rule ip6 filter FORWARD iifname "%i" counter accept

To create one rule that applies to both IPv4 and IPv6, use inet. inet allows for the unification of the ip and ip6 families to make defining rules for both easier.
 
Zuletzt bearbeitet:
Die Firewall sollte so wenig Regeln enthalten wie möglich, aber so viele wie nötig. Unsinnige Regeln wie jene, die auf ein nicht existentes Interface - zB VPN-Interfaces wie tun0, o.ä. - oder auch nicht vorhandene Subnetze reagieren, machen die Firewall nur unübersichtlich und stellen dadurch ein potentielles Sicherheitsrisiko oder zumindest eine Ablenkung bei der Fehlersuche dar. Genau deswegen gibt es ja die Möglichkeit bei Wireguard, gezielt Regeln beim Auf-/Abbau der Verbindung einzurichten bzw. zu löschen.

iptables/nftables sind so auch schon komplex genug, insbesondere wenn man beispielsweise noch Addons wie ufw oder dergleichen verwendet, weil die endlos viele Chains mit einbauen. Da möchte man eigentlich keine Regeln drin haben, die keinem Zweck dienen.
 
schade, funktioniert nicht

Code:
pi@raspberrypi:~ $ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.99.1/24 dev wg0
[#] ip -6 address add fd08::1/64 dev wg0
[#] ip link set mtu 1412 up dev wg0
[#] ip -6 route add fd00:bbbb::/32 dev wg0
[#] ip -4 route add 192.168.74.0/24 dev wg0
[#] nft add rule inet filter FORWARD iifname "wg0" counter accept
/usr/bin/wg-quick: line 295: nft: command not found
[#] ip link delete dev wg0
 
Funktioniert es denn direkt im Terminal? Du hattest ja geschrieben, dass nftables gar nicht installiert war.
 
zu spät, jetzt flashe ich Bullseye gerade auf die SD Karte.

Soll ich es bei Bullseye ausprobieren?

Muss man denn extra nftables installieren? ich dachte das wäre der neue Standard ab Buster? @Raijin
 
Zuletzt bearbeitet:
Bei Bullseye ist nftabels vorhanden, nft Befehle werden verarbeitet, aber die o.g. Regeln funktionieren nicht.
Also iptables installiert und die alten Regeln laufen wieder.
 
danke, aber das Thema ist für mich viel zu komplex. iptables werden zum Glück richtig umgesetzt.
 
Zurück
Oben