从外部连接转发到局域网中的计算机(Ubuntu-iptables)

我有一个问题,我不能从我的局域网连接到使用远程桌面的Windows计算机。

我使用Ubuntu 14.04,iptables

External Inferface: eth1 LAN Intergace: eth2 Windows IP: 192.168.1.100 Serverlinux LAN IP: 192.168.1.2 Serverlinux External IP: 186.xxx.xxx.xxx 

实际的iptablesconfiguration:

 iptables-restore <<-EOF *nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT -A FORWARD -j LOG COMMIT EOF 

我已经尝试了很多例子,但是运气不好。

例1:

 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.100 iptables -t nat -A POSTROUTING -s 192.168.1.100 -p tcp --sport 3389 -j SNAT --to 192.168.1.2 iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 

例2:

 iptables -A INPUT -i eth1 -p tcp --destination-port 3389 -j ACCEPT iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT 192.168.1.100:3389 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 

例3:错误(iptables:没有链/目标/匹配的名称。)

 iptables -A PREROUTING -d 186.xxx.xxx.xxx -p tcp -m tcp --dport 3386 -j DNAT --to-destination 192.168.1.100:3399 iptables -A FORWARD -i eth1 -o eth2 -d 192.168.1.100 -p tcp -m tcp --dport 3399 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

我在想什么?

提前致谢。

以下将外部IP地址的端口1337转发到内部IP地址上的端口3389:

 iptables -t nat -I PREROUTING -d 186.xxx.xxx.xxx -p tcp --dport 1337 -j DNAT --to-destination 192.168.1.100:3389 iptables -I FORWARD -o eth2 -d 192.168.1.100 -p tcp --dport 3389 -j ACCEPT 

第一个规则(在你的第三个例子中错过的nat表)重写了数据包到达时的目标地址。第二个规则允许转发新重写的数据包。

我已经删除了传入接口的所有引用,因为我假定即使您在路由器后面也想让它工作(只是为了一致性)

 iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 1337 -j DNAT --to-destination 192.168.1.100:3389 iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT