iptables 端口转发不起作用

iptables 端口转发不起作用

我面临的问题是,当我将操作系统从 Ubuntu 8.04 更改为 Debian Squeeze 后,我的 iptables 规则不再起作用。

我正在尝试通过以下方式进行端口转发

iptables -t nat -A PREROUTING -d $extip -i eth0 -p tcp -m tcp --dport 5777 -j DNAT --to-destination 192.168.10.169:5777

/proc/sys/net/ipv4/ip_forwarding is set

All policies are set to ACCEPT

192.168.10.169 is in FORWARD chain

tcpdump 输出:

IP some_ip.33517 > ext_ip.5777: Flags [S], seq 3521672809, win 14600, options [mss 1450,sackOK,TS val 1691129923 ecr 0,nop,wscale 7], length 0
IP ext_ip.5777 > some_ip.33517: Flags [R.], seq 0, ack 3521672810, win 0, length 0

如您所见,SYN 之后发送了一个 RST。我不知道为什么会发生这种情况。

我希望有人能帮助我。提前致谢。

答案1

我最终自己解决了这个问题。经过几个小时的尝试,几乎所有方法都试过了,结果发现是接口参数的问题。

所以这在旧机器上有效

iptables -t nat -A PREROUTING -d $extip -i eth0 -p tcp -m tcp --dport 5777 -j DNAT --to-destination 192.168.10.169:5777

但在新机器上,它只有在没有 -i eth0 的情况下才能工作,即使接口具有相同的名称

iptables -t nat -A PREROUTING -d $extip -p tcp -m tcp --dport 5777 -j DNAT --to-destination 192.168.10.169:5777

感谢所有提供帮助的人。

相关内容