一、CentOS 端口打开
在 CentOS 系统中,端口的打开和管理主要通过防火墙来实现,根据 CentOS 的不同版本,默认的防火墙管理工具可能有所不同,CentOS 6 及以前版本使用 iptaBLes,而 CentOS 7 及以后版本则默认使用 firewalld。
二、iptables 方式打开端口(CentOS 6 及以前)
(一)基本操作
1、启动/关闭/重启防火墙
开启防火墙(重启后永久生效):chkconfig iptables on
关闭防火墙(重启后永久生效):chkconfig iptables off
开启防火墙(即时生效,重启后失效):service iptables start
关闭防火墙(即时生效,重启后失效):service iptables stop
重启防火墙:service iptables restart
2、查看打开的端口:/etc/init.d/iptables status
3、打开某个端口(以 8080 为例)
开启端口:iptables A INPUT p tcp dport 8080 j ACCEPT
保存并重启防火墙:/etc/rc.d/init.d/iptables save
和/etc/rc.d/init.d/iptables restart
4、打开 49152~65534 之间的端口:iptables A INPUT p tcp dport 49152:65534 j ACCEPT
(同样需要保存和重启防火墙)
5、其他打开方式:可以通过修改/etc/sysconfig/iptables
文件来开启端口,如添加以下行:
A RHFirewall1INPUT m state –state NEW m tcp p tcp –dport 8080 j ACCEPT
(二)参数说明
A
:添加一条规则。
p
:指定协议,常用 tcp。
dport
:目标端口。
sport
:源端口。
j
:指定动作,如 ACCEPT(接收)或 DROP(不接收)。
三、firewalld 方式打开端口(CentOS 7 及以后)
(一)基本操作
1、启动防火墙:systemctl start firewalld
2、禁用防火墙:systemctl stop firewalld
3、设置开机启动:systemctl enable firewalld
4、停止并禁用开机启动:systemctl disable firewalld
5、重启防火墙:firewallcmd reload
6、查看状态:systemctl status firewalld
或firewallcmd state
7、查看版本:firewallcmd version
8、查看帮助:firewallcmd help
9、查看区域信息:firewallcmd getactivezones
10、查看指定接口所属区域信息:firewallcmd getzoneofinterface=eth0
11、拒绝所有包:firewallcmd panicon
12、取消拒绝状态:firewallcmd panicoff
13、查看是否拒绝:firewallcmd querypanic
14、将接口添加到区域:firewallcmd zone=public addinterface=eth0
(永久生效再加上permanent
reload 防火墙)
15、设置默认接口区域:firewallcmd setdefaultzone=public
(立即生效,无需重启)
16、更新防火墙规则:firewallcmd reload
或firewallcmd completereload
(两者区别是第一个无需断开连接,第二个需要断开连接,类似重启服务)
(二)打开指定端口(以 8080 为例)
1、查看防火墙当前状态:确保 firewalld 服务已经运行并且正常工作,可以使用以下命令来检查:systemctl status firewalld
或firewallcmd state
。
2、开放指定端口号:如果要开放 6690 端口,可以运行以下命令:
firewallcmd zone=public addport=6690/tcp permanent
zone
参数指定了防火墙区域,通常使用 public 表示公共区域;addport
参数指定了要开放的端口号和协议(这里是 6690/tcp);permanent
参数表示将修改永久保存。
3、重新加载防火墙规则:使其生效。
firewallcmd reload
4、查看端口是否已成功开放:可以运行以下命令来检查。
firewallcmd queryport=6690/tcp
如果看到类似以下输出,表示端口已经成功开放:
no
(三)注意事项
开放端口可能会增加服务器的安全风险,因此在进行端口开放时,务必只开放必要的端口,并遵循网络安全最佳实践。
对于需要频繁更改防火墙规则的环境,建议使用脚本自动化处理,以减少手动操作的错误和提高效率。
操作 | CentOS 6 及以前(iptables) | CentOS 7 及以后(firewalld) |
启动防火墙 | chkconfig iptables on | systemctl start firewalld |
关闭防火墙 | chkconfig iptables off | systemctl stop firewalld |
重启防火墙 | service iptables restart | firewallcmd reload |
查看状态 | /etc/init.d/iptables status | systemctl status firewalld 或firewallcmd state |
打开端口(以 8080 为例) | iptables A INPUT p tcp dport 8080 j ACCEPT ,然后保存并重启防火墙 | firewallcmd zone=public addport=8080/tcp permanent ,然后重新加载防火墙 |
查看打开的端口 | /etc/init.d/iptables status | firewallcmd zone=public listports |
永久生效 | 修改/etc/sysconfig/iptables 文件 | permanent 参数 |
临时生效 | service iptables restart | firewallcmd reload |
五、相关问答FAQs
Q1: CentOS 7 中如何永久开放多个端口?
A1: 在 CentOS 7 中,可以使用 firewalld 同时开放多个端口,并在命令中添加permanent
参数以确保修改永久生效,要同时开放 80 和 443 端口,可以运行以下命令:
firewallcmd zone=public addport=80/tcp permanent firewallcmd zone=public addport=443/tcp permanent firewallcmd reload
这样可以确保两个端口都永久开放,并且修改会立即生效。
Q2: 如果忘记了 firewalld 的配置文件路径,如何查找?
A2: 如果忘记了 firewalld 的配置文件路径,可以使用firewallcmd getactivezones
命令来查看当前活动的区域配置,这些配置文件位于/etc/firewalld/
目录下,每个区域对应一个子目录,公共区域(public)的配置文件位于/etc/firewalld/zones/public.xml
。