宝塔面板无法访问问题排查记录
1. 问题描述
在 OCI(甲骨文云)Ubuntu 服务器上安装宝塔面板后,浏览器无法访问宝塔面板地址。
当前宝塔面板实际端口为:
21412
浏览器访问:
https://服务器公网IP:21412
现象:
- 页面打不开
- 超时或连接失败
- 但 OCI 控制台安全规则中已经放行了对应端口
2. 环境信息
- 云平台:OCI(Oracle Cloud Infrastructure)
- 系统:Ubuntu
- 面板:宝塔 Linux 面板
- 宝塔实际端口:
21412
3. 最终原因
原因不是 OCI 没放行,而是 Ubuntu 系统内的 iptables 防火墙仍然拦截了 21412 端口。
也就是说,这里存在两层防火墙:
- OCI 控制台安全规则
- Ubuntu 系统防火墙(iptables/nftables/ufw)
即使 OCI 控制台放行了端口,如果 Ubuntu 本机防火墙没有放行,外部依然无法访问。
4. 排查过程
4.1 确认宝塔实际端口
先确认宝塔当前面板端口是否真的是 21412:
bt default4.2 确认宝塔服务是否在监听端口
检查系统是否真的在监听 21412:
sudo ss -lntp | grep 21412如果有输出,说明宝塔服务本身正常监听。
4.3 抓包确认公网请求是否到达服务器
使用 tcpdump 抓包:
sudo tcpdump -ni any tcp port 21412结果看到公网请求的 SYN 包已经到达服务器内网地址,例如:
公网IP.xxx > 10.0.0.34.21412: Flags [S]这说明:
- OCI 控制台安全规则已经生效
- 公网流量已经到达服务器
也就是说,问题不在 OCI 这一层。
4.4 检查 Ubuntu 本机防火墙规则
查看 iptables:
sudo iptables -L INPUT -n --line-numbers排查时发现规则类似:
- 允许已建立连接
- 允许 icmp
- 允许 lo
- 允许 22 端口
- 然后直接
REJECT所有其他入站流量
因此,21412 在系统里没有被放行,导致请求虽然到达服务器,但被 Ubuntu 本机防火墙拦截。
5. 解决方法
在 REJECT 规则之前插入一条允许 21412 的规则:
sudo iptables -I INPUT 5 -p tcp --dport 21412 -j ACCEPT执行后,宝塔面板立即恢复可访问。
6. 为什么 OCI 已经放行了,还要在 Ubuntu 里再放行?
因为是两层防火墙:
公网
-> OCI 控制台安全规则
-> Ubuntu 系统防火墙
-> 宝塔服务含义分别是:
- OCI 放行:允许流量到达云主机
- Ubuntu 放行:允许流量进入系统并交给宝塔进程
两层都要放行,外部访问才会成功。
7. 宝塔面板里的防火墙说明
宝塔“系统防火墙”页面本质上是在管理 Linux 系统里的防火墙规则,通常是:
iptables- 或
nftables
所以:
- 宝塔不是额外独立的一套云防火墙
- 它管理的是 Ubuntu 本机防火墙
- 它不能替代 OCI 控制台安全规则
另外,宝塔页面里看到 8888 备注为“宝塔Linux面板默认端口”,只是说明 8888 是默认值。 当前服务器实际端口已经改成了 21412,所以最终应以:
bt default输出结果为准。
8. 本次问题结论
本次“宝塔面板打不开”的根因是:
OCI 控制台端口已放行,但 Ubuntu 本机 iptables 未放行 21412,导致请求到达主机后被系统防火墙拦截。
最终通过以下命令解决:
sudo iptables -I INPUT 5 -p tcp --dport 21412 -j ACCEPT9. 建议的后续处理
9.1 保存防火墙规则,避免重启丢失
sudo apt-get update
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save9.2 最小放行原则
建议只开放必要端口:
22:SSH,仅允许自己的公网 IP21412:宝塔面板,仅允许自己的公网 IP80:网站 HTTP443:网站 HTTPS
9.3 不用的端口建议关闭
如果不用,建议关闭:
8888888202139000-40000
10. 本次排查用到的命令汇总
查看宝塔端口
bt default查看监听情况
sudo ss -lntp | grep 21412抓包确认请求是否到达
sudo tcpdump -ni any tcp port 21412查看 iptables 规则
sudo iptables -L INPUT -n --line-numbers临时放行 21412
sudo iptables -I INPUT 5 -p tcp --dport 21412 -j ACCEPT保存规则
sudo netfilter-persistent save11. 一句话总结
云控制台放行,只代表“流量能到服务器”;系统防火墙放行,才代表“服务真的能被访问”。
问题延续: