SSF0SSF0
首页
前端
  • Node
  • Go
  • Python
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
  • 开源项目
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • Python
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
  • 开源项目
Timeline
Github
标签
分类
  • Bash

    • Bash 获取路径在不同类型电脑的区别
  • Git

    • Git 使用 ssh 与 https 的区别
    • Git 回滚、重置与变基
    • 文件名大小写发生变化的坑
    • Git 提交信息规范解读与实践指南
    • Git 历史邮箱统一
    • Git 拉取 GitHub 失败、配置代理及 DNS 问题排查总结
    • Git 实战教程:如何使用 Cherry-pick 或直接覆盖让两个分支同步公共功能
  • Docker

    • Docker 命令大全
    • nginx 镜像部署静态文件
    • Docker 运行命令说明
    • 使用 node 镜像运行本地项目
    • 挂载和卷的区别
    • Docker 打包多平台镜像
    • Docker 使用 mysql
    • Docker 容器网络访问问题总结
    • Docker 容器绑定ip问题
  • VuePress

    • 使用 VuePress 搭建个人博客概括
  • CI/CD

    • blog 使用 Github-Actions 部署 docker 服务器
    • GitHub Actions项目部署国内服务器文件传输时间优化
  • 服务器

    • 腾讯云使用 ssh 连接服务器(Linux 实例)
    • ssl 证书安装到 docker 服务器
    • 操作系统与架构
    • ssh 连接时长问题
    • Oracle 服务器基础知识
    • OCI 专属网络拓扑图
    • 甲骨文-宝塔面板无法访问问题
    • 甲骨文服务器防火墙问题排查记录
    • 甲骨文重启后宝塔面板无法访问
  • hosts 文件指南
  • Cloudflare DNS与代理
  • 跨平台定时任务设置指南
  • Edge 浏览器连不上代理?一场由插件引发的“夺权”与 v2rayN 的深度探索
  • 二级域名访问异常排查记录
  • 软件走代理时如何抓包
  • JetBrains AI 使用
  • Clash 代理工作原理详解

甲骨文重启后宝塔面板无法访问:UFW、IN_BT 和 REJECT 顺序问题记录

问题背景

服务器重启后,宝塔面板无法访问。

宝塔面板端口是:

21412

一开始以为是端口没有放行,于是添加了 21412 端口规则。

iptables -I INPUT 1 -p tcp --dport 21412 -j ACCEPT

添加规则后,宝塔面板可以访问了。

但是后来把这条规则删除后,当前页面居然还能继续访问,于是误以为端口规则不是关键问题。

结果服务器再次重启后,宝塔面板又无法访问。


排查过程

1. 重启后宝塔面板访问失败

服务器重启后,浏览器无法访问宝塔面板:

http://服务器IP:21412/xxxx

SSH 可以正常连接,说明服务器本身没问题,主要问题集中在防火墙规则上。


2. 添加 21412 规则后可以访问

重新添加宝塔面板端口规则:

iptables -I INPUT 1 -p tcp --dport 21412 -j ACCEPT

添加后,宝塔面板可以访问。


3. 删除规则后当前页面还能访问,造成误判

之后删除了刚添加的规则,但是当前浏览器页面仍然可以访问宝塔。

这个现象容易让人误以为:

21412 规则不是必须的

但实际原因是:

当前连接没有断开。

已有连接仍然会被系统放行,所以当前页面还能访问。

但是换一个浏览器、换无痕窗口,或者重新建立连接,就可能无法访问。

所以这一步只是证明:

当前连接还活着

并不能证明防火墙规则已经没问题。


4. 再次重启后仍然无法访问

服务器再次重启后,因为之前的误判,宝塔面板还是打不开。

这说明之前只是临时现象,问题没有真正解决。

于是继续查看防火墙规则。


第一个易错点:以为宝塔防火墙关闭就是全部放开

一开始以为:

宝塔防火墙关闭 = 所有端口都放开

