1、准备工作
# 开启 NAT 转发
firewall-cmd --permanent --zone=public --add-masquerade
# 开放 DNS 使用的 80 端口,tcp# 必须,否则其它机器无法进行域名解析
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 检查是否允许 NAT 转发
firewall-cmd --query-masquerade# 禁止防火墙 NAT 转发
firewall-cmd --remove-masquerade
2、 NAT 端口转发
端口转发可以将++++指定地址访问指定的端口++++** 时,将流量转发至**++++指定地址的指定端口++++。转发的目标如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。
2.1 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
2.2 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1 --permanent
2.3 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent
注意:nat端口转发完以后,一定要用"firewall-cmd --reload"重新加载配置才会真正的生效。
"--permanent"代表永久的意思,重启后同样会生效。
如果配置完以上规则后仍不生效,检查防火墙是否开启80端口,如果80端口已开启,仍无法转发,可能是由于内核参数文件sysctl.conf未配置ip转发功能,具体配置如下:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
保存文件后,输入命令:"sysctl -p" 生效!
3、关闭NAT端口转发
#查看状态:
firewall-cmd --state
#删除开放的80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
#删除nat端口转发(本机80转到192.168.0.1:8080)
firewall-cmd --remove-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent
#列出所有的规则
firewall-cmd --list-all