Linux系统firewall-cmd 命令详解.docx
Linux 系统 firewall-cmd 命令详解 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld 是 CentOS 7 的一大特性。firewalld 最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。 firewalld 跟 iptables 比起来至少有两大好处:firewalld 可以动态修改单条规则,而不需要像 iptables 那样,在修改了规则后必须得全部刷新才可以生效。firewalld 在使用上要比 iptables 人性化很多,即使不明白“五张表五条链”而且对 TCP/IP 协议也不理解也可以实现大部分功能。 firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,但 firewalld 和 iptables 的结构以及使用方法不一样。 下面是 firewall-cmd 的一些基本命令: * yum install firewalld firewall-config:安装 firewalld * systemctl start firewalld:启动 firewalld 服务 * systemctl status firewalld:查看 firewalld 状态 * firewall-cmd --state:查看防火墙状态 * systemctl disable firewalld:停止 firewalld 服务 * systemctl stop firewalld:禁用 firewalld 服务 如果你想关闭 firewalld 防火墙,而使用 iptables,可以使用以下命令: * systemctl stop firewalld * systemctl disable firewalld * yum install iptables-services * systemctl start iptables * systemctl enable iptables firewall-cmd 命令还提供了很多其他的选项,例如: * firewall-cmd --version:查看版本 * firewall-cmd --help:查看帮助 * firewall-cmd --state:显示防火墙状态 * firewall-cmd --get-active-zones:查看当前活动的 zone 信息 * firewall-cmd --get-zone-of-interface=eth0:查看指定接口所属的 zone * firewall-cmd --panic-on:拒绝所有包 * firewall-cmd --panic-off:取消拒绝状态 * firewall-cmd --query-panic:查看是否拒绝 * firewall-cmd --reload:更新防火墙规则 firewall-cmd 命令还可以用于添加接口到 zone,例如: * firewall-cmd --zone=public --add-interface=eth0 这将添加 eth0 接口到 public zone 中。也可以使用 --permanent 选项来使得更改永久生效。 firewall-cmd 命令还可以用于设置默认 zone,例如: * firewall-cmd --set-default-zone=public 这将设置公用的 zone 为 default zone。 firewall-cmd 命令还可以用于查看所有打开的端口,例如: * firewall-cmd --zone=dmz --list-ports 这将显示 dmz zone 中所有打开的端口。 firewall-cmd 命令还可以用于添加端口到 zone,例如: * firewall-cmd --zone=dmz --add-port=8080/tcp 这将添加 8080 端口到 dmz zone 中。 firewall-cmd 命令还可以用于打开服务,例如: * firewall-cmd --zone=work --add-service=smtp 这将打开 smtp 服务在 work zone 中。 firewall-cmd 命令还可以用于移除服务,例如: * firewall-cmd --zone=work --remove-service=smtp 这将移除 smtp 服务在 work zone 中。 firewall-cmd 命令还可以用于显示支持的 zone 列表,例如: * firewall-cmd --get-zones 这将显示所有支持的 zone 列表。 firewall-cmd 命令还可以用于设置当前 zone,例如: * firewall-cmd --set-default-zone=home 这将设置当前 zone 为 home zone。 firewall-cmd 命令还可以用于查看当前 zone,例如: * firewall-cmd --get-active-zones 这将显示当前活动的 zone 信息。 firewall-cmd 命令还可以用于设置当前 zone 的接口,例如: * firewall-cmd --get-zone-of-interface=enp03s 这将显示 enp03s 接口所属的 zone 信息。 firewall-cmd 命令还可以用于显示所有公共 zone,例如: * firewall-cmd --zone=pu 这将显示所有公共 zone 的信息。