我有一个问题,我不能从我的局域网连接到使用远程桌面的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