iptables端口转发不工作

我有一个服务器,我configuration成一个路由器(Debian 7稳定)。 eth0连接到我的电缆调制解调器,eth1连接到一个24端口交换机。 DHCP,DNS,路由,通信都可以正常工作。 我似乎无法工作的唯一的事情就是端口转发。 我想转发端口65010到172.16.254.10,但超时。 以下是我写的脚本:

#!/bin/bash # init ## Flush current configuration: iptables -F iptables -t nat -F iptables -t mangle -F ## Delete current chains: iptables -X iptables -t nat -X iptables -t mangle -X ## Set policy iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ## Allow routing between eth0 and eth1 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth1 -j ACCEPT ## Allow internal SSH: iptables -A INPUT -s 172.16.254.0/24 -m state --state NEW \ -p tcp -m multiport --dports 65001,65010 -j ACCEPT ## Allow external SSH: iptables -A INPUT -p tcp -m multiport --dports 65001,65010 -j ACCEPT ## Allow port forwarding for SSH: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 65010 \ -j DNAT --to-destination 172.16.254.10 ## Required for internal host name resolution to function: iptables -I INPUT -s 172.16.254.0/24 -p udp --dport 53 -j ACCEPT iptables -I INPUT -s 172.16.254.0/24 -p tcp --dport 53 -j ACCEPT ## Required for Samba to function: iptables -A INPUT -s 172.16.254.0/24 -m state --state NEW -p tcp \ -m multiport --dports 137,138,139,445 -j ACCEPT iptables-save > /etc/iptables.rules 

尝试使用:

 iptables -A FORWARD -i eth0 -p tcp --dport 65010 -d 172.16.254.10 -j ACCEPT 

另一方面,你没有设置任何默认策略到DROP,也没有在任何链上添加任何“-j DROP”规则来捕捉不匹配的stream量,所以一切都是允许的。

最后,您可能需要在DNAT规则中添加目标的端口号:

 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 65010 -j DNAT \ --to-destination 172.16.254.10:65010 

尝试运行像tcpdump或wireshark之​​类的东西,以确保数据包正确转发到内部目的地。