Oracle Cloud Ubuntu 实例安装宝塔面板记录
Oracle Cloud Ubuntu 实例安装宝塔面板记录
日期:2026-10-10
背景
在 Oracle Cloud 上开了一台 Ubuntu 实例,本地是 Windows 11。实例使用自行上传的 SSH 密钥登录,计划安装宝塔面板,并把面板端口改为 8888、安全入口改为 /portal。安装完成后遇到端口无法访问的问题,最终定位到 Oracle 镜像自带的 iptables 规则。
1. 连接实例
私钥放在 Windows 11 的默认 SSH 目录:
C:\Users\你的用户名\.ssh
将私钥改名为 id_rsa 后,直接连接:
ssh ubuntu@实例公网IP
Ubuntu 镜像默认用户名是 ubuntu,连接成功后即可在服务器上操作。
2. 安装宝塔面板
安装前先更新系统并安装依赖:
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl gcc make
从宝塔官网获取 Ubuntu 安装脚本,保存为 install.sh。下载脚本时不要加 sudo,避免文件被下载到 /root 目录。然后执行安装:
sudo bash install.sh
安装过程中按提示输入 y 确认。安装完成后,终端会显示面板地址、用户名和密码,需要立即保存。
3. 修改面板端口与安全入口
安装完成后,将面板端口改为 8888,安全入口改为 /portal。此时浏览器访问地址格式为:
实例公网IP:8888/portal
注意安全入口区分大小写,浏览器建议用无痕模式访问,避免缓存旧地址。
4. 访问失败与排查
浏览器访问时提示连接被关闭。用端口检测工具测试,发现:
22端口通8888端口不通
先在服务器上检查 UFW:
sudo ufw status verbose
输出显示 8888/tcp 已经放行,说明 UFW 不是问题。继续检查 iptables:
sudo iptables --list --line-numbers
关键输出如下:
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp -- anywhere anywhere
3 ACCEPT all -- anywhere anywhere
4 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
5 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
6 ufw-before-logging-input all -- anywhere anywhere
7 ufw-before-input all -- anywhere anywhere
...
问题很明确:INPUT 链的默认策略是 DROP,第 5 条是 REJECT all,而 UFW 的规则链排在第 6 条之后。也就是说,除了 SSH 和已建立连接,其他新入站流量在第 5 条就被拒绝了,根本走不到 UFW 的放行规则。
5. 解决方案
有两种处理方式。
方案一:在 REJECT 之前插入放行规则
例如放行 8888:
sudo iptables -I INPUT 5 -p tcp --dport 8888 -j ACCEPT
然后保存:
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
这种方式保留 Oracle 镜像自带的 iptables 层,但每开一个端口都要手动插入规则,比较麻烦。
方案二:删除 REJECT,让 UFW 单独接管(推荐)
既然已经启用了 UFW,Oracle 镜像自带的那条 REJECT all 就有些多余,而且会架空 UFW。可以直接删除:
sudo iptables -D INPUT 5
确认规则已删除:
sudo iptables --list INPUT --line-numbers
保存规则:
sudo netfilter-persistent save
之后只需要维护 UFW 放行规则即可。INPUT 链默认策略仍是 DROP,未放行的端口依然无法访问,安全性没有降低。
6. Oracle 安全列表必须单独放行
除了服务器内部的 UFW 和 iptables,Oracle Cloud 还有一层平台级防火墙:安全列表。每开一个端口,都要在 OCI 控制台添加入站规则。
路径:
网络 -> 虚拟云网络 -> 你的 VCN -> 安全列表 -> 默认安全列表 -> 入站规则
添加规则示例:
- 源 CIDR:
0.0.0.0/0 - IP 协议:
TCP - 目标端口范围:
8888
如果只改了 UFW 和 iptables,安全列表没放行,外部依然访问不了。
7. 后续 80、443 端口的处理
如果采用方案二,后续开放 80 和 443 只需要两步。
第一步,在服务器上放行 UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
第二步,在 Oracle 安全列表中添加入站规则:
- TCP
80 - TCP
443
不需要再手动修改 iptables。
8. 总结
这次安装宝塔面板遇到的核心坑点是:Oracle Cloud 的 Ubuntu 镜像自带 iptables 规则,其中 INPUT 链里的 REJECT all 会拦截所有未被前面规则放行的新流量。即使 UFW 已经放行 8888,流量也会在到达 UFW 之前被拒绝。
推荐做法是删除 iptables 中的那条 REJECT 规则,让 UFW 单独接管服务器防火墙。之后每开一个端口,只需要:
- UFW 放行;
- Oracle 安全列表放行。
最后,妥善保存 SSH 私钥、宝塔面板地址、用户名和密码,并建议在 Oracle 计费和成本管理中设置预算预警,避免产生意外费用。
Q&A
Q1:Oracle Cloud Ubuntu 实例安装宝塔面板后,8888 端口不通怎么办?
先检查 Oracle 安全列表是否放行 TCP 8888,再检查服务器 UFW 是否放行 8888。如果这两处都正常,大概率是 Oracle 镜像自带的 iptables 规则拦截了流量。执行 sudo iptables --list --line-numbers,查看 INPUT 链中是否有 REJECT all 规则位于 UFW 规则之前。如果有,需要在 REJECT 之前插入 8888 的 ACCEPT 规则,或者直接删除那条 REJECT。
Q2:为什么 UFW 已经放行 8888 端口,外部仍然无法访问?
因为 Oracle Cloud 的 Ubuntu 镜像默认会在 iptables 的 INPUT 链中加一条 REJECT all,它的位置在 UFW 规则链之前。流量到达 iptables 后,如果没有匹配到前面的 ACCEPT 规则,就会直接被 REJECT 掉,根本走不到 UFW 的放行规则。所以只改 UFW 不够,必须同时处理 iptables 和 Oracle 安全列表。
Q3:Oracle Cloud 的安全列表在哪里设置?
登录 OCI 控制台,进入“网络” -> “虚拟云网络” -> 选择你的 VCN -> “安全列表” -> 默认安全列表 -> “入站规则”。在这里添加规则,例如源 CIDR 0.0.0.0/0、IP 协议 TCP、目标端口范围 8888。安全列表是云平台层面的防火墙,优先级最高,每开一个端口都要单独放行。
Q4:如何删除 iptables 中的 REJECT 规则?
先执行 sudo iptables --list INPUT --line-numbers 找到 REJECT all 所在的行号,例如第 5 条。然后执行 sudo iptables -D INPUT 5 删除。删除后再次查看确认,并执行 sudo netfilter-persistent save 保存规则,防止重启后恢复。
Q5:删除 iptables 的 REJECT 规则安全吗?
安全。删除后 INPUT 链的默认策略仍然是 DROP,未放行的端口依然无法访问。流量会正常进入 UFW 的规则链,由 UFW 决定是否放行。这样只是去掉了重复的拦截层,让 UFW 单独接管,既简化管理,也不会降低安全性。
Q6:Oracle Cloud ARM 实例免费额度是多少?
Oracle Cloud 永久免费的 ARM 实例(Ampere A1)额度为:2 OCPU、12 GB 内存,每月 1500 OCPU 小时和 9000 GB 小时。可以灵活分配,例如创建一个 1 OCPU + 6 GB 的实例,只消耗一半免费额度。升级为付费账户后,免费额度不变,超出部分按量计费。
Q7:如何连接 Oracle Cloud 的 Ubuntu 实例?
在 Windows 11 上,将私钥放到 C:\Users\你的用户名\.ssh 目录,改名为 id_rsa,然后执行 ssh ubuntu@实例公网IP。如果私钥文件名不是默认名,可以用 ssh -i "私钥路径" ubuntu@实例公网IP 指定。Ubuntu 镜像默认用户名是 ubuntu。
Q8:宝塔面板修改端口和安全入口后,访问地址是什么?
访问地址格式为 http://实例公网IP:端口/安全入口。例如端口改为 8888、安全入口改为 /portal,则访问 http://实例公网IP:8888/portal。安全入口区分大小写,建议用无痕模式访问,避免浏览器缓存旧地址。
Q9:后续开放 80、443 端口需要改 iptables 吗?
如果已经删除了 iptables 中的 REJECT 规则,就不需要再改 iptables。只需要在 UFW 中执行 sudo ufw allow 80/tcp 和 sudo ufw allow 443/tcp,并在 Oracle 安全列表中添加入站规则即可。如果保留了 REJECT 规则,则每开一个端口都要在 iptables 中手动插入 ACCEPT 规则。
Q10:如何保存 iptables 规则防止重启丢失?
安装 iptables-persistent:sudo apt install -y iptables-persistent,安装过程中选择 Yes 保存当前 IPv4 和 IPv6 规则。之后每次修改 iptables 后,执行 sudo netfilter-persistent save 即可持久化保存。
- 点赞
- 收藏
- 关注作者
评论(0)