
甲骨文云一台 VPS 绑定 5 个公网 IP:Ubuntu + Dante 自建 SOCKS5 静态代理完整教程

配套视频约 22 分 39 秒。可以先看完整演示,再按本文复制命令;章节跳转见文末。
手里的甲骨文云 VPS,还只用着一个公网 IP?这篇教程把本期实操完整整理出来:在同一台 AMD VPS 的虚拟网卡上增加四个辅助私网 IP,分别关联公网 IP,再用 Ubuntu 和 Dante,把一台服务器变成五个可以逐个选择的 SOCKS5 出口。
重点是每个入口对应自己的公网出口。不是简单开五个端口,也不用为五个出口再开五台机器。
先确认两件事:能创建额外公网 IP,不等于你的账号一定有免费额度;请先看控制台配额、创建费用提示与实际账单。这里得到的是云服务器 IP,通常属于数据中心 IP,不是住宅 IP 或平台通过率的保证。
下载 Netplan + Dante 配置示例
含 60-secondary-ips.yaml、danted.conf.example 和使用说明;不含密码、密钥或真实公网地址。替换为自己的地址后再使用。
开始前:准备环境与地址对照表
本期演示环境是一台已经创建好的甲骨文云 AMD VPS,系统为 Ubuntu 24.04,只有一张主 VNIC,网卡名为 ens3。你需要能通过 SSH 登录,并有 sudo 权限。还没有账号或机器,可以先看甲骨文云注册教程。
先记下自己的五组地址。下面私网 IP 是本期演示值,公网部分已隐藏中间两段。不要把表里的私网 IP 当成你的实际地址,更不能把带星号的公网 IP 填进客户端。
| 用途 | Ubuntu 使用的私网 IP | 云端对应公网 IP(脱敏) |
|---|---|---|
| 主地址 | 10.0.0.147 | 138.***.***.251 |
| 辅助地址 1 | 10.0.0.141 | 129.***.***.149 |
| 辅助地址 2 | 10.0.0.116 | 64.***.***.147 |
| 辅助地址 3 | 10.0.0.120 | 64.***.***.221 |
| 辅助地址 4 | 10.0.0.117 | 217.***.***.91 |

本篇按单网卡、同子网的场景讲解。网卡名、子网前缀、主地址都以你自己的机器为准;多网卡或不同网关的环境不能直接套用这里的配置。
一、公网 IP 为什么不直接写进 Ubuntu?
在这套方案里,公网地址在 Oracle Cloud 侧关联到 VNIC 的私网地址。Ubuntu 网卡上添加的是辅助私网 IP,浏览器填写的则是与它关联的公网 IP。这两处不要填反。
浏览器 → 第一个公网 IP:1080
→ 云端映射到 10.0.0.141:1080
→ Dante 以 10.0.0.141 作为出口来源
→ 云端映射为对应公网 IP → 目标网站
同一台 VPS 可以有多个辅助私网地址。每个地址关联自己的公网 IP,才有后面的五组入口与出口。如果只增加端口、仍从默认来源地址发出,目标网站可能始终看到同一个公网 IP。Oracle 官方私网 IP 说明也说明了辅助私网地址与预留公网 IP 的关联能力。
二、甲骨文云后台:把五组地址准备好
- 进入 计算 → 实例,打开这台 AMD VPS。
- 找到附加的 VNIC,打开原来的主虚拟网卡,不必为本例另建一张网卡。
- 进入 IP 管理 / IPv4 地址,选择分配辅助私网 IP。
- 在该 VNIC 的子网中分配一个未占用地址,记下实际生成的值。
- 为这个辅助私网地址分配或关联预留公网 IP(Reserved Public IP),设置便于辨认的名称,例如 network02。
- 重复三次,得到四个辅助私网地址;加上原来的主地址,一共五组。


视频把“临时”切换为“预留”,是为了给辅助地址关联对应类型的公网资源。Oracle 的临时公网 IP 与预留公网 IP 适用对象不同;辅助私网地址使用预留公网 IP。具体规则可核对Oracle 公网 IP 官方文档。

