前言
局域网的设备由于安全原因,不能直接进行互联网连接。但又有第三方的互联网服务需要使用,为此只能通过一台前置机,将本地请求转发到外网服务器上。这种端口转发对局域网内的设备来说是透明的,既不影响设备网络环境,也能正常访问外部服务。Centos7自带的防火墙,firewall-cmd
命令就可以直接设置端口转发。
伪装IP
为开启端口转发,需要开启伪装IP这个功能。
$ firewall-cmd --query-masquerade # 检查是否允许伪装IP
$ firewall-cmd --add-masquerade # 允许防火墙伪装IP
# 如果不需要这个功能,可以执行以下命令关闭
$ firewall-cmd --remove-masquerade# 禁止防火墙伪装IP
开放端口
开放要监听的端口(TCP),如18080:
firewall-cmd --permanent --add-port=18080/tcp
--permanent
选项表明该规则永久生效。
设置端口转发
如将18080端口的流量转发至192.168.1.100的80端口:
firewall-cmd --permanent --add-forward-port=port=18080:proto=tcp:toaddr=192.168.1.100:toport=80
这里可以根据需要,将本机的端口转发到外网某个IP和端口,实现局域网访问外网服务。端口转发还可以做流量分发,通过防火墙将不同端口的流量转发至不同机器。
注意:这里不支持转发到域名,toaddr
仅支持目的地为IP地址!如果要转发到域名,可通过nginx实现。
配置生效
$ firewall-cmd --reload // 重新加载防火墙,使端口转发生效
查看配置
$ firewall-cmd --list-all
配置成功后,就可以通过访问前置机的端口18080
,间接访问到192.168.1.100
这台主机在80
端口上的服务了!