TFTP、IPTables 和 (s)-NAT 問題

TFTP、IPTables 和 (s)-NAT 問題

我在使用 IPtables 進行 NAT 後的 TFTP 下載時遇到一些問題,我真的需要您的幫助。我熟悉網路原理,但對 IPtables 還很陌生,所以如果我做錯了什麼,我很抱歉。

我有一台運行 Ubuntu 20.04 的伺服器,有兩個網卡,並嘗試連接到 TFTP 伺服器。雖然其他一切都運作得很好,但我在嘗試 TFTP 時遇到超時。我有一個基於 tcpdump 的懷疑,我在其中看到一些 icmp 流量(也許)沒有正確翻譯,但我不確定..

拓樸資訊

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 配置

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

在 eth1/$NETWORK_LAN(NAT 之前)上執行 tcpdump 時,我看到:

我在這裡沒有看到 ICMP 流量。

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"

在 eth0/$NETWORK_WAN(NAT 之後)上執行 tcpdump 時,我看到:

我在這裡看到 icmp 流量?

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"

任何幫助都會非常感謝!

真誠的托爾。

答案1

您可能需要載入 tftp NAT 幫助程序,因為 tftp 是與 NAT 無法很好地配合的協定之一。

嘗試modprobe nf_nat_tftp

注意:以上資訊來自使用 nftables 的系統,而不是 iptables。你的旅費可能會改變。無論如何,請嘗試在目錄下找到它,可能是在頂層的/lib/modules/<kernel-version>/kernel/net/子目錄中或在 ipv4 或 ipv6 目錄下。netfilter

相關內容