Skip to content

firewall

了解firewall的zone和port的概念

firewall 预定了9个区域

public(公共区域)	默认只允许ssh、dhcp协议数据包传入
home(家庭区域)	默认只允许ssh、dhcp、samba、mdns协议数据包传入
work(工作区域)	默认只允许ssh、dhcp协议数据包传入
internal(内部区域)	默认只允许ssh、dhcp、samba、mdns协议数据包传入
external(外部区域)	默认只允许ssh协议数据包传入,传出数据包会做地址伪装转换(MASQUERADE)
dmz(隔离区域也称为非军事区域)	非军事区域,默认只允许ssh协议数据包传入
trusted(信任区域)	允许所有的传入流量
block(限制区域)	拒绝所有,有响应消息
drop(丢弃区域)	丢弃所有,无响应消息

firewall 区域

区域对 firewall 很重要, 如果该区域没有被激活, 则无法生效

下面命令时获取当前已经激活的区域

bash
firewall-cmd --get-active-zones

删除 docker1 的区域

bash
firewall-cmd --delete-zone=docker1 --permanent

firewall 规则

增加规则, --permanent 参数可以使得该命令重启后依然生效

bash
firewall-cmd --add-port=3000/tcp --zone=public --permanent

删除规则

bash
firewall-cmd --remove-port=3000/tcp --zone=public --permanent

重载服务, 修改规则后 reload 操作

bash
firewall-cmd --reload

firewall 常见问题

  • Failed to start firewalld - dynamic firewall daemon.
bash
# 尝试kill掉 process 再启动
systemctl stop firewalld
pkill -f firewalld
systemctl start firewalld