Problem mit TFTP und IPTables und (s)-NAT

Problem mit TFTP und IPTables und (s)-NAT

Ich habe einige Probleme mit dem TFTP-Download hinter NAT unter Verwendung von IPtables und könnte Ihre Hilfe wirklich gebrauchen. Ich kenne mich mit Netzwerkprinzipien aus, aber mit IPtables bin ich ziemlich neu. Es tut mir also leid, wenn ich etwas völlig falsch mache.

Ich habe einen Server mit Ubuntu 20.04 und zwei Netzwerkkarten, der versucht, eine Verbindung zu einem TFTP-Server herzustellen. Während alles andere einwandfrei funktioniert, erhalte ich beim Versuch, TFTP zu verwenden, ein Timeout. Ich habe einen Verdacht aufgrund eines TCP-Dumps, wo ich ICMP-Verkehr sehe, der (möglicherweise) nicht richtig übersetzt wird, aber ich bin nicht sicher.

Topologieinformationen

TFTP server: 130.221.69.14:udp\69
MyServer (TFTP-CLIENT) :
eth0 = uplink / 172.25.17.6
eth1 = downlink / 10.14.254.0/24 (Which NAT's to eth0 with config below)


IFACE_WAN=eth0
IFACE_LAN=eth1
NETWORK_LAN=10.14.254.0/24

... iptables-Konfiguration

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o $IFACE_WAN -s $NETWORK_LAN ! -d $NETWORK_LAN -j MASQUERADE
iptables -A FORWARD -d $NETWORK_LAN -i $IFACE_WAN -o $IFACE_LAN -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s $NETWORK_LAN -i $IFACE_LAN -j ACCEPT

Wenn ich einen TCPdump auf eth1/$NETWORK_LAN (VOR NAT) durchführe, sehe ich:

Ich sehe hier keinen ICMP-Verkehr.

root@swmgmt:~# tcpdump -i eth1 -n  dst 130.221.69.14
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
20:38:34.901901 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:38:38.897841 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-    name/switch1" octet
20:38:43.899754 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:38:49.903083 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:38:56.907874 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:39:04.908915 IP 10.14.254.164.59384 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:39:12.909728 IP 10.14.254.164.59384 > 130.221.69.14.69:  23 ERROR EUNDEF "Session terminated"

Wenn ich einen TCPdump auf eth0/$NETWORK_WAN (NACH NAT) durchführe, sehe ich:

Ich sehe hier ICMP-Verkehr?

20:21:31.898048 IP 172.25.17.6.59650 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:21:31.899090 IP 172.25.17.6 > 130.221.69.14: ICMP 172.25.17.6 udp port 59650 unreachable, length 55
20:21:39.024682 IP 172.25.17.6.59650 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:21:39.025524 IP 172.25.17.6 > 130.221.69.14: ICMP 172.25.17.6 udp port 59650 unreachable, length 55
20:21:47.029243 IP 172.25.17.6.59650 > 130.221.69.14.69:  38 RRQ "switch-config/by-name/switch1" octet
20:21:47.030220 IP 172.25.17.6 > 130.221.69.14: ICMP 172.25.17.6 udp port 59650 unreachable, length 55
20:21:55.030448 IP 172.25.17.6.59650 > 130.221.69.14.69:  23 ERROR EUNDEF "Session terminated"

Jede Hilfe wäre sehr willkommen!

Mit freundlichen Grüßen, Tor.

Antwort1

Sie müssen wahrscheinlich den TFTP-NAT-Helfer laden, da TFTP eines dieser Protokolle ist, die nicht gut mit NAT funktionieren.

Versuchen modprobe nf_nat_tftp.

Hinweis: Die obigen Informationen stammen von einem System, das nftables und nicht iptables verwendet. Bei Ihnen kann es anders sein. Versuchen Sie auf jeden Fall, sie unter /lib/modules/<kernel-version>/kernel/net/einem Verzeichnis zu finden, wahrscheinlich in einem Unterverzeichnis netfilterauf oberster Ebene oder unter IPv4- oder IPv6-Verzeichnissen.

verwandte Informationen