firewall有几个分区(zone):
drop:任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
block:任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
public:用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
external:用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
dmz:用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
work:用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
home:用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
internal:用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
然后就是简单地使用方法:
要使定义的协议永久生效,需要加一句 --permanent,--zone不写则使用默认区域
如果使用了--permanent参数,需要重新加载防火墙规则或重启服务才能生效。如果未使用--permanent参数,是立即生效。
设置默认区域:
firewall-cmd --set-default-zone=public
查询默认区域:
firewall-cmd --get-default-zone
添加指定端口:
firewall-cmd --zone=<zone> --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
允许外部连接接入,端口1234,TCP协议:
firewall-cmd --zone=public --add-port=1234/tcp
移除允许的端口:
firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
查询端口是否启用:
firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
启用一项服务:
firewall-cmd --permanent [--zone=<zone>] --add-service=<service>
禁用一项服务:
firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>
查询一项服务是否启用:
firewall-cmd --permanent [--zone=<zone>] --query-service=<service>
重新加载防火墙规则:
不用重启服务:
firewall-cmd --reload
会重启服务:
firewall-cmd --complete-reload
如果还不行,可以用用:
service firewalld restart
这么多差不多能简单的设置一下firewall,具体可以看:https://fedoraproject.org/wiki/FirewallD/zh-cn