TFTP, IPTables 및 (s)-NAT 관련 문제

TFTP, IPTables 및 (s)-NAT 관련 문제

IPtables를 사용하는 NAT 뒤의 TFTP 다운로드에 몇 가지 문제가 있는데 정말 도움이 필요합니다. 나는 네트워킹 원칙에 익숙하지만 IPtables는 처음 접했기 때문에 완전히 잘못된 일을 하고 있다면 죄송합니다.

두 개의 NIC가 있는 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(AFTER 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.

참고: 위 정보는 iptables가 아닌 nftables를 사용하는 시스템에서 가져온 것입니다. 귀하의 마일리지가 다를 수 있습니다. 어떤 경우 든 최상위 레벨의 하위 디렉토리나 ipv4 또는 ipv6 디렉토리 아래 의 /lib/modules/<kernel-version>/kernel/net/디렉토리에서 찾으십시오 .netfilter

관련 정보