在 Centos 系统中,外网端口的管理主要通过防火墙来实现,CentOS 默认使用firewalld
作为防火墙服务,它提供了一种动态管理防火墙规则的方法,允许用户根据需要开放或关闭特定的端口,以下将详细解释如何在 CentOS 中管理外网端口,包括查看防火墙状态、开启和关闭端口、以及基本操作等。
一、查看系统防火墙状态
1、检查防火墙是否启动:

- firewallcmd state
如果返回running
,代表防火墙启动正常。
2、查看所有打开的端口:
- firewallcmd zone=public listports
这将列出公共区域中所有已开放的端口。
二、开启端口外网访问
1、添加单个TCP端口(例如80端口):
- firewallcmd zone=public addport=80/tcp permanent
这里的permanent
参数表示永久生效,没有此参数则重启后失效。
2、添加多个TCP端口(例如80到85端口):

- firewallcmd zone=public addport=8085/tcp permanent
3、重新载入防火墙规则以使更改生效:
- firewallcmd reload
4、验证端口是否已开启:
- firewallcmd zone=public queryport=80/tcp
返回yes
表示端口已成功开启。
三、关闭端口外网访问
1、删除TCP端口(例如80端口):
- firewallcmd zone=public removeport=80/tcp permanent
2、重新载入防火墙规则:
- firewallcmd reload
四、基本操作
1、启动防火墙服务:

- systemctl start firewalld.service
2、关闭防火墙服务:
- systemctl stop firewalld.service
3、重启防火墙服务:
- systemctl restart firewalld.service
4、显示服务的状态:
- systemctl status firewalld.service
5、开机自动启动防火墙服务:
- systemctl enable firewalld.service
6、禁用开机自动启动防火墙服务:
- systemctl disable firewalld.service
7、查看版本:
- firewallcmd version
8、查看帮助:
- firewallcmd help
9、显示防火墙状态:
- firewallcmd state
10、更新防火墙规则:
- firewallcmd reload
11、查看区域信息:
- firewallcmd getactivezones
12、查看指定接口所属区域:
- firewallcmd getzoneofinterface=eth0
13、拒绝所有包(紧急情况下使用):
- firewallcmd panicon
14、取消拒绝状态:
- firewallcmd panicoff
15、查看是否处于拒绝状态:
- firewallcmd querypanic
五、常见问题及解决方案
1、防火墙放行了端口但仍然无法访问:这可能是因为添加的规则被排列在其他规则之后,导致新规则未生效,可以尝试使用iptables I
命令插入规则到链表的前面。
2、如何更改TCP连接数限制:可以通过修改/etc/security/limits.conf
文件来增加最大文件描述符数,从而间接提高TCP连接数限制。
六、相关问答FAQs
问:如何在CentOS中永久开放TCP 80端口?
答:要永久开放TCP 80端口,请执行以下命令:
- firewallcmd zone=public addport=80/tcp permanent
- firewallcmd reload
这样设置后,即使系统重启,TCP 80端口也将保持开放状态。
问:如果防火墙已经放行了端口,但仍然无法访问,可能是什么原因?
答:可能的原因有多个,包括但不限于:规则添加位置不正确、服务未启动、网络配置问题等,可以尝试检查以下几点:
确保规则是使用permanent
参数添加的,并且已通过firewallcmd reload
重新加载。
确认服务(如Web服务器)已启动并正在监听相应端口。
检查网络配置,确保没有其他网络设备或策略阻止访问。
如果使用的是云服务器,还需检查安全组规则是否允许相应端口的访问。