Debian/Ubuntu/CentOS 防火墙放行端口教程:开放指定端口方法

在部署网站、代理服务、应用程序或 API 时,VPS 端口如果未放行,就会导致:

  • 程序无法访问
  • 网站打不开
  • Nginx/Apache/Trojan/Xray 端口不通
  • 本地连接被拒绝

本教程将教你如何在 Debian / Ubuntu / CentOS 三大主流 Linux 系统中,使用 UFW、FirewallD、iptables 放行指定端口(如 TCP 80、443、22、8080、3000…),适合所有 VPS 用户。


你的防火墙类型如何判断?

在不同发行版中,默认防火墙不同。

系统 默认防火墙
Ubuntu UFW
Debian 无默认启用,可自行安装 UFW
CentOS 7/8/Stream FirewallD
更老系统 可能使用 iptables

查看系统防火墙进程:

sudo systemctl status ufw
sudo systemctl status firewalld

如果都不在运行,则可能未启用防火墙。


Ubuntu / Debian 使用 UFW 放行端口

UFW 是 Ubuntu/Debian 最常用的防火墙管理工具。

1. 检查 UFW 状态

sudo ufw status

如果是 inactive,先启用:

sudo ufw enable

2. 放行单个端口(TCP 或 UDP)

开放 TCP 端口(最常见)

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp

开放 UDP 端口

sudo ufw allow 53/udp
sudo ufw allow 123/udp
sudo ufw allow 10000/udp

3. 放行端口段

sudo ufw allow 10000:20000/tcp
sudo ufw allow 10000:20000/udp

4. 删除规则(关闭端口)

sudo ufw delete allow 8080/tcp

5. 重载防火墙

sudo ufw reload

CentOS 使用 FirewallD 放行端口(7/8/Stream)

CentOS 默认使用 FirewallD

1. 查看防火墙状态

sudo systemctl status firewalld

如果未运行,启用:

sudo systemctl start firewalld
sudo systemctl enable firewalld

2. 放行端口(TCP/UDP)

TCP

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

UDP

sudo firewall-cmd --zone=public --add-port=10000/udp --permanent

3. 放行端口段

sudo firewall-cmd --zone=public --add-port=10000-20000/tcp --permanent

4. 删除规则(关闭端口)

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

5. 重载防火墙

sudo firewall-cmd --reload

查看所有放行端口:

sudo firewall-cmd --list-ports

iptables 放行端口(旧系统或自定义环境)

一些精简 Linux 系统仍使用 iptables。

1. 放行单个端口(TCP)

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

UDP:

sudo iptables -A INPUT -p udp --dport 10000 -j ACCEPT

2. 保存规则

CentOS:

sudo service iptables save
或
sudo iptables-save > /etc/iptables/rules.v4

3. 查看所有规则

sudo iptables -L -n

云服务器安全组别忘了放行!

阿里云、腾讯云、AWS、GCP、Vultr、DO 均有 双重防火墙

  • Linux 内部防火墙(UFW/FirewallD/iptables)
  • 云厂商安全组(控制台设置)

如果:Linux 内部已经开放,外部仍不能访问,90% 可能是安全组没放行,要在云主机控制台放行端口,如:804432233068080


常见问题(FAQ)

端口已放行但还是访问不了?请检查:

  • Nginx / Apache 是否运行
  • 程序是否监听在对应端口
  • 是否监听在 0.0.0.0(外网)而不是 127.0.0.1(内网)
  • 云服务器安全组是否放行

放行端口对安全有影响吗?开放过多端口会增加风险。建议只开放:

  • 22(SSH)
  • 80(HTTP)
  • 443(HTTPS)
  • 程序必需端口