linux防火墙

TIP

debian12是安装ufw来操作防火墙

规则

添加端口到防火墙

centos7
debian12
firewall-cmd --zone=public --add-port=8080/tcp --permanent && firewall-cmd --reload

从防火墙移除端口号

centos7
debian12
firewall-cmd --zone=public --remove-port=8080/tcp --permanent && firewall-cmd --reload

添加白名单ip

centos7
debian12
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="${ip}/32"  accept" && firewall-cmd --reload

删除白名单ip

centos7
debian12
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="${ip}/32"  accept" && firewall-cmd --reload

添加对某个ip开放端口

centos7
debian12
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="${ip}/32" port port="3306" protocol="tcp" accept" && firewall-cmd --reload

删除对某个ip开放端口

centos7
debian12
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="${ip}/32" port port="3306" protocol="tcp" accept" && firewall-cmd --reload

查看端口和ip的规则列表

centos7
debian12
firewall-cmd --list-all

防火墙开启转发

centos7
debian12
firewall-cmd --permanent --add-masquerade && firewall-cmd --reload
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

firewall-cmd高级用法

查看已创建的 IP 集合(ipset)

firewall-cmd --permanent --get-ipsets

这个命令会列出你创建的所有 IP 集合,比如:

  • internal-trusted-ipset
  • trusted-ipset

查看某个 IP 集合中的具体条目

firewall-cmd --permanent --ipset=trusted-ipset --get-entries
firewall-cmd --permanent --ipset=internal-trusted-ipset --get-entries

可以验证你添加的 IP 和网段是否存在于集合中。

查看接口绑定在哪个区域

firewall-cmd --get-active-zones

可以看到哪些接口被分配到了哪些区域,比如:

  • eth0internal
  • docker0docker

查看某个区域的详细规则

firewall-cmd --list-all --zone=internal
firewall-cmd --list-all --zone=docker
firewall-cmd --list-all --zone=public

可以看到:

  • 接口绑定
  • 服务(如 ssh 是否允许)
  • rich rules(自定义的 IP+端口规则)
  • IP 集合引用情况

确认规则是否生效

如果你想确保 rich rules 被正确添加,你可以查看:

firewall-cmd --zone=internal --list-rich-rules