firewalld介绍
firewalld与iptables和ufw都是管理工具,管理基于linux内核的netfilter网络过滤器
docker和podman的管理工具都是iptables,用firewalld会冲突(必须禁用,不然会重载规则)
centos7开始采用firewalld
systemctl stop firewalld.service #关闭
systemctl enable firewalld.service #自启
systemctl start firewalld.service #开启
firewall-cmd --reload #生效
规则库zone
firewalld有多个规则库,可随时切换,默认为public
firewall-cmd --get-default-zone #获取当前默认zone
firewall-cmd --set-default-zone=public #设置默认zone
端口开关
- ssh,http,https,mysql端口都是默认有的,可以直接用
firewall-cmd --add-port=80/tcp --permanent #打开tcp协议的80端口
firewall-cmd --add-port=http --permanent #打开http协议,跟上一条一样
firewall-cmd --remove-port=80/tcp --permanent #关闭端口
firewall-cmd --list-all #查看当前zone的所有规则
端口跳转
- 内部转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8888 --permanent
# 访问80端口时,数据转发到8888端口
- 外部转发
firewall-cmd --add-masquerade #启用伪装,向外网转发需要伪装
firewall-cmd --add-forward-port=port=8888:proto=tcp:toport=:toaddr=119.29.29.29 --permanent
#把端口数据转发到外部IP
firewall-config是GUI管理界面
- 以上很多的规则都可以在GUI界面看到,建议使用mobaxterm+x11看看
- firewall-cmd -h是防火墙的帮助文档,配合grep查看用法
- –permanent是持久化规则,如果不加下次启动就没了