CentOS 从 7 开始默认防火墙由 iptables 变成了 firewalld,没用过的会觉得非常别扭,所以简单整理一下常用操作。
[root@htpc ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2020-03-01 12:09:46 CST; 1s ago
Docs: man:firewalld(1)
Main PID: 23398 (firewalld)
Tasks: 2
Memory: 27.8M
CGroup: /system.slice/firewalld.service
└─23398 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
当前状态可以通过 systemctl start 启动,systemctl stop 关闭。
[root@htpc ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: dhcpv6-client ssh
ports: 3306/tcp 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
当前激活 zone 为 public,默认丢弃所有连接,关于九个 zone 的区别直接跳过了,有兴趣的看官方文档吧。
例如添加删除 8080 端口:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --remove-port=8080/tcp
修改完成后通过 firewall-cmd --reload
加载配置。
# 开放端口范围
$ firewall-cmd --add-port=8080-18080/tcp --permanent
# 对指定端口开放 8080 端口
$ firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.3.108/32"
port protocol="tcp" port="10000" accept'
# 开放全部端口给IP
$ firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.3.108/32" accept';
# 开放全部端口给网段
$ firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.0.0/16" accept';