CentOS7 firewall-cmd 基础使用

本文介绍了Firewall的九个分区及其用途,并提供了详细的配置方法,包括设置默认区域、添加和移除端口、启用和禁用服务以及如何重新加载防火墙规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

感谢博客:http://www.cnblogs.com/knitmesh/p/5456852.html

<think>好的,我现在需要帮助用户解决在CentOS系统中找不到firewall-cmd命令的问题。首先,我应该回想一下用户提供的引用内容,看看有没有相关的解决方案。根据引用[2]和[5],用户提到在Ubuntu中安装firewalld需要使用apt,而CentOS则是yum。引用[2]中提到了安装命令是yum install firewalld,这可能适用于CentOS。另外,引用[5]提到了CentOS8中可能出现的Python模块问题,但用户现在的问题是没有找到命令,可能还没到那一步。 首先,用户的问题可能是firewalld服务没有安装。在CentOS中,firewalld是默认的防火墙管理工具,但可能在某些最小化安装中没有预装。所以第一步应该是检查是否安装了firewalld。用户可以使用rpm -q firewalld来检查。如果未安装,就需要用yum install firewalld来安装。 安装完成后,需要启动服务并设置开机启动,这在引用[2]和[3]中提到过,比如systemctl start firewalld和systemctl enable firewalld。然后,用户可能需要学习基本命令,比如查看状态、开放端口等,这些引用[2][3]都有说明。 另外,如果用户已经安装但依然找不到命令,可能需要检查路径问题,比如是否在PATH环境变量中,或者是否有多个Python版本导致的问题,如引用[5]中的情况。但这种情况较少,通常安装后应该能直接使用。 总结步骤应该是:1. 检查是否安装;2. 安装firewalld;3. 启动服务;4. 验证命令是否存在。如果安装后还不行,可能需要检查安装日志或路径设置,或者是否存在软件包冲突。另外,可能需要提醒用户CentOS 8和7的差异,比如包管理工具从yum转到dnf,但安装命令类似。 最后,用户可能需要了解基本使用,如开放端口、查看状态等,所以提供常用命令参考会很有帮助,这些在引用[2][3][4]中都有涉及。同时,注意关闭防火墙的注意事项,避免安全问题。</think>### CentOSfirewall-cmd命令未找到的解决方案 #### 1. 检查firewalld是否安装 在终端执行以下命令验证是否已安装: ```bash rpm -q firewalld ``` - **未安装**时输出:`package firewalld is not installed` - **已安装**时显示版本号,如:`firewalld-0.9.3-13.el8.noarch`[^2][^3] #### 2. 安装firewalld服务 执行以下命令安装(适用于CentOS 7/8): ```bash yum install firewalld -y ``` 对于CentOS 8也可使用: ```bash dnf install firewalld -y ``` #### 3. 启动并激活服务 ```bash systemctl start firewalld # 启动服务 systemctl enable firewalld # 设置开机自启 systemctl status firewalld # 验证服务状态 ``` #### 4. 验证命令可用性 安装后检查命令路径: ```bash which firewall-cmd ``` 正常应输出:`/usr/bin/firewall-cmd` #### 5. 特殊问题处理 若安装后仍报错,需检查以下情况: - **Python依赖问题**(CentOS 8常见): 安装缺失的Python模块: ```bash yum install python3-six -y ``` 或手动修复路径(参考引用[5])[^5] - **路径配置问题**: 检查`/usr/sbin`和`/usr/bin`是否在`$PATH`环境变量中 #### 附:常用命令速查 | 功能 | 命令 | |---------------------|-----------------------------------| | 查看开放端口 | `firewall-cmd --list-ports` | | 开放80/TCP端口 | `firewall-cmd --permanent --add-port=80/tcp` | | 重载防火墙配置 | `firewall-cmd --reload` | | 查看服务状态 | `systemctl status firewalld` | | 关闭防火墙 | `systemctl stop firewalld` |
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值