Linux系统下打开端口到底该用哪些命令

来源:Ruby教程作者:深圳程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Linux系统下打开端口到底该用哪些命令》,敬请观看详情。把端口当成一扇门,门没开外部请求就进不来,这是网络服务起不来的常见根因。Linux本身不单独提供一条叫打开端口的命令,实际是由防火墙规则决定流量能否进入。CentOS 7之后默认用firewalld,命令是firewall-cmd加永久放行参数;Ubuntu常用ufw简化管理;更底层是iptables直接写规则。很多人改了服务配置却忘了放行端口,导致本地能访问远程连不上。理清firewalld、ufw与iptables三者关系,选对应系统的做法,才能稳定开放端口而不破坏安全策略。

在Linux环境中,所谓打开端口并不是系统内核提供了一条专用指令去激活某个数字,而是由网络过滤机制决定是否允许数据包到达对应服务。无论是Web服务的80端口,还是SSH的22端口,只要防火墙未放行,外部客户端就会收到连接超时或拒绝的响应。理解这一点,才能正确选择操作方式,而不是盲目搜索一条命令就执行。

Linux系统下打开端口到底该用哪些命令

firewalld环境下如何放行端口

CentOS 7、Rocky Linux、AlmaLinux等发行版默认采用firewalld作为动态防火墙管理器。它背后依然调用nftables或iptables,但提供了更友好的区域(zone)概念。最常用的开放TCP端口命令是firewall-cmd --zone=public --add-port=8080/tcp --permanent,其中--permanent表示写入永久配置,否则重启后规则丢失。执行完后必须运行firewall-cmd --reload使规则生效。

如果不加--permanent仅做临时开放,可用于快速排查问题,比如先临时放开端口确认服务本身正常,再决定持久化。查看当前已放行端口可使用firewall-cmd --list-ports。下面是一个典型脚本示例,用于在生产服务器上开放应用端口并验证:

#!/bin/bash
# 开放9000端口TCP协议,永久生效
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
# 列出当前端口确认
firewall-cmd --list-ports

firewalld的优势在于规则按区域管理,可针对不同网卡绑定不同信任级别。例如内网网卡放入trusted区域全通,外网网卡仅放行必要端口。这种结构比直接写iptables链更不容易出错,也方便用firewall-cmd --remove-port回滚。

Ubuntu系统中ufw的简化操作

Ubuntu和Debian系通常预装ufw(Uncomplicated Firewall),它是对iptables的前端封装,目标是降低使用门槛。开启端口只需ufw allow 22/tcp,这条命令默认就是持久化的,因为ufw的配置文件在/etc/ufw下会随系统启动加载。相比firewalld,ufw没有区域概念,规则更扁平,适合单网卡云主机。

使用ufw前要确保服务本身是启用的,用ufw enable激活防火墙,ufw status verbose查看详细状态。如果误拦了SSH,可通过云控制台救机后执行ufw allow sshufw allow 22恢复。以下代码展示了初始化ufw并开放Web与SSH端口的过程:

# 设置默认拒绝入站,允许出站
ufw default deny incoming
ufw default allow outgoing
# 允许SSH和HTTP/HTTPS
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
# 启用防火墙
ufw enable
# 查看状态
ufw status numbered

ufw的局限在于复杂场景表达能力弱,例如基于IP段限速、按时间段控制都无法直接实现。此时仍需退回iptables或nftables。但对于绝大多数开发者在单机部署应用,ufw已完全够用,且不容易因规则顺序写错导致全端口暴露。

底层iptables与nftables直接写规则

当发行版未安装firewalld或ufw,或者需要极细粒度控制时,就要直接操作iptables。传统命令如iptables -A INPUT -p tcp --dport 3306 -j ACCEPT表示在INPUT链追加规则接受TCP 3306端口。但iptables规则重启易失,需配合iptables-saveiptables-restore,或安装iptables-persistent包。

新内核推荐nftables替代iptables,语法更统一。例如nft add rule inet filter input tcp dport 6379 accept。下面示例展示用iptables开放端口并保存,适合最小化容器宿主节点:

# 接受本地回环
iptables -A INPUT -i lo -j ACCEPT
# 接受已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放5443端口
iptables -A INPUT -p tcp --dport 5443 -j ACCEPT
# 保存规则(Debian系)
iptables-save > /etc/iptables/rules.v4

直接写底层规则的风险是链顺序敏感,若前面有DROP规则就会拦截后续ACCEPT。因此排错时务必用iptables -L -n --line-numbers检查顺序。无论选哪种工具,核心逻辑都是让数据包在过滤表中被接受,同时服务进程确实在监听该端口,二者缺一不可。

linux防火墙端口开放修改时间:2026-08-13 14:57:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。