三、Ubuntu:让系统真正用上这些地址
1. 先查网卡、主地址和默认路由
ip -br -4 addr
ip route
ls -la /etc/netplan/
本期检查到网卡名为 ens3,主地址为 10.0.0.147/24。你的网卡可能叫其他名字,地址也可能不在同一网段。后面的 ens3、四个辅助 IP 和 /24,都要按自己的实际情况修改。
2. 先添加第一个辅助私网 IP
sudo ip addr add 10.0.0.141/24 dev ens3
ip -br -4 addr show dev ens3
看到新地址出现后,再添加另外三个。若提示 File exists,先检查地址是否已存在,不要反复执行添加。
sudo ip addr add 10.0.0.116/24 dev ens3
sudo ip addr add 10.0.0.120/24 dev ens3
sudo ip addr add 10.0.0.117/24 dev ens3
ip -br -4 addr show dev ens3

3. 指定来源地址,逐一核对公网出口
for src in 10.0.0.147 10.0.0.141 10.0.0.116 10.0.0.120 10.0.0.117; do
printf '%s -> ' "$src"
curl --interface "$src" -4 --max-time 15 https://api.ipify.org
printf '\n'
done
--interface 指定这次请求使用的来源私网地址,-4 只测试 IPv4。把五次返回结果,与云端的五组关联逐一对照;不要只看“能上网”,还要看“出口是否对应”。
4. 单独保存 Netplan 辅助配置
刚才的 ip addr add 是临时配置,重启后可能消失。本期原有配置是 50-cloud-init.yaml,保留其中的 DHCP、网关和主地址,只新增辅助文件。先备份当前目录,再编辑新文件:
sudo cp -a /etc/netplan "/etc/netplan.backup-$(date +%Y%m%d-%H%M%S)"
sudo nano /etc/netplan/60-secondary-ips.yaml
network:
version: 2
ethernets:
ens3:
addresses:
- 10.0.0.141/24
- 10.0.0.116/24
- 10.0.0.120/24
- 10.0.0.117/24
这里只增加四个辅助地址,不把主地址重复写一遍,也不重建默认网关。新旧文件必须匹配同一个 Netplan 设备 ID;如果原配置通过 match 或其他名称标识网卡,请先适配设备段。YAML 用空格缩进,不要用 Tab。

5. 检查并应用
sudo chmod 600 /etc/netplan/60-secondary-ips.yaml
sudo netplan generate
sudo netplan try --timeout 120
视频中直接执行 sudo netplan apply。图文版建议远程修改时先使用 netplan try:确认网络仍正常,再按提示接受配置;同时保留第二个 SSH 会话和云控制台恢复入口。try 的回退也不能代替备份与事后检查。格式报错时先修正,不要继续应用。
ip -br -4 addr show dev ens3
ip route
安排方便恢复的时间重启,再重复“五个来源地址”的出口测试。这样才能确认持久化也已完成,而不是当前终端里暂时有效。Netplan 配置文档。
四、Dante:把五个出口变成 SOCKS5 代理
1. 安装软件与创建专用账号
sudo apt update
sudo apt install -y dante-server
command -v danted
sudo systemctl stop danted
sudo useradd --shell /usr/sbin/nologin --no-create-home money
id money
sudo passwd money
如果 money 账号已存在,跳过 useradd,检查是否确实为你准备的代理专用账号。passwd 会交互式要求输入两次密码,输入时不显示字符是正常的;不要使用 root 的 SSH 密码作为代理密码。
2. 备份并编辑配置文件
sudo cp -a /etc/danted.conf "/etc/danted.conf.bak-$(date +%Y%m%d-%H%M%S)"
sudo nano /etc/danted.conf
下面是按本期方案整理的完整示例。替换所有私网 IP;用户名如有修改,最后的 user: money 也要一起改。图文版明确限定为 TCP CONNECT,并限定使用 money 账号,适合本文的浏览器网页测试。
logoutput: syslog
# 五个监听地址:填写系统中真实存在的私网 IP
internal: 10.0.0.147 port = 1080
internal: 10.0.0.141 port = 1080
internal: 10.0.0.116 port = 1080
internal: 10.0.0.120 port = 1080
internal: 10.0.0.117 port = 1080
# 五个可用的出口来源地址
external: 10.0.0.147
external: 10.0.0.141
external: 10.0.0.116
external: 10.0.0.120
external: 10.0.0.117
external.rotation: same-same
# 使用系统账号密码;普通工作进程降低权限
user.privileged: root
user.unprivileged: nobody
clientmethod: none
socksmethod: username
# 服务器本机测试及外部连接均先经过这层规则。
# 外部来源必须同时受 OCI 安全列表/NSG 的客户端 /32 白名单限制。
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
# 本文只配置浏览器网页使用的 TCP CONNECT,并限定代理账号。
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
protocol: tcp
socksmethod: username
user: money
log: connect disconnect error
}

