利用 DNS 分流与 SNI 代理一键解锁 Claude / ChatGPT / Gemini

在部署跨国业务或搭建个人服务时,我们经常会购买香港或特定区域的 VPS(虚拟专用服务器)。然而,在使用这些 VPS 访问主流 AI 服务(如 Claude、ChatGPT、Gemini)时,经常会弹出类似的报错提示:

  • Claude / Anthropic: App unavailable in your region
  • ChatGPT / OpenAI: Not available in your country
  • Gemini / Google AI: Gemini 目前不支持你所在的地区。敬请期待!

这是因为这些 AI 平台的 CDN(如 Cloudflare 或 Google 基础设施)会严格检测请求的出口 IP。一旦发现 IP 属于不受支持的区域(例如香港节点),就会直接阻断访问。

为了解决这个问题,本文将带你通过“DNS 分流 + SNI 透明代理”的轻量级方案,将 AI 流量精准引导至支持的地区节点(如日本地区)转发,而普通流量依然走本地。无需全局挂载 VPN,既不影响本地网络速度,又能实现全局完美解锁。


💡 解锁原理浅析(看懂这图就懂了)

我们在方案中准备两台机器:

  1. 入口节点(如:香港 VPS HK:你平时主要使用的服务器,负责接收你的请求,并运行 AdGuard Home 进行域名识别。
  2. 解锁节点(如:日本 VPS Japan:位于 AI 服务支持地区的服务器,负责接收香港转过来的 DNS 与 HTTPS 请求,并代为向 Cloudflare/Google 发起访问。

📌 整体流量走向图

[你的客户端 / 香港 VPS]
       │
       ▼ (1. 识别访问域名)
[AdGuard Home (香港)] 
       │
       ├─────────────────────────────────┐
       │ (常规域名)                      │ (AI 专有域名)
       ▼                                 ▼
[本地服务商 DNS]                  [日本 SNI 代理服务器 (端口 443)]
       │                                 │
       ▼                                 ▼
[正常公网访问]                   [Cloudflare / Google 日本 Edge 节点]
                                         │
                                         ▼ (2. 识别为日本 IP,顺利通过检测)
                                   [AI 服务解锁成功!]

🛠️ 第一部分:在【解锁端机器(日本 VPS)】部署服务

在支持 AI 服务的机器上,我们需要部署两个极为轻量的 Docker 容器:

  1. Unbound DNS 容器:提供跨国 DNS 解析服务(监听 5353 端口)。
  2. Nginx SNI 代理容器:在 TCP 443 层透传 TLS 握手流量,实现无证书解密的高效转发。

⚠️ 注意:请提前在云服务商面板(如 Azure NSG / AWS Security Group / 防火墙)中放行 UDP 5353TCP 5353TCP 443 端口。

1. 部署 Unbound DNS 服务

日本 VPS 终端中,直接复制并运行以下命令:

# 1. 创建配置文件保存目录
mkdir -p /root/unbound

# 2. 写入 Unbound 配置文件
cat <<EOF> /root/unbound/unbound.conf
server:
    interface: 0.0.0.0@5353
    access-control: 0.0.0.0/0 allow
    verbosity: 1
    do-ip4: yes
    do-udp: yes
    do-tcp: yes
forward-zone:
    name: "."
    forward-addr: 1.1.1.1
    forward-addr: 8.8.8.8
EOF

# 3. 采用 Host 网络模式启动 Unbound(彻底规避 Docker Bridge 导致的跨国 UDP 丢包)
docker run -d \
  --name japan-dns \
  --restart always \
  --net=host \
  -v /root/unbound/unbound.conf:/opt/unbound/etc/unbound/unbound.conf \
  mvance/unbound:latest

2. 部署 Nginx SNI 透明代理

日本 VPS 终端中,直接复制并运行以下命令:

# 1. 创建 Nginx 配置文件保存目录
mkdir -p /root/sniproxy

# 2. 写入 Nginx Stream (SNI 盲转发) 配置文件
cat <<'EOF' > /root/sniproxy/nginx.conf
events {
    worker_connections 1024;
}

stream {
    resolver 1.1.1.1 8.8.8.8 valid=300s;
    resolver_timeout 5s;

    server {
        listen 443;
        ssl_preread on;
        proxy_pass $ssl_preread_server_name:443;
        proxy_connect_timeout 5s;
    }
}
EOF

# 3. 启动 Nginx SNI 代理容器
docker run -d \
  --name sni-proxy \
  --restart always \
  --net=host \
  -v /root/sniproxy/nginx.conf:/etc/nginx/nginx.conf:ro \
  nginx:alpine

🛠️ 第二部分:在【入口端机器(香港 VPS)】配置 AdGuard Home

在香港 VPS 上,我们使用 AdGuard Home 来充当“交通警察”:把 AI 域名的 DNS 请求解析与 HTTPS 流量精准重写指向日本机器,同时保持其他公网与内网域名的正常访问。

1. 设置上游 DNS 服务器 (Upstream DNS)

登录 AdGuard Home 后台设置 (Settings)DNS 设置 (DNS settings)

上游 DNS 服务器 (Upstream DNS servers) 输入框中,清空原有内容,将以下规则粘贴进去:

💡 提示:请将下文中的 xx.xx.xx.xx 替换为你自己的【日本 VPS 公网 IP】;将 172.16.36.100 替换为你当前 VPS 云厂商自带的内网 DNS。_

[/claude.ai/]xx.xx.xx.xx:5353
[/anthropic.com/]xx.xx.xx.xx:5353
[/openai.com/]xx.xx.xx.xx:5353
[/chatgpt.com/]xx.xx.xx.xx:5353
[/oaistatic.com/]xx.xx.xx.xx:5353
[/oaiusercontent.com/]xx.xx.xx.xx:5353
[/gemini.google.com/]xx.xx.xx.xx:5353
[/bard.google.com/]xx.xx.xx.xx:5353
[/alkalimaker-pa.googleapis.com/]xx.xx.xx.xx:5353
[/generativelanguage.googleapis.com/]xx.xx.xx.xx:5353
[/x.ai/]xx.xx.xx.xx:5353
[/grok.com/]xx.xx.xx.xx:5353
172.16.36.100
172.16.36.101
1.1.1.1
8.8.8.8

粘贴完成后,点击页面下方的 保存 (Save)

2. 配置 DNS 重定向 (DNS Rewrites)

通过重写 DNS 记录,强行将 AI 域名的 HTTPS 请求(Port 443)引流至日本 Nginx SNI 代理容器。

进入 AdGuard Home 过滤器 (Filters)DNS 重定向 (DNS Rewrites) 页面,点击 添加 DNS 重写,依次添加以下条目:

匹配域名 (Domain) 应答 IP (Answer IP) 说明
claude.ai xx.xx.xx.xx Claude 官网
*.claude.ai xx.xx.xx.xx Claude 子域名
*.anthropic.com xx.xx.xx.xx Anthropic 接口
chatgpt.com xx.xx.xx.xx ChatGPT 官网
*.chatgpt.com xx.xx.xx.xx ChatGPT 子域名
openai.com xx.xx.xx.xx OpenAI 官网
*.openai.com xx.xx.xx.xx OpenAI 接口
gemini.google.com xx.xx.xx.xx Gemini 官网
bard.google.com xx.xx.xx.xx Google Bard 备用域名
*.googleapis.com xx.xx.xx.xx Google AI 后台接口
x.ai xx.xx.xx.xx xAI 官网 / Grok API
*.x.ai xx.xx.xx.xx xAI 子域名 / API
grok.com xx.xx.xx.xx Grok 独立 Web 官网
*.grok.com xx.xx.xx.xx Grok 网页版子域名

3. 添加自定义过滤规则 (屏蔽 IPv6)

许多云服务器和本地网络默认启用了 IPv6。为了防止流量“偷跑”走 IPv6 直连而绕过 IPv4 代理,我们需要在 AdGuard Home 中将这些 AI 域名的 IPv6 (AAAA) 解析直接禁用,强制降级走 IPv4 代理

进入 AdGuard Home 过滤器 (Filters)自定义过滤规则 (Custom filtering rules),粘贴以下规则并保存:

! 1. Claude 屏蔽 IPv6
||claude.ai^$dnsrewrite=NOERROR;AAAA;
||anthropic.com^$dnsrewrite=NOERROR;AAAA;

! 2. ChatGPT / OpenAI 屏蔽 IPv6
||openai.com^$dnsrewrite=NOERROR;AAAA;
||chatgpt.com^$dnsrewrite=NOERROR;AAAA;
||oaistatic.com^$dnsrewrite=NOERROR;AAAA;
||oaiusercontent.com^$dnsrewrite=NOERROR;AAAA;

! 3. Gemini / Google AI 屏蔽 IPv6
||gemini.google.com^$dnsrewrite=NOERROR;AAAA;
||bard.google.com^$dnsrewrite=NOERROR;AAAA;
||alkalimaker-pa.googleapis.com^$dnsrewrite=NOERROR;AAAA;
||generativelanguage.googleapis.com^$dnsrewrite=NOERROR;AAAA;

! 4. Grok / xAI 屏蔽 IPv6
||x.ai^$dnsrewrite=NOERROR;AAAA;
||grok.com^$dnsrewrite=NOERROR;AAAA;

🧪 最终效果验证

全部配置完毕后,我们可以在 香港 VPS 终端里验证分流与代理是否生效:

1. 验证 Claude 连接

curl -I [https://claude.ai](https://claude.ai)

预期结果

  • 响应头中出现 cf-ray: xxxxxxxx-NRT(其中 NRT 代表流量已成功从 东京 节点接入 Cloudflare)。
  • 响应头中不再出现 location: .../app-unavailable-in-region 跳转。

2. 浏览器实际体验

在配置了该 AdGuard Home 作为 DNS 的电脑或浏览器上,打开 https://gemini.google.comhttps://claude.ai

  1. 首次打开时可能会遇到 Cloudflare 的 5 秒盾(人机验证 Challenge),这是正常现象,点击通过即可。
  2. 验证完成后,即可顺利看到登录与对话界面,阻断提示彻底消失!

3. 流媒体 & AI 服务解锁一键全量检测脚本

如果你想全面检测服务器当前对 ChatGPT / Claude / Gemini / Netflix / Disney+ / YouTube Premium 等各大 AI 与流媒体服务的区域解锁状态,可以在服务器终端直接运行以下开源检测脚本:

# 运行通用流媒体与 AI 解锁检测脚本
bash <(curl -L -s https://raw.githubusercontent.com/lmc999/RegionRestrictionCheck/main/check.sh)

📝 总结

通过这套组合拳:

  • 不修改系统路由表:不需要在服务器上配置复杂的 VPN 或 iptables 转发。
  • 资源占用极低:日本端仅运行精简版的 Unbound 与 Nginx 镜像,内存占用不到 50MB。
  • 精确打击:仅对 Claude、OpenAI、Gemini 等敏感 AI 域名做代理转发,其余所有流量均保持原路线直连,做到了无感、高效的完美解锁。