但实际不是这样。

实际情况是:

流量虽然走到了 IN_BT,
但如果 IN_BT 没有匹配到放行规则,
还是会继续往后走,
最后可能进入 REJECT 被拒绝。

最初的顺序:

流量进入 INPUT
↓
经过 IN_BT //这里如何防火墙关闭时没有规则的没有到 UFW 规则,所以直接走REJECT了
↓
遇到 REJECT
↓
直接拒绝

所以宝塔防火墙关闭,并不等于系统层面全部放行。


第二个易错点:宝塔开启防火墙后需要走 UFW

发现:

宝塔开启防火墙会有一堆的 UFW 配置:

root@instance-20260405:~# iptables -L INPUT -n -v --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1502  340K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21412
2     4475 6061K IN_BT      all  --  *      *       0.0.0.0/0            0.0.0.0/0
3     4095 6036K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
4        3   128 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
5      184 14561 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
6       29  1528 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
7      167  9613 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
8        0     0 ufw-before-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
9        0     0 ufw-before-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
10       0     0 ufw-after-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
11       0     0 ufw-after-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
12       0     0 ufw-reject-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
13       0     0 ufw-track-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0

但是这个时候第7条REJECT出现了问题。

然后知道,宝塔里面的规则实际是由 UFW 控制的。

也就是说,宝塔面板端口要能访问,需要满足:

UFW 开启
UFW 里面有 21412 放行规则
REJECT 规则在 UFW 后面

如果 UFW 有 21412 规则,但是 REJECT 在 UFW 前面,那么流量还没走到 UFW,就已经被拒绝了。

所以关键不只是有没有规则,还要看规则顺序。


关键问题:REJECT 必须放在 UFW 后面

最终发现问题点在 iptables 的 INPUT 链顺序。

需要查看:

iptables -L INPUT -n -v --line-numbers

重点看:

REJECT

是不是在 UFW 相关规则后面。

正确逻辑应该是:

流量进入 INPUT
↓
经过 IN_BT
↓
进入 UFW
↓
匹配 21412 放行规则
↓
允许访问
↓
最后才是 REJECT

如果顺序变成:

流量进入 INPUT
↓
经过 IN_BT
↓
先遇到 REJECT
↓
直接拒绝
↓
根本走不到 UFW

那么即使 UFW 里面有 21412 放行规则,也无法访问。


解决方法

重新添加宝塔面板端口规则:

iptables -I INPUT 1 -p tcp --dport 21412 -j ACCEPT

确认 UFW 开启:

ufw status

确认 UFW 开机自启:

systemctl enable ufw

然后调整 REJECT 规则顺序,让它排在 UFW 后面。

删除原来的 REJECT:

iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited

重新追加到最后:

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

再次查看:

iptables -L INPUT -n -v --line-numbers

确认:

REJECT 在最后
UFW 相关链在 REJECT 前面

然后删除:

iptables -D INPUT -p tcp --dport 21412 -j ACCEPT

让整个流程走宝塔 UFW 就可以了。


最终结果

调整完成后,宝塔面板可以正常访问。

再次重启服务器后,规则仍然生效,宝塔面板也能正常打开。

说明问题解决。


总结

这次问题的核心不是单纯的端口没放行,而是:

宝塔面板端口 21412 需要通过 UFW 放行;
但是 UFW 规则必须在 REJECT 之前执行;
如果 REJECT 在 UFW 前面,流量会提前被拒绝。

两个关键坑:

1. 宝塔防火墙关闭,不等于所有端口全部放开。
2. 添加规则后删除,当前页面还能访问,只是因为连接没断,不代表规则没用。

最终正确状态是:

IN_BT 存在
UFW 开启
21412 已放行
REJECT 位于 UFW 后面

这样服务器重启后,宝塔面板才能持续正常访问。

最后更新时间:
贡献者: 何风顺
上一页
甲骨文服务器防火墙问题排查记录