这份配置的核心是 external.rotation: same-same:连接被哪个本地地址接收,就选择同一个地址作为向外连接的来源,再由云端映射为对应公网 IP。socksmethod: username 则启用系统账号密码认证。参见Dante 官方配置手册。
注意:clientmethod: none 不等于 SOCKS5 免密码;后续 SOCKS 请求仍需通过 username 认证。示例规则中的全来源地址也不能代替外层白名单,下一节必须限制外部连接来源。
3. 校验语法、启动服务、查看五个监听
sudo /usr/sbin/danted -V -f /etc/danted.conf
sudo systemctl restart danted
sudo systemctl enable danted
systemctl --no-pager --full status danted
sudo ss -lntp | grep ':1080'
先确认大写 -V 校验没有报错,再启动。服务应为 active (running),并出现五个不同私网地址的 :1080 监听。如果失败,先查看日志:
sudo journalctl -u danted -n 80 --no-pager

4. 先在服务器本机测试
先验证第一条辅助地址。下面在 Bash 中执行,密码采用隐藏输入;变量形式避免把密码字面量写进命令历史,但不是对本机其他高权限进程的隐藏保证。
read -r -s -p "SOCKS password: " SOCKS_PASS; echo
curl --socks5-hostname 10.0.0.141:1080 \
--proxy-user "money:${SOCKS_PASS}" \
-4 --max-time 15 https://api.ipify.org
unset SOCKS_PASS
返回值应与 10.0.0.141 在云端关联的公网 IP 一致。本期脱敏示例为 129.***.***.149。这里验证的是代理链路;前面 curl --interface 验证的是系统来源地址,两步都通过,排错会容易很多。
视频命令勘误:https://api.ipify.org 这一行末尾不要再加反斜杠。unset SOCKS_PASS 是下一条独立命令;若把它接到 curl 后面,会被当成额外参数,产生与真实出口查询无关的错误。
五、放行 1080,同时限制谁能连接
外部客户端能否连接,要同时经过服务器防火墙与 OCI 安全列表 / NSG。本机测试成功,不代表外网已经放行。这里不需要改 SSH 端口,也不需要清空现有规则。
1. 服务器侧:检查现有规则
sudo iptables -S INPUT
视频先用下面的命令演示“放行 TCP 1080”的作用,然后在云端限制来源。它会允许任意来源访问该端口,不要把它误解成白名单:
sudo iptables -I INPUT -p tcp --dport 1080 -j ACCEPT
长期使用时,建议改成只允许你的客户端公网 IP。先在你自己的电脑或当前客户端网络确认公网出口,再填写下面变量;如果电脑通过其他网络中转,应以服务器实际看到的连接来源为准。
CLIENT_CIDR='替换为你的客户端公网IP/32'
sudo iptables -I INPUT 1 -p tcp -s "$CLIENT_CIDR" --dport 1080 -j ACCEPT
这条命令只是增加允许规则,不会自动删除已经存在的“全来源允许”。如果你刚执行过视频那条全开放规则,请在白名单添加成功后,删除那条完全相同的演示规则:
sudo iptables -D INPUT -p tcp --dport 1080 -j ACCEPT
sudo iptables -S INPUT
只有存在这条完全相同的规则时才执行删除;不要按猜测的行号删除其他规则。还要检查其他历史放行项和默认策略。若你的系统通过 UFW 或 nftables 管理防火墙,按现有管理方式配置,不要混用整套规则。iptables 的临时变更也要按你现有方式持久化,并在重启后复查。
2. 云端侧:安全列表或 NSG 中添加白名单
| 字段 | 本例填写 |
|---|---|
| 规则方向 | 入站 |
| 来源类型 | CIDR |
| 来源 CIDR | 你的客户端公网 IP/32 |
| IP 协议 | TCP |
| 源端口 | 保留全部 / 留空 |
| 目的端口 | 1080 |
| 连接跟踪 | 使用有状态规则 |
到实例使用的 VNIC / 子网,确认实际生效的安全列表;如果还绑定 NSG,要一并检查。OCI 允许规则叠加生效:新增一条 /32 不能抵消旧的 0.0.0.0/0 放行规则,旧的全开放项也要处理。家庭宽带公网 IP 变化后,白名单要同步更新。

