<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Nftables-net-oldstuff</id>
	<title>Nftables-net-oldstuff - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Nftables-net-oldstuff"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Nftables-net-oldstuff&amp;action=history"/>
	<updated>2026-05-15T07:14:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Nftables-net-oldstuff&amp;diff=61824&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „ == Portforwarding ==  * Um auf bestimmte Funktionen eines Rechners hinter einer Firewall zugreifen zu können, müssen die dazugehörenden Ports entsprechend…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Nftables-net-oldstuff&amp;diff=61824&amp;oldid=prev"/>
		<updated>2025-04-17T05:01:34Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ == Portforwarding ==  * Um auf bestimmte Funktionen eines Rechners hinter einer Firewall zugreifen zu können, müssen die dazugehörenden Ports entsprechend…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Um auf bestimmte Funktionen eines Rechners hinter einer Firewall zugreifen zu können, müssen die dazugehörenden Ports entsprechend weitergeleitet werden.&lt;br /&gt;
* Hierbei kann es ein anderer, nicht-standard Port der Firewall sein.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define wanip = 192.168.5.113&lt;br /&gt;
 define lan = 172.17.113.0/24&lt;br /&gt;
 define server = 172.16.113.0/24&lt;br /&gt;
 define mgmt = 172.18.113.0/24&lt;br /&gt;
 define dmz = 10.88.113.0/24&lt;br /&gt;
 define local_tcp_ports = { 22 }&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 table inet filter {&lt;br /&gt;
  chain input {&lt;br /&gt;
   type filter hook input priority filter; policy drop;&lt;br /&gt;
   ct state established,related accept&lt;br /&gt;
   ct state new iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
   ct state new tcp dport $local_tcp_ports accept&lt;br /&gt;
   ct state new icmp type echo-request accept&lt;br /&gt;
   log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  chain forward {&lt;br /&gt;
   type filter hook forward priority filter; policy drop;&lt;br /&gt;
   log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  chain output {&lt;br /&gt;
   type filter hook output priority filter; policy drop;&lt;br /&gt;
   ct state established,related accept&lt;br /&gt;
   ct state new oifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
   ct state new accept&lt;br /&gt;
   log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
  chain postrouting {&lt;br /&gt;
   type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
   oif $wandev ip saddr $lan snat to $wanip&lt;br /&gt;
   oif $wandev ip saddr $server snat to $wanip&lt;br /&gt;
   oif $wandev ip saddr $mgmt snat to $wanip&lt;br /&gt;
   # DMZ wird genattet, außer zu 10.88.0.0/16 und 10.82.89.0/24&lt;br /&gt;
   oif $wandev ip saddr $dmz ip daddr != { 10.88.0.0/16, 10.82.89.0/24 } snat to $wanip&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nun kann man per SSH auf den Rechner hinter der Firewall über Port 9922 der Firewall zugreifen...&lt;br /&gt;
* '''ssh ''user@WEBSERVER'' -p 9922'''&lt;br /&gt;
*  ... und HTTP-Requests an den Rechner hinter der Firewall schicken&lt;br /&gt;
* '''curl ''WEBSERVER'''''&lt;br /&gt;
&lt;br /&gt;
Neu verwendete Syntax:&lt;br /&gt;
&lt;br /&gt;
* matche die Ziel IP-Adresse&lt;br /&gt;
&lt;br /&gt;
 ip daddr ''&amp;lt;target_ip&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
* Ziel IP-Adresse auf eine andere natten&lt;br /&gt;
&lt;br /&gt;
 dnat ip to ''&amp;lt;new_target_ip&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
= Absichern von Netzen =&lt;br /&gt;
&lt;br /&gt;
Momentan wird nichts vom LAN zum WAN weitergeleitet. Um nur bestimmte Anwendungen zu erlauben kann man die für diese designierten Ports freischalten.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define remote_tcp_ports = { 22,25,53,80,465,443 }&lt;br /&gt;
 define remote_udp_ports = { 53 }&lt;br /&gt;
 define local_tcp_ports = { 22,80,443 }&lt;br /&gt;
 define wandev = ens18&lt;br /&gt;
 define dmzdev = ens19&lt;br /&gt;
 define landev = ens20&lt;br /&gt;
 define lan = 192.168.4.0/24&lt;br /&gt;
 define wanip = 10.82.232.11&lt;br /&gt;
 define webserver = 192.168.4.12&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; ct state new accept&lt;br /&gt;
         ct state new tcp dport 22 accept&lt;br /&gt;
         ct state new icmp type echo-request accept&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related,new accept&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         iif $wandev ip daddr $webserver tcp dport 22 accept&lt;br /&gt;
         iif $wandev ip daddr $webserver tcp dport 80 accept&lt;br /&gt;
         '''ct state new iif $landev oif $wandev ip saddr $lan icmp type echo-request accept'''&lt;br /&gt;
         '''ct state new iif $landev oif $wandev ip saddr $lan udp dport 53 accept'''&lt;br /&gt;
         '''ct state new iif $landev oif $wandev ip saddr $lan tcp dport { 25, 53, 80, 143, 443, 465, 993 } accept'''&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain prerouting {&lt;br /&gt;
         type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
         ip daddr $wanip tcp dport 9922 dnat ip to $webserver:22&lt;br /&gt;
         ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
         oif $wandev ip saddr $lan snat ip to $wanip&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Neu verwendete Syntax:&lt;br /&gt;
&lt;br /&gt;
Bestimmte Ziel-Ports angeben&lt;br /&gt;
&lt;br /&gt;
 ''transport_protocol'' dport { ''port_number_1,port_number_2,...'' }&lt;br /&gt;
&lt;br /&gt;
= Eigene Ketten =&lt;br /&gt;
&lt;br /&gt;
Man kann auch Ketten ohne Default Policy oder Hooks erstellen, die mehrere Regeln zusammenfassen. In diese Ketten gelangt man durch die Basisketten.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = ens18&lt;br /&gt;
 define dmzdev = ens19&lt;br /&gt;
 define landev = ens20&lt;br /&gt;
 define wanip = 10.82.232.11&lt;br /&gt;
 define lan = 192.168.4.0/24&lt;br /&gt;
 define webserver = 192.168.4.12&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         ct state new iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
         ct state new tcp dport 22 accept&lt;br /&gt;
         ct state new icmp type echo-request accept&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related,new accept&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         ct state new iif $wandev ip daddr $webserver tcp dport 22 accept&lt;br /&gt;
         ct state new iif $wandev ip daddr $webserver tcp dport 80 accept&lt;br /&gt;
         ct state new icmp type echo-request '''jump lan2wan'''&lt;br /&gt;
         udp dport 53 '''jump lan2wan'''&lt;br /&gt;
         tcp dport { 25, 53, 80, 143, 443, 465, 993 } '''jump lan2wan'''&lt;br /&gt;
         log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     '''chain lan2wan {'''&lt;br /&gt;
         '''ct state new iif $landev oifname $wandev ip saddr $lan accept'''&lt;br /&gt;
     '''}'''&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain prerouting {&lt;br /&gt;
         type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
         ip daddr $wanip tcp dport 9922 dnat ip to $webserver:22&lt;br /&gt;
         ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
         oif $wandev ip saddr $lan snat ip to $wanip&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
Neu verwendete Syntax:&lt;br /&gt;
&lt;br /&gt;
Springe in eine andere Kette&lt;br /&gt;
&lt;br /&gt;
 jump ''target''&lt;br /&gt;
&lt;br /&gt;
= Limits setzten =&lt;br /&gt;
&lt;br /&gt;
* Man kann die Anzahl die eine Regel annimmt zeitlich begrenzen.&lt;br /&gt;
* Dafür fügt man ''limit rate'' in die Regel ein.&lt;br /&gt;
* Falls nur 5 Pakete pro Minute geloggt werden sollen:&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define remote_tcp_ports = { 22,25,53,80,465,443 }&lt;br /&gt;
 define remote_udp_ports = { 53 }&lt;br /&gt;
 define local_tcp_ports = { 22,80,443 }&lt;br /&gt;
 define wandev = ens18&lt;br /&gt;
 define dmzdev = ens19&lt;br /&gt;
 define landev = ens20&lt;br /&gt;
 define lan = 192.168.4.0/24&lt;br /&gt;
 define wanip = 10.82.232.11&lt;br /&gt;
 define webserver = 192.168.4.12&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; ct state new accept&lt;br /&gt;
         ct state new tcp dport 22 accept&lt;br /&gt;
         ct state new icmp type echo-request accept&lt;br /&gt;
         '''limit rate 5/minute''' log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related,new accept&lt;br /&gt;
         '''limit rate 5/minute''' log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
         iif $wandev ip daddr $webserver tcp dport 22 accept&lt;br /&gt;
         iif $wandev ip daddr $webserver tcp dport 80 accept&lt;br /&gt;
         icmp type echo-request jump lan2wan&lt;br /&gt;
         udp dport 53 jump lan2wan&lt;br /&gt;
         tcp dport { 25, 53, 80, 143, 443, 465, 993 } jump lan2wan&lt;br /&gt;
         '''limit rate 5/minute''' log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     chain lan2wan {&lt;br /&gt;
         ct state new iif $landev oif $wandev ip saddr $lan accept&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain prerouting {&lt;br /&gt;
         type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
         ip daddr $wanip tcp dport 9922 dnat ip to $webserver:22&lt;br /&gt;
         ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&lt;br /&gt;
     }&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
         oif $wandev ip saddr $lan snat ip to $wanip&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>