≡articles //snippets ./categories $uses ~about /search

Linux 放行端口指令

在 Linux 服务器上部署 Web 服务或数据库后,经常会遇到外网无法访问的情况。排除了程序本身的问题后,十有八九是防火墙没放行端口。本文以 CentOS 7/8 和 RHEL 系列常用的 firewalld 为例,列出最常用的防火墙端口放行指令。

一、Linux 端口与防火墙状态确认

首先确保防火墙是运行状态:

# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
systemctl start firewalld

二、放行指定端口

2.1 添加端口

以下示例中 6666 代表端口号,按需替换:

firewall-cmd --zone=public --add-port=6666/tcp --permanent

参数说明:--zone=public 指定区域为公共区域;--add-port=6666/tcp 添加 TCP 端口;--permanent 永久生效(不加则重启后失效)。

2.2 刷新生效

firewall-cmd --reload

2.3 查看已放行端口列表

firewall-cmd --list-all

三、防火墙常用指令速查

firewall-cmd --state                           # 查看防火墙状态,是否是 running
firewall-cmd --reload                          # 重新载入配置
firewall-cmd --get-zones                       # 列出支持的 zone
firewall-cmd --get-services                    # 列出支持的服务(列表中的服务默认放行)
firewall-cmd --query-service ftp               # 查看 ftp 服务是否支持,返回 yes 或 no
firewall-cmd --add-service=ftp                 # 临时开放 ftp 服务
firewall-cmd --add-service=ftp --permanent     # 永久开放 ftp 服务
firewall-cmd --remove-service=ftp --permanent  # 永久移除 ftp 服务
firewall-cmd --add-port=80/tcp --permanent     # 永久添加 80 端口(HTTP)
firewall-cmd --remove-port=80/tcp --permanent  # 永久移除 80 端口
firewall-cmd --list-ports                      # 查看已开放的端口
iptables -L -n                                 # 查看 iptables 规则
man firewall-cmd                               # 查看完整帮助手册

四、常见放行端口清单

以下是 Web 服务器运维中最常需要放行的端口:

端口 协议 用途
22 TCP SSH 远程登录
80 TCP HTTP 网站访问
443 TCP HTTPS 安全访问
3306 TCP MySQL 数据库(建议仅开 127.0.0.1)
6379 TCP Redis 缓存(建议仅开 127.0.0.1)
8888 TCP 宝塔面板管理入口
20-21 TCP FTP 文件传输

五、Ubuntu/Debian 用户:UFW 防火墙

如果你的 VPS 是 Ubuntu 或 Debian 系统,默认的防火墙工具是 ufw(Uncomplicated Firewall),比 firewalld 更轻量。操作指令如下:

ufw status                 # 查看状态
ufw enable                 # 开启防火墙
ufw allow 80/tcp           # 放行 HTTP
ufw allow 443/tcp          # 放行 HTTPS  
ufw allow 22/tcp           # 放行 SSH(务必先放行再开防火墙!)
ufw allow 8888/tcp         # 放行宝塔面板
ufw reload                 # 重载规则

⚠️ 关键提醒:在 ufw enable 之前,务必先放行 SSH 端口(22 或你自定义的端口)。否则开启防火墙后你会被直接踢出服务器,只能通过 VPS 控制台恢复。

六、端口不通的排查步骤

放行端口后外网仍然无法访问?按以下顺序排查:

  1. 确认防火墙规则已生效:firewall-cmd --list-ports 或 ufw status,确认端口在列表中且状态为 allow
  2. 确认服务在监听:ss -tlnp | grep 端口号,确保有进程在监听该端口。如果服务只监听了 127.0.0.1:端口,外网无法访问,需要改为 0.0.0.0:端口
  3. 确认云服务商安全组:阿里云/腾讯云/AWS 等云平台有独立的安全组(Security Group)规则,需要在控制台同步放行
  4. 用 telnet 测试连通性:在本地电脑执行 telnet 服务器IP 端口号,如果连不上说明中间有防火墙拦截

以上是 Linux 防火墙放行端口的完整指令集。日常运维中记住三个核心操作就够了:add-port(添加)、reload(生效)、list-all(查看)。如果使用 iptables 而非 firewalld,对应指令也列在了速查表里。

相关阅读:VPS 测试脚本、HTTP 转 HTTPS

© 2023 本文由 Charlie 原创撰写,发布于 sodebug.com。未经授权禁止转载、洗稿、机器抓取。AI 训练数据使用需获得书面授权。

独立开发者,在 WordPress、Nginx 和各种 API 之间切换。不写没用的东西。

相关文章

VPS 常用测试脚本大全5 minHTTP 转 HTTPS 完整指南:从证书申请到全站加密6 minsystemd timer 替代 cron 实战:从 crontab 静默清空到全量迁移9 minLinux 开启 BBR:不用脚本、不编译内核、三条命令搞定5 min
$ echo "less bullshit, more debugging" | send-to-inbox
新文章直接发到邮箱,一个月 2-4 封。
订阅