端口可以更换,但 Dante 的监听、服务器防火墙、云端安全规则和客户端必须一致。更换端口不能代替密码和来源限制。SOCKS5 本身也不是加密隧道;需要保护客户端到服务器这段传输时,应使用合适的加密连接。
六、比特浏览器:从外部验证入口与出口
- 打开比特浏览器,在浏览器窗口管理中点击创建窗口。
- 填写一个能辨认的窗口名,例如“甲骨文云出口 1”。
- 在代理设置中选择自定义代理,代理类型选择 SOCKS5。
- 主机填写第一组完整公网 IP,不是 10.0.0.x;端口填写 1080,用户名填写 money。
- 输入你自己设置的密码,完成代理检测并保存窗口。
- 打开该窗口,访问 WHOER,检查实际出口。

先看 IP 地址是否与这组入口对应,再看 IP 类型和页面给出的欺诈分值。云服务器通常被识别为数据中心 / 托管 IP;这些标签与分值仅是检测服务的结果,不能代表每个网站都会做出相同判断。

然后再建第二个窗口,只把主机换成另一组公网 IP,保持端口和账号一致。分别验证出口已切换。视频用客户端演示代表性入口;如果要把五组都投入使用,请把五组逐一验收,并在服务器重启后复测。
验收标准:五组私网地址已存在;指定来源测试得到各自公网 IP;Dante 五条监听正常;错误密码不能通过;客户端访问被来源白名单限制;每组代理的实际出口与云端关联一致;重启后配置仍有效。
常见问题与故障排查
为什么开了五个端口,最后还是同一个 IP?
端口与公网出口不是一回事。依次检查云端关联、Ubuntu 的辅助地址、Dante 的 external 列表与 same-same 配置;先用 curl –interface 分离系统网络问题,再测代理。
ip addr add 提示 Cannot assign requested address 或测试来源失败?
核对 IP 是否属于该 VNIC、子网前缀和网卡是否正确。添加地址后用 ip -br -4 addr 复查;不要在系统里直接添加云端显示的公网地址。
本机 curl 成功,外部连接却超时?
先看服务是否监听正确私网地址,再检查服务器防火墙、OCI 安全列表/NSG、客户端公网来源和端口。某一条允许规则存在,不代表其他层已配好。
连接成功但认证失败?
确认 money 账号存在、密码输入正确、socksmethod 为 username。若你修改了专用用户名,配置里的 user 也要同步;先查看 danted 服务日志。
重启后辅助 IP 消失,或者 Dante 无法启动?
检查 Netplan 配置是否合并到正确设备、文件权限是否正确,再执行 netplan generate。地址尚未出现时 Dante 就启动,也可能导致绑定失败,需结合启动日志排查网络就绪顺序。
这是不是五个独立服务器?
不是。五个 IP 共用同一台 VPS 的 CPU、内存、带宽与可用性;服务器停机时,五个代理都会受影响。
能保证住宅属性、低欺诈分值或账号安全吗?
不能。IP 属性、历史与目标平台的判断各不相同。自建只让你控制代理和出口选择,不会自动改变地址所属网络,也不能保证平台接受。
其他 VPS 厂商也能这样配置吗?
思路可参考,但公网 IP 分配、额外费用、网关、路由与系统网络配置可能完全不同。先核对厂商文档,不要把 Oracle 的私网映射方式原样照搬。
视频章节与延伸阅读
- 00:00 · 开场白
- 01:01 · 原理介绍
- 03:05 · 甲骨文云公网 IP 申请
- 05:50 · Ubuntu 绑定 IP
- 11:48 · Dante 安装配置
- 16:56 · 放行 1080 与测试
- 21:22 · 总结
以上按本期最终章节时间整理;网页跳转使用整秒,原片结束约为 22:39。
继续学习
- 甲骨文云注册与免费 VPS 入门
- Oracle Cloud ARM + Docker + WordPress 建站教程
- 上一篇:CLIProxyAPI 自建网关 + Hermes 完整实战
- 甲骨文云系列视频播放列表
核对资料
这套方案的价值,是让一台机器提供多个可以选择和验证的固定出口。把云端关联、系统网络、代理认证和访问限制这几层分别跑通,后续排错与维护才会清楚。
