【教程】VPS 通过 incus 创建容器挂澳门 WARP IP,实现IP送澳,Google油管长视频无广告
一、把 tunnelbroker.net 的账号改到澳门
首先到美国 "Hurricane Electric" 公司(以下简称 HE)提供免费 IPv6 地址的网站:
网站创建账号。国家和地址信息用澳门地址生成器,填澳门地址(俄罗斯也行)。原先已经有账号的,地址修改成澳门。
创建隧道。隧道接入服务器选一个离 VPS 位置近、ping 延迟低的,最好延迟 10 毫秒以内。在列表中找几个离自己 VPS 地理位置较近的接入服务器 IP,从 VPS 用大包长时间逐个 IP 用 ping 命令测试,选一个延迟最低、抖动最小的服务器。不会选就把 ping 的结果丢给 AI。
默认会给分配一个 /64 长度的 IPv6 地址段,新账户 24 小时后可以再申请分配一个 /48 长度的(包含 65536 个 /64)地址段。老账户创建完隧道立马就可以申请分配 /48 的。
隧道建好后等待 2-4 周,让 HE 把 IPv6 地址段给广播送到澳门(期间 VPS 是否连接隧道没有影响)。等待期间可以用 ippure.com 查询 IP 地址段是否已经完成 "送澳"。实测 /48 长度的会比 /64 长度的快不少,大约两周就能完成送澳。/64 的大约需要一个月。
最先认可 HE 广播的网段位置信息的是 MaxMind,需要 2 周左右。接下来是 ipinfo.io,然后是 IP2Location 每月 1 号更新数据库。这三家都认可 IP 段 "送澳" 后,再过个三五天,Cloudflare 就会采纳,给用这个 IPv6 地址段连接 WARP 的 VPS 分配澳门的 WARP IP。
谷歌虽然不信 HE 的 IP 广播定位,但是信 Cloudflare。所以会认为 VPS 在澳门,不显示广告。
二、VPS 主机连接隧道,配置策略路由
此处以 VPS 系统是 "Ubuntu Server"(网络管理器是 netplan)为例进行演示,其它系统可参考进行。
为保护隐私已将真实 IP 地址进行替换。此教程假设 VPS 和 HE 分配的 IP 如下:
| 项目 | 地址 |
|---|---|
| VPS IP | 198.51.100.34 |
| HE 隧道服务器 IP | 64.62.134.130 |
| HE 的 "Client IPv6 Address" | 2001:470:1f:3b2::2/64 |
| HE 的 "Server IPv6 Address"(隧道默认网关) | 2001:470:1f:3b2::1/64 |
| HE 分配的 "Routed /48" 网段 | 2001:470:1a87::/48 |
"Routed /48" 实测送澳速度更快,所以此教程以 /48 地址为例进行演示。如果愿意等时间长一点用 /64 也是一样的。
一个 /48 地址段可拆分成 65536 个标准的 /64 地址段,此教程选择 /48 中的第一个 /64 地址段(即 2001:470:1a87::/64)。
以 root 用户身份登录 VPS。
创建 netplan 的隧道配置文件:
cat << EOF > /etc/netplan/60-he-ipv6.yaml
network:
version: 2
tunnels:
he-ipv6:
mode: sit
remote: 64.62.134.130
local: 198.51.100.34
addresses:
- "2001:470:1f:3b2::2/64"
# 重点:为了不影响 VPS 主机,创建一个新的 100 号路由表
routes:
- to: "::/0"
via: "2001:470:1f:3b2::1"
table: 100
# 重点:配置策略路由规则,让容器使用的 /64 网段匹配 100 号路由表
routing-policy:
- from: "2001:470:1a87::/64"
table: 100
EOF
chmod 600 /etc/netplan/60-he-ipv6.yaml
注意:请将上述命令中的 IP 地址替换为你自己的 VPS IP、HE 隧道服务器 IP、Client IPv6 Address 以及你自己的 Routed /48 中的第一个 /64 网段。
测试 netplan 配置:
netplan try
让 netplan 配置生效:
netplan apply
ping 测试,此时应该可以 ping 通对端:
ping 2001:470:1f:3b2::1
三、用 oneclickvirt 一键脚本安装 incus
以 root 用户身份登录系统。
1. 检测硬件配置是否满足要求
cd /root
bash <(curl -sSLk https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/pre_check.sh)
2. 安装 incus,等待自动重启
curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/incus_install.sh -o incus_install.sh && chmod +x incus_install.sh && bash incus_install.sh
如果后续提示 btrfs 或者 zfs 之类的模块无法加载,可以重启后再次运行这个安装脚本。再不行就再重启运行,直到提示安装成功。
四、创建并配置 incus 容器
cd /root
创建容器脚本使用方法:
# ./buildct.sh 容器名称 CPU核数 内存大小 硬盘大小 SSH端口 外网起端口 外网止端口 下载速度 上传速度 是否启用IPV6(Y or N) 系统(留空则为debian11)
创建一个名为 "warp" 的容器,内存 256M,硬盘 1G,SSH 端口 10022,映射外网 20000-20999 端口,上传下载限速 500Mbps,开启 IPv6,系统选择 Alpine Linux 3.24:
./buildct.sh warp 1 256 1 10022 20000 20999 500 500 Y alpine3.24
授权容器使用 WireGuard:
incus config device add warp tun unix-char path=/dev/net/tun
incus config set warp linux.kernel_modules tun,wireguard
incus restart warp
因为安装 incus 前已经连接了 he-ipv6,一键脚本会自动给 incus 网桥配置 he-ipv6 隧道接口同网段的 IP。但这样实际是不通的,需要修改 incus 配置,把 HE 路由过来的网段配置给容器使用。
1. 给 incus 网桥分配 IP
任选 "Routed /48" 网段中第一个 /64 地址段中的一个 IP:
incus network set incusbr0 ipv6.address=2001:470:1a87::1/64
2. 降低 incus 网桥的 MTU 值以匹配 HE 隧道
incus network set incusbr0 bridge.mtu 1480
3. 关闭 IPv6 的 NAT
因为我们用的是原生公网 IPv6 地址,不需要 NAT:
incus network set incusbr0 ipv6.nat=false
4. 开启 incus 层面的 IPv6 路由支持
incus 会自动处理邻居发现 NDP 和本地路由:
incus network set incusbr0 ipv6.routing=true
5. 检查并清理多余网卡
查看容器配置,如果有两个网卡,需要删除一键脚本配置错误的 eth1 网卡:
incus list
incus config device remove warp eth1
incus restart warp
6. 修改 oneclickvirt 一键脚本设置的全局 IPv6 NAT
只保留针对 IPv4 的 NAT:
nano /etc/nftables.conf
把 oifname != "incusbr0" masquerade 改成:
ip version 4 oifname != "incusbr0" masquerade
保存退出,然后重载防火墙配置:
nft -f /etc/nftables.conf
五、容器内装一键脚本连接 WARP
进入容器:
incus exec warp bash
禁止 udhcpc 修改 /etc/resolv.conf:
cat << EOF > /etc/udhcpc/udhcpc.conf
RESOLV_CONF="no"
EOF
cat << EOF > /etc/dhcpcd.conf
nohook resolv.conf
EOF
创建符合一键脚本要求(第一行必须是 # Generated by resolvconf)的 resolv.conf 文件:
cat << EOF > /etc/resolv.conf
# Generated by resolvconf
nameserver 1.1.1.1
nameserver 8.8.8.8
EOF
安装 WARP 脚本:
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
连接 WARP。在出现的菜单中依次选择:
3. 为 原生双栈 添加 WARP 双栈网络接口 (bash menu.sh d)1. wireguard 内核 (默认)1. 全局 (默认)2. IPv6
六、安装协议
容器内按照常规方法用一键脚本或者各种面板安装需要的协议,注意端口号要在映射的端口范围内。
客户端连接,即可实现 Google 长视频无广告。
好贴
技术活
@huai #4
也许有人需要。你用不到的话可以关闭这个标签。
好帖收藏
@niubility #5 不明白 为什么要多加个 incus
有什么作用吗
有意思,不过我选择浏览器拦截。。支持一下
感谢对我很有用
直接分流不行吗?