命令行工具 firewall-cmd 是 firewalld 应用程序的一部分,默认情况下安装。
它可用于进行永久性和非永久性运行时更改。
安装 firewalld
默认情况下,firewalld 包含在“核心”rpm 组中,但如果未安装,我们始终可以使用 yum 安装它。
# yum install -y firewalld
启用 firewalld 在启动时启动:
# systemctl enable firewalld
现在重新启动 firewalld 服务。
# systemctl restart firewalld
firewall-cmd 示例
1. 列出所有区域
使用以下命令列出所有区域的信息。
仅显示部分输出。
# firewall-cmd --list-all-zones work target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: drop target: DROP icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: .....
Public 是默认区域集,如果我们不更改它。
要检查当前设置的默认区域,请使用以下命令:
# firewall-cmd --get-default-zone public
2. 列出系统上允许的服务和端口
要显示系统上当前允许的服务,请使用以下命令。
# firewall-cmd --list-services dhcpv6-client ssh
要列出系统上打开的端口:
# firewall-cmd --list-ports
当我们刚刚启用 firewalld 时,我们通常不会在此处看到任何端口列出。
3. 启用服务的所有传入端口
我们还可以使用 -add-service 选项打开服务所需的端口。
允许 HTTP 客户端访问公共区域:
# firewall-cmd --zone=public --add-service=http success
列出公共区域允许的服务:
# firewall-cmd --zone=work --list-services dhcpv6-client http ssh
使用此命令只会更改运行时配置,不会更新配置文件。
以下命令序列显示,在重新启动 firewalld 服务时,在运行时配置模式下所做的配置更改会丢失:
# systemctl restart firewalld
# firewall-cmd --zone=work --list-services dhcpv6-client ssh
要永久更改,请使用 -permanent 选项。
例子:
# firewall-cmd --permanent --zone=public --add-service=http success
在永久配置模式下所做的更改不会立即实施。
例子:
# firewall-cmd --zone=work --list-services dhcpv6-client ssh
但是,在永久配置中所做的更改会写入配置文件。
重新启动 firewalld 服务读取配置文件并实施更改。
例子:
# systemctl restart firewalld
# firewall-cmd --zone=work --list-services dhcpv6-client http ssh
4. 允许传入端口上的流量
下面的命令将打开端口 2222 立即生效,但不会在重新启动后持续存在:
# firewall-cmd --add-port=[YOUR PORT]/tcp
例如,要打开 TCP 端口 2222 :
# firewall-cmd --add-port=2222/tcp
以下命令将创建一个持久性规则,但不会立即生效:
# firewall-cmd --permanent --add-port=[YOUR PORT]/tcp
例如,要打开 TCP 端口 2222 :
# firewall-cmd --permanent --add-port=2222/tcp
要列出打开的端口,请使用命令:
# firewall-cmd –-list-ports 2222/tcp
5.启动和停止firewalld服务
要启动/停止/状态 firewalld 服务,请使用以下命令:
# systemctl start firewalld.service # systemctl stop firewalld.service
要检查 firewalld 服务的状态:
# systemctl status firewalld.service
firewall-cmd 命令的可用选项
# firewall-cmd --help Usage: firewall-cmd [OPTIONS...] General Options -h, --help Prints a short help text and exists -V, --version Print the version string of firewalld -q, --quiet Do not print status messages Status Options --state Return and print firewalld state --reload Reload firewall and keep state information --complete-reload Reload firewall and lose state information --runtime-to-permanent Create permanent from runtime configuration
firewall-cmd 命令提供选项类别,例如 General、Status、Permanent、Zone、IcmpType、Service、Adapt 和 Query Zones、Direct、Lockdown、Lockdown Whitelist 和 Panic。
有关详细信息,请参阅 firewall-cmd 手册页。