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% 可能是安全组没放行,要在云主机控制台放行端口,如:80、443、22、3306、8080
常见问题(FAQ)
端口已放行但还是访问不了?请检查:
- Nginx / Apache 是否运行
- 程序是否监听在对应端口
- 是否监听在 0.0.0.0(外网)而不是 127.0.0.1(内网)
- 云服务器安全组是否放行
放行端口对安全有影响吗?开放过多端口会增加风险。建议只开放:
- 22(SSH)
- 80(HTTP)
- 443(HTTPS)
- 程序必需端口