1. 背景知识与现象
在选择海外高性价比 VPS(例如 Advin Servers 的 KVM Budget XS 等产品)搭建服务以访问特定区域限制的 API(如 Google Gemini)时,IP 的地理位置(Geolocation)信誉至关重要。
现象描述:
近日在新购入一台标明为美国机房的 VPS 后,发现通过 Ubuntu 24.04 系统上的代理程序访问 Google 服务时,IP 被 Google 识别定位在**俄罗斯(RU)**,导致 Gemini 等核心 AI 服务被硬性拦截,无法使用。
然而,在完全相同的网络下,通过 RDP 登录基于 Windows Server 的环境访问 Gemini,却能准确识别为美国(US)并正常工作。同一台服务器的跨系统“同机不同命”现象,排除了 IP 本身被全面封禁或代理客户端配置错误的可能。
2. 问题分析与定位
针对“同一个代理程序,Windows 显示 US,Ubuntu 显示 RU”的怪异现象,排查过程如下:
- 排除本地环境干扰(DNS/WebRTC 泄露): 确认客户端层面已开启防 DNS 泄露机制,且 RDP 直连测试通过,证明并非本地环境引发的污染。
- OS 层网络栈行为对比(定位): 现代操作系统的底层网络行为存在差异。Ubuntu 24.04 等现代 Linux 发行版在网络协议栈上极其激进,默认优先解析并使用 IPv6(AAAA 记录)进行出站通信。而 Windows Server 在默认配置或特定代理环境下的 IPv6 路由往往不够完整,从而回落(Fallback)使用 IPv4。
- 抓包与出口确认: 进一步确认发现,Ubuntu 环境下的代理向外网(如 Google 边缘节点)发起请求时,实际走的是服务商分配的 IPv6 地址,而 Windows 侧走的是 IPv4 地址。
3. 根本原因:IPv6 段的地理位置污染
廉价 VPS 服务商分配的 IPv6 /64 子网往往具有非常糟糕的“历史信誉”。
大量受限地区(如俄罗斯)的用户曾使用这些低成本机房的 IPv6 地址作为跳板。Google 的风控和地理位置识别系统具有机器学习的“聚类效应”——当大量带有俄语环境特征流量从该 IPv6 段流出时,Google 的 GeoIP 数据库会将整个 IPv6 子网强行标记为“俄罗斯”。
Ubuntu 默认的“IPv6 优先”策略,恰好踩中了这个被严重污染的雷区,导致访问时被识别为 RU;而 Windows 的 IPv4 回落,则幸运地避开了污染,保留了真实物理机房的 US 标签。
4. 解决方案:Netplan 剔除 IPv6 默认网关
直接在内核层完全禁用 IPv6 (disable_ipv6=1) 会导致本地大量依赖 IPv6 协议栈的服务(如 Docker、某些监听 ::1 的内部组件)报错。
最优雅的解决方案是:保留 IPv6 地址用于内部通信,但删除 IPv6 的默认网关,切断其访问外网的路径,强制代理程序的公网出口回落到 IPv4。
在 Ubuntu 24.04 中,网络由 Netplan 接管。根据 IP 获取方式的不同,配置修改如下:
场景 A:静态 IPv6 配置
如果是手动配置的静态 IP,只需在配置中删除或注释掉 IPv6 的默认路由即可。
# 编辑 /etc/netplan/xxxx.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
addresses:
- "2001:db8::1/64" # 保留 IPv6 地址的分配
# 注意:不要配置 gateway6,或者在 routes 中不要写 ::/0 的默认网关
场景 B:DHCPv6 / SLAAC 动态获取
如果 IPv6 是由机房路由器自动下发的,需在配置中增加 accept-ra: false,表示接受地址但不接受路由器广播(Router Advertisements)中的默认网关。
# 编辑 /etc/netplan/xxxx.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: true
# 拒绝接收 IPv6 的路由广播,防止系统自动添加 IPv6 默认网关
accept-ra: false
应用配置
修改完成后,应用 Netplan 配置并重启代理服务:
sudo netplan apply
sudo systemctl restart <your-proxy-service>
5. 验证结果与总结
结果: 执行配置后,系统通过 ip -6 route show 查看,已无 default via ... 的 IPv6 路由。再次通过代理访问 Google,流量成功走 IPv4 出口,地理位置恢复为美国(US),Gemini 等服务恢复正常使用,且本机其余依赖 IPv6 回环地址的服务未受影响。
总结: 在处理云服务器的网络代理与区域识别问题时,不能仅停留在“应用层”与“IP 段检查”。操作系统的默认网络栈行为(特别是 IPv4/IPv6 优先级)往往会造成意想不到的流量偏离。对于被严重污染的廉价机房 IP,通过精准控制操作系统的默认网关路由,实现“保留内网 IPv6,强制外网 IPv4”,是排查和解决 GeoIP 异地漂移问题的一剂良方。