如果局域网的网关为Linux服务器,我们要远程连接局域网内部的Windows服务器远程桌面,该如何做呢?如果你有网关服务器的控制权限,那么就可以通过iptables的方式,实现跨局域网连接Windows远程桌面。 如果没有网关服务器的控制权限,则需要通过内网穿透工具(博文预告),如商用的TeamViewer,开源的n2n,或者QQ来实现跨局域网的远程桌面连接。当然,通过iptables也可以配置访问局域网内的其他服务,因此是开发人员的一项基础技能。
操作过程主要分为三步:
- 开启系统转发
#edit /etc/sysctl.conf,去掉前面的注释,或者添加此项
net.ipv4.ipv4_forward=1
- 添加PREROUTING规则
sudo iptables -t nat -I PREROUTING 1 -d ${linux_netgate_ips} -p tcp --dport 3389 -j DNAT --to-destination ${Windows_RDP_server_ip}:3389
- 添加POSTROUTING规则
sudo iptables -t nat -I POSTROUTING 1 -d ${Windows_RDP_server_ip} -p tcp --dport 3389 -j SNAT --to-source ${linux_netgate_ip}
此时,可以检查是否可以实现连接。如果不能,检查iptables 是否存在冲突规则,尤其是Forward链中是否允许转发3389端口。可以通过插入相应规则允许转发。
sudo iptables -I FORWARD 1 -d ${Windows_RDP_server_ip} -p tcp --dport 3389 -j ACCEPT