bei der Einrichtung eines Routers hatte ich zunächst Probleme mit der Paket-Weiterleitung. Ich habe dann bemerkt, dass die IP-Pakete offenbar verschieden modifiziert werden, je nachdem ob man das NAT in der Form "snat" oder mit "masquerade" macht. Bisher dachte, ich "masquerade" sei nur eine andere Schreibweise für "snat <Absender-Netzwerk> to <ip output interface>:
https://wiki.nftables.org/wiki-nftables ... tion_(NAT)
"Masquerade is a special case of SNAT, where the source address is automagically set to the address of the
output interface."
Mein Test-Netzwerk:
Client1 -- LAN "NV" 192.168.169.0/24 -- Router -- LAN "INT" 192.168.44.0/24 mit Client2 -- Fritzbox 7590 -- Internet
Client1:
Debian Bookworm
192.168.169.103
Router:
Debian Bullseye
IP "NV" enp5s0 192.168.169.1
IP "INT" enp2s0 192.168.44.3
Client2:
Debian Bullseye
192.168.44.10
Bei folgender nftables-Regel auf dem Router
Code: Alles auswählen
nft add rule inet t-nat1 ch-nat1 ip saddr 192.168.169.0/24 oifname enp2s0 snat to 192.168.44.3
Code: Alles auswählen
# Auf dem Router:
tcpdump -qnn -i any host 192.168.44.10
15:06:43.184771 enp5s0 In IP 192.168.169.103 > 192.168.44.10: ICMP echo request, id 55445, seq 1, length 64
15:06:43.184825 enp2s0 Out IP 193.168.44.3 > 192.168.44.10: ICMP echo request, id 55445, seq 1, length 64
15:06:44.194424 enp5s0 In IP 192.168.169.103 > 192.168.44.10: ICMP echo request, id 55445, seq 2, length 64
15:06:44.194437 enp2s0 Out IP 193.168.44.3 > 192.168.44.10: ICMP echo request, id 55445, seq 2, length 64
Ohne NAT (mit Eintrag einer Route auf 192.168.44.10 für die Route zurück) oder auf dem Router mit
Code: Alles auswählen
nft add rule inet t-nat1 ch-nat1 ip saddr 192.168.169.0/24 oifname enp2s0 masquerade
Code: Alles auswählen
# Auf dem Router:
tcpdump -qnn -i any host 192.168.44.10
# hier Test ohne SNAT, mit dem "masquerade" Befehl das entsprechende
15:05:13.424454 enp5s0 In IP 192.168.169.103 > 192.168.44.10: ICMP echo request, id 53698, seq 1, length 64
15:05:13.424476 enp2s0 Out IP 192.168.169.103 > 192.168.44.10: ICMP echo request, id 53698, seq 1, length 64
15:05:13.424668 enp2s0 In IP 192.168.44.10 > 192.168.169.103: ICMP echo reply, id 53698, seq 1, length 64
15:05:13.424684 enp5s0 Out IP 192.168.44.10 > 192.168.169.103: ICMP echo reply, id 53698, seq 1, length 64
Das ganze habe ich auf 2 verschiedenen Hardware-Systemen und auch mit Debian Bookworm als Router getestet, gleiche Ergebnisse, auch wenn die Fritzbox das Ziel ist oder Pakete ins Internet weitergeleitet werden sollen, kommt mit dem "snat" Befehl keine Verbindung zustande.
Mich würde interessieren, ob die unterschiedliche Funktionsweise einen Sinn hat und was die Ursache ist. Wenn das einer der Netzwerk-Spezialisten sagen könnte, würde ich mich freuen.
Viele Grüße
Theophil