CentOS 6系统下开放端口主要依赖iptables防火墙,开放3位数(如8080)或4位数(如8888)端口时,需先通过iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT添加允许规则,再执行service iptables save保存配置,最后用service iptables restart重启防火墙生效,若系统开启SELinux,需使用semanage port -a -t http_port_t -p tcp 端口号添加端口策略,避免拦截,操作前建议备份现有规则,确保端口未被其他服务占用,完成后可通过iptables -L -n验证规则是否生效。
在CentOS 6系统中,无论是部署Web服务(如80、8080端口)、数据库服务(如3306、5432端口),还是自定义应用程序,开放指定端口是确保服务可访问的关键步骤,3位数端口(如100-999)和4位数端口(如1000-9999)是常见的服务端口,本文将详细介绍如何在CentOS 6系统中通过防火墙(iptables)开放这些端口,并确保配置持久生效。
CentOS 6防火墙基础:iptables简介
CentOS 6默认使用iptables作为防火墙管理工具,它通过定义规则链(如INPUT、OUTPUT、FORWARD)来控制数据包的流入与流出,默认情况下,iptables会阻止所有未明确允许的连接,因此需要手动开放特定端口才能让外部访问服务。
开放3位数与4位数端口的详细步骤
检查当前防火墙状态
在配置端口前,需确认防火墙是否运行中,通过以下命令查看iptables服务状态:

service iptables status
若显示“防火墙已停止”,需先启动防火墙:
service iptables start
并设置开机自启(可选):
chkconfig iptables on
开放指定端口(3位数/4位数)
假设需要开放3位数端口80(HTTP服务)和4位数端口8080(自定义Web服务),使用iptables的-A(追加规则)和-I(插入规则)命令添加规则。注意:-I会插入到规则链的顶部,优先级更高;-A追加到末尾。
(1)开放单个端口(以80端口为例)
# 开放TCP协议的80端口(3位数) iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开放UDP协议的80端口(若服务需要UDP) iptables -A INPUT -p udp --dport 80 -j ACCEPT
参数说明:
-A INPUT:添加到INPUT链(控制流入数据包)-p tcp/udp:指定协议类型(TCP或UDP)--dport 80:目标端口(3位数)-j ACCEPT:允许数据包通过
(2)开放多个端口(以80、8080端口为例)
若需同时开放3位数和4位数端口,可分别添加规则:
# 开放TCP 80端口(3位数) iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开放TCP 8080端口(4位数) iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
(3)开放端口范围(若需连续开放多个端口)
若需开放3位数端口1000-2000(注意:1000已属于4位数,此处仅为示例),可通过--dport范围指定:
# 开放TCP协议的1000-2000端口(含3位数和4位数) iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT
保存防火墙规则(关键步骤)
CentOS 6中,iptables规则默认重启后会丢失,需手动保存到配置文件才能持久生效:
service iptables save
执行后,规则会保存到/etc/sysconfig/iptables文件中,可通过以下命令验证:
cat /etc/sysconfig/iptables
重启防火墙使规则生效
保存规则后,重启防火墙确保新规则加载:
service iptables restart
验证端口是否开放
(1)使用iptables -L查看规则
iptables -L -n --line-numbers
-n表示以数字形式显示IP和端口,--line-numbers显示规则序号,在INPUT链中应能看到类似以下规则:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
序号1、2对应之前添加的80和8080端口规则。
(2)使用netstat或ss检查端口监听状态
# 使用netstat(CentOS 6默认安装) netstat -tuln | grep -E "80|8080" # 或使用ss(更快,若未安装可执行"yum install -y iproute") ss -tuln | grep -E "80|8080"
若输出类似以下内容,说明端口已开放并正在监听:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
SELinux对端口访问的影响(重要补充)
CentOS 6默认启用SELinux(安全增强型Linux),可能会阻止端口访问,即使iptables规则已开放,若端口开放后仍无法访问,需检查SELinux状态:
检查SELinux状态
getenforce
返回值为`En

