本是为了解决linux远程连接windows桌面的问题。转来转去,搞成了端口映射和防火墙。我也不想麻烦啊。尝试了网上说的各种,rdesktop和FreeRDP(FreeRDP是开源的远程桌面系统),都没有实验成功。原因是什么?这些软件都要有linux界面环境的支持。而我现在的机器性能有限不敢装界面,所以就放弃吧。干脆使用端口用转发实现吧。里边涉及了端口转发,NAT地址转化,firewall防火墙操作知识。
上边是实验图。懒得画了。借用了网上的图形,192是我的内网,图上是10的内网。
首先要理解两个概念性的东西:
POSTROUTING是源地址转换,要把你的内网地址转换成公网地址才能让你上网。
PREROUTING是目的地址转换,要把别人的公网IP换成你们内部的IP,才让访问到你们内部受防火墙保护的机器。
操作过程
1、启用IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p #命令生效
防火墙可以实现伪装IP的功能
firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
设置IP地址伪装
firewall-cmd --zone=drop --add-masquerade --permanent
端口映射firewall-cmd --zone=drop --add-forward-port=port=33890:proto=tcp:toaddr=192.168.1.100:toport=3389 --permanent
网络有去有回,现在设置一下回来的路咋么走。
设置IP地址伪装
firewall-cmd --zone=internal --add-masquerade --permanent
设置NAT规则,准确来讲是SNATfirewall-cmd --zone=internal --permanent --direct --passthrough ipv4 -t nat POSTROUTING -o ens224 -j MASQUERADE -s 192.168.1.110/32
direct是直接指定规则到 ens224 INPUT链
配置文件在cat /etc/firewalld/direct.xml中。
[root@localhost ~]# firewall-cmd --reload
success