linux Centos7允许端口通过防火墙,通过firewall-cmd 开放端口,解决端口访问不了问题

本文介绍如何在CentOS 7中使用firewall-cmd命令管理和查询端口,包括开放特定端口及端口范围,并确保更改永久生效的方法。

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

linux查看服务端口号

#netstat - atulnp
会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段

Centos7允许3306端口通过防火墙,通过firewall-cmd 开放端口

#firewall-cmd --zone=public --add-port=80/tcp --permanent #作用域是public,开放tcp协议的80端口,一直有效
#firewall-cmd --zone=public --add-port=80-90/tcp --permanent #作用域是public,批量开放tcp协议的80-90端口,一直有效
#firewall-cmd --zone=public --add-port=80/tcp --add-port=90/tcp --permanent #作用域是public,批量开放tcp协议的80、90端口,一直有效

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

查询端口号80 是否开启

#firewall-cmd --query-port=80/tcp

如果是yes,代表可以开放出来了
在这里插入图片描述

重启防火墙,安装命令两种方式

#sudo systemctl reload firewalld
#firewall-cmd --reload

操作步骤

  1. firewall-cmd --query-port=80/tcp(查看端口是否开放)
  2. firewall-cmd --zone=public --add-port=80/tcp --permanent(设置80端口开放出来)
  3. firewall-cmd --reload (重启防火墙,就可以使用了)
<think>好的,我现在需要帮助用户解决CentOS中通过firewall-cmd添加了8443端口,但查询时未显示的问题。首先,我需要回忆firewalld的相关知识,以及可能导致这种情况的常见原因。用户已经执行了正确的命令,包括添加端口到public区域并设置为永久,但查询时没有看到,这可能涉及几个方面。 首先,用户可能没有重新加载防火墙规则。因为使用--permanent参数后,必须执行firewall-cmd --reload才能使更改生效。如果没有重新加载,变更不会应用到当前运行的防火墙配置中。这是常见的问题点,需要首先检查。 其次,用户可能是在错误的区域中查询端口。默认情况下,firewall-cmd --list-ports会列出默认区域的开放端口,而默认区域可能不是public。如果用户将端口添加到public区域,但当前默认区域是其他区域(比如dmz或work),则用--list-ports时可能看不到。需要确认用户使用的区域是否正确,或者在命令中指定区域来查询,比如firewall-cmd --zone=public --list-ports。 第三,可能端口被添加到其他区域中。用户可能误将端口添加到不同的区域,而查询时没有指定该区域,导致看不到结果。需要检查所有区域的配置,或者使用firewall-cmd --list-all-zones来查看所有区域的设置。 另外,用户可能没有使用sudo权限运行查询命令。虽然添加端口时用了sudo,但查询时如果省略了sudo,可能无法正确显示结果,尤其是当防火墙配置需要管理员权限时。需要提醒用户检查是否在查询时也使用了sudo。 还有一种可能性是firewalld服务未运行。如果服务未启动,任何配置更改都不会生效,包括添加端口。需要确认firewalld的状态,使用systemctl status firewalld来查看服务是否正在运行。 此外,用户可能输入了错误的端口号或协议。比如,可能错误地添加了udp而不是tcp,或者在查询时拼写错误。需要确认添加和查询时的端口号和协议是否一致。 最后,可能是配置被其他工具覆盖,比如iptables或nftables直接修改了规则,导致firewalld的配置不生效。需要检查是否有其他防火墙管理工具在干扰。 总结下来,可能的解决步骤包括:检查是否重新加载防火墙,确认查询的区域是否正确,确保使用sudo权限,验证firewalld服务状态,检查端口和协议是否正确,以及排除其他工具的干扰。接下来需要将这些思路整理成结构化的回答,帮助用户逐步排查问题。</think>### 问题分析 您在 CentOS 中通过 `firewall-cmd` 添加了 8443 端口,但使用 `firewall-cmd --list-ports` 查询时未显示该端口。这通常由以下原因导致: --- ### 原因及解决方案 #### 1. **未重新加载防火墙规则** - **现象**:使用 `--permanent` 参数修改规则后,必须重新加载防火墙才能使配置生效。 - **验证与修复**: ```bash # 重新加载防火墙规则(必须步骤) sudo firewall-cmd --reload # 再次查询开放端口 sudo firewall-cmd --list-ports ``` **注意**:未执行 `--reload` 时,`--list-ports` 仅显示当前临时规则,而非永久规则。 --- #### 2. **区域(Zone)配置错误** - **现象**:端口可能被添加到其他区域(如 `public`),但默认查询的是当前激活区域(可能是 `default` 或其他)。 - **验证与修复**: ```bash # 查看当前默认区域 sudo firewall-cmd --get-default-zone # 明确指定查询 public 区域的端口 sudo firewall-cmd --zone=public --list-ports # 若需修改默认区域为 public sudo firewall-cmd --set-default-zone=public ``` --- #### 3. **未使用 `--permanent` 参数查询** - **现象**:`--list-ports` 默认仅显示临时规则,若需查看永久规则需显式指定。 - **验证与修复**: ```bash # 查询永久规则中的端口(需先重新加载) sudo firewall-cmd --permanent --list-ports # 查询当前生效的临时+永久规则 sudo firewall-cmd --list-ports ``` --- #### 4. **端口未正确添加** - **现象**:操作过程中命令输入错误(如端口号、协议类型)。 - **验证与修复**: ```bash # 检查所有区域的开放端口(包括永久和临时规则) sudo firewall-cmd --list-all-zones | grep 'ports' # 重新添加端口(确保协议为 tcp) sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp sudo firewall-cmd --reload ``` --- #### 5. **防火墙服务未运行** - **现象**:`firewalld` 服务未启动,所有配置均无效。 - **验证与修复**: ```bash # 检查防火墙状态 sudo systemctl status firewalld # 启动并启用防火墙 sudo systemctl start firewalld sudo systemctl enable firewalld ``` --- ### 排查流程总结 1. 执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

binggoling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值