Nftables Netmap

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

1:1 NAT mit nftables (klassisches Netmap/Binat)

Dieses Beispiel beschreibt, wie man mit nftables ein klassisches 1:1 NAT (auch bekannt als netmap oder binat) zwischen zwei gleich großen IPv4-Subnetzen einrichtet. Dabei wird sowohl DNAT (Destination NAT) als auch SNAT (Source NAT) verwendet, um eine vollständige bidirektionale Adressumsetzung zu gewährleisten.

Voraussetzungen

  • Zwei Subnetze mit identischer Größe, z. B.:
    • Extern: 10.82.88.0/24
    • Intern: 192.168.5.0/24
  • Aktiviertes IP-Forwarding:
sysctl -w net.ipv4.ip_forward=1

nftables-Konfiguration

table inet nat {
	chain prerouting {
		type nat hook prerouting priority dstnat; policy accept;
		# 1:1 DNAT: Zieladressen aus 10.82.88.0/24 werden auf 192.168.5.0/24 gemappt
		dnat ip prefix to ip daddr map { 10.82.88.0/24 : 192.168.5.0/24 }
	}

	chain postrouting {
		type nat hook postrouting priority srcnat; policy accept;
		# 1:1 SNAT: Quelladressen aus 192.168.5.0/24 werden auf 10.82.88.0/24 gemappt
		snat ip prefix to ip saddr map { 192.168.5.0/24 : 10.82.88.0/24 }
	}
}

Funktionsweise

  • Jedes eingehende Paket mit Zieladresse im externen Subnetz (10.82.88.0/24) wird 1:1 auf das interne Subnetz (192.168.5.0/24) umgeschrieben.
  • Rückantworten aus dem internen Netz erhalten eine passende SNAT-Adresse, sodass sie korrekt ins externe Netz zurückfinden.
  • Hostbits bleiben bei der Übersetzung erhalten (z. B. 10.82.88.123192.168.5.123 und umgekehrt).

Hinweise

  • Diese Methode funktioniert nur mit gleich großen Subnetzen.
  • Für Logging und Debugging kann counter an die Regeln angehängt werden.
  • Alternativ zur inet-Table kann auch ip verwendet werden, falls nur IPv4 betroffen ist.

Siehe auch