avenga
Goto Top

Debian iptables zu nftables übersetzen für Wireguard

Hallo,
ich betreibe Wireguard erfolgreich auf Debian9 und Raspian9.

ich würde gern auf Debian 10 umsteigen.

Leider konnte mir bisher Niemand sagen wie ich 3 simple iptables Befehle in nftables übersetzt bekomme:

Mit dem aktivieren von Wireguard startet bzw. stoppt:
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Für die 3 Regeln (2x Fw, 1x Masquerade) muss es doch nftables Befehle geben, die man 1:1 in die Wireguard config übernehmen kann oder nicht ?

Wenn mir die Jemand verraten würde, wäre ich sehr dankbar.

Bitte keine Links zu Übersetzungsskripten oder der Aktivierung von iptables.


LG

Content-ID: 527339

Url: https://administrator.de/forum/debian-iptables-zu-nftables-uebersetzen-fuer-wireguard-527339.html

Ausgedruckt am: 22.02.2025 um 20:02 Uhr

lcer00
lcer00 20.12.2019 um 06:35:40 Uhr
Goto Top
Hallo
Zitat von @Avenga:

Für die 3 Regeln (2x Fw, 1x Masquerade) muss es doch nftables Befehle geben, die man 1:1 in die Wireguard config übernehmen kann oder nicht ?

Wenn mir die Jemand verraten würde, wäre ich sehr dankbar.

Bitte keine Links zu Übersetzungsskripten oder der Aktivierung von iptables.

Doku lesen:
https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_t ...
Das ist kein Übersetzungsskript sondern ein eigener übersetzungsbefehl.

Grüße

lcer
142232
142232 20.12.2019 aktualisiert um 12:48:45 Uhr
Goto Top
Für die 3 Regeln (2x Fw, 1x Masquerade) muss es doch nftables Befehle geben, die man 1:1 in die Wireguard config übernehmen kann oder nicht ?
Gibt es, aber die lauten aus Gründen wie nftables funktioniert auf jedem System anders weil es mit nftables keine festgelegte Bezeichner für Tables und Chains wie bei iptables gibt, die kann man nennen wie es einem beliebt. Deswegen musst du dich selbst mit der Funktionsweise beschäftigen, oder hier mal dein Regelset posten (nft list ruleset. Ist ja sowieso angebracht wenn man damit arbeitet, nichts ist schlimmer als ein System zu nutzen das man nicht versteht, viel schlimmer noch, du gefährdest dein System bei sowas wichtigem wie einer Firewall ...
Avenga
Avenga 20.12.2019 aktualisiert um 15:36:13 Uhr
Goto Top
Habe noch mal Debian 10 installiert, nur wie kriege ich "iptables-nftables-compat" installiert damit ich "iptables-translate" benutzen kann ?

P.S.:
sudo apt-get install -y iptables-nftables-compat
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paket iptables-nftables-compat ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.
Doch die folgenden Pakete ersetzen es:
iptables

E: Für Paket »iptables-nftables-compat« existiert kein Installationskandidat.


Auf Debian 9 (wo ich es nicht brauche) will er es zusammen mit 5 Paketen installieren.
lcer00
lcer00 20.12.2019 um 16:51:12 Uhr
Goto Top
Hallo,

Es reicht doch das auf 9 zu installieren, die Regeln dort zu übersetzen und dann nach 10 zu kopieren.

Wenn es aber nur um 3 Regeln geht, würde ich eher dazu neigen, das Handbuch zu lesen.


Grüße

lcer
Avenga
Avenga 20.12.2019 aktualisiert um 20:02:04 Uhr
Goto Top
@142232 Es gibt ja (noch) kein ruleset, es soll ja lediglich das:
iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
eingepflegt werden, damit Wireguard VPN funktioniert.

@icer wollte ungern auf Debian 9 nftables installieren, nachher funktioniert gar nix mehr.
lcer00
lcer00 20.12.2019 um 20:29:29 Uhr
Goto Top
Zitat von @Avenga:

@icer wollte ungern auf Debian 9 nftables installieren, nachher funktioniert gar nix mehr.

Na dann nimm eine VM.

Grüße

lcer
Avenga
Lösung Avenga 15.01.2025 aktualisiert um 21:44:40 Uhr
Goto Top
Falls es noch Jemand lesen sollte, habe es endlich geschafft.
von:
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT
PostDown = ip6tables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE

zu:
PostUp = nft add table ip filter
PostUp = nft add table ip6 filter
PostUp = nft add table ip6 nat
PostUp = nft add chain ip filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 nat POSTROUTING '{ type nat hook postrouting priority 100; policy accept; }'  
PostUp = nft add rule ip filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 nat POSTROUTING oifname "enp1s0" counter masquerade  
PostDown = nft flush ruleset

läuft zwar inzwischen bei mir auf Ubuntu, aber egal.
Avenga
Avenga 18.01.2025 um 12:16:09 Uhr
Goto Top
Nachtrag, habe NAT für IPv6 ausschließlich auf die Mobilgeräte umgestellt und nicht auf die Dauerverbindung:
PostUp = nft add table ip filter
PostUp = nft add table ip6 filter
PostUp = nft add table ip6 nat
PostUp = nft add chain ip filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 nat POSTROUTING '{ type nat hook postrouting priority 100; policy accept; }'  
PostUp = nft add rule ip filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 nat POSTROUTING ip6 saddr { fd08::2, fd08::3, fd08::4, fd08::5 } oifname "enp1s0" counter masquerade  
PostDown = nft flush ruleset

Somit kann man von den Mobilgeräten (fd08::2, fd08::3, fd08::4, fd08::5) als Volltunnel auch IPv6 nutzen, im Internet haben diese dann die IPv6 von der Ubuntu VM.

Im Haus <-> Büro Tunnel (fd08::1, fd08::10) wird kein NAT durchgeführt.
Hier mal die komplette Konfig:
[Interface]
Address = 192.168.99.1/24, fd08::1/64
ListenPort = 51820
PrivateKey = 
MTU = 1412
PostUp = nft add table ip filter
PostUp = nft add table ip6 filter
PostUp = nft add table ip6 nat
PostUp = nft add chain ip filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 filter FORWARD '{ type filter hook forward priority 0; policy accept; }'  
PostUp = nft add chain ip6 nat POSTROUTING '{ type nat hook postrouting priority 100; policy accept; }'  
PostUp = nft add rule ip filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD iifname "%i" counter accept  
PostUp = nft add rule ip6 filter FORWARD oifname "%i" counter accept  
PostUp = nft add rule ip6 nat POSTROUTING ip6 saddr { fd08::2, fd08::3, fd08::4, fd08::5 } oifname "enp1s0" counter masquerade  
PostDown = nft flush ruleset
[Peer]
PublicKey = 
AllowedIPs = 192.168.99.2/32, fd08::2/128
[Peer]
PublicKey = 
AllowedIPs = 192.168.99.3/32, fd08::3/128
[Peer]
PublicKey = 
AllowedIPs = 192.168.99.4/32, fd08::4/128
[Peer]
PublicKey = 
AllowedIPs = 192.168.99.5/32, fd08::5/128
[Peer]
PublicKey = 
AllowedIPs = 192.168.99.10/32, 192.168.99.20/32, 192.168.74.0/24, 192.168.75.0/24
AllowedIPs = fd08::10/128, fd08::20/128, fd00:bbbb::/64, fd00:cccc::/64
Endpoint = endpoint.dynv6.net:51821
PersistentKeepalive = 25