本文用于记录一些常用的firewalld配置命令,包括查询firewalld服务状态,查询当前防火墙规则,添加与删除防火墙规则,配置防火墙端口转发,开启SNATip伪装等。

查看与控制服务状态

#查看firewalld.service服务状态
systemctl status firewalld

#查看firewall运行状态
firewall-cmd --state

#启动
systemctl start firewalld
#设置开机启动
systemctl enable firewalld
#重启
systemctl restart firewalld
#停止
systemctl stop firewalld
#禁止开启启动
systemctl disable firewalld

#禁用防火墙服务(禁用后将无法启动该服务
systemctl mask firewalld

#恢复禁用防火墙服务
systemctl unmask firewalld

# 查看白名单端口列表
firewall-cmd --zone=public --list-ports

# 作用域
--zone

# 永久生效,没有此参数重启后失效
--permanent

#获取本机服务器的公网出口ip
curl http://myip.fireflysoft.net/

#进入紧急状态,立即拒绝所有入站流量
firewall-cmd --panic-on
#关闭紧急状态
firewall-cmd --panic-off
#查询当前是否为紧急状态
firewall-cmd --query-panic

查看当前防火墙规则

#查看当前所有规则
firewall-cmd --list-all
 
#单独查看端口白名单列表
firewall-cmd --zone=public --list-ports

查询、添加与删除防火墙规则

简单防火墙规则

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放8080端口(TCP协议),任何ip都可以访问
firewall-cmd --permanent --add-port=8080/tcp
# 移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
# 新建永久规则,批量开放一段端口(TCP协议)
firewall-cmd --permanent --add-port=9001-9100/tcp

#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload

复杂防火墙规则

# 允许指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'

# 允许指定IP段访问本机8080-8090端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'

# 禁止指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'

#移除第一条规则(所有的移除规则基本都是add改成remove)
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'

#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload

防火墙端口转发

SNAT配置

要使用端口转发功能,首先要确保你的防火墙打开了伪装IP功能,即SNAT
相关操作如下

firewall-cmd --query-masquerade # 检查是否允许伪装IP,返回no表示没开启,反之则表示当前已开启开启伪装IP
firewall-cmd --add-masquerade # 临时允许SNAT
firewall-cmd --add-masquerade --permanent      #永久允许SANT
#或者可以使用
firewall-cmd --zone=区域 --add-masquerade
firewall-cmd --remove-masquerade  #禁止防火墙伪装IP
#最后不要忘了重新加载firewalld配置
firewall-cmd --reload

端口转发规则配置

# 将80端口的流量转发至本机8080
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
# 将80端口的TCP流量转发至192.168.1.1的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.1:toport=8080 --permanent

#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload

Q.E.D.