给 VPS 换一个美国家庭 IP:Xray + VLESS + REALITY + Webshare 静态住宅 IP 教程
大家好!

我折腾链式代理和美国静态住宅 IP,起因是用 Claude。
我现在写代码基本离不开 Claude 和 Claude Code。一开始用的就是自己的独立 VPS,IP 固定,也只有我一个人用,本以为这样就够了。
问题出在 VPS 的 IP 是机房 IP,纯净度不够。一查就知道属于某家云服务商,同一段 IP 里不知道还有多少人在用,IP 风控值也偏高。Claude 对登录环境比较敏感,用这样的 IP 总是提心吊胆。
所以我想给自己弄一个固定的、美国家庭宽带的 IP。最后的方案是:
VPS 上跑 Xray,用 VLESS + REALITY 连接,出站再套一层 Webshare 的美国静态住宅 IP。
跑通以后,访问网站时对方看到的是一个美国本地运营商的家庭 IP,而且每天都是同一个。同样的思路,也适合登录 Google Ads、Stripe 这类对 IP 比较敏感的海外后台。
这篇把完整过程记录下来,顺便把我踩过的坑也写上。
机房 IP 和住宅 IP 有什么区别

简单说:
- 机房 IP:来自数据中心,VPS、云服务器用的都是这种。网站很容易查到这个 IP 属于某家云服务商,同一个 IP 段里有很多人在用
- 住宅 IP:来自 AT&T、Comcast 这类运营商,原本是分配给普通家庭宽带用的。在网站看来,就是一个普通人在家上网
住宅 IP 又分两种:
- 动态住宅:每次请求或者每隔一段时间换一个 IP,适合爬虫,不适合登录账号
- 静态住宅:IP 固定不变,适合长期登录同一批账号
我要的是“每天都是同一个美国家庭 IP”,所以选的是静态住宅。
整体思路

流量是这么走的:
我的电脑 -> VPS(Xray)-> 美国住宅 IP -> 目标网站
- 我的电脑到 VPS:用 VLESS + REALITY,加密并且伪装成正常访问某个大网站的 TLS 流量
- VPS 到住宅 IP:Xray 的出站用 SOCKS5 连到 Webshare
- 住宅 IP 到网站:网站最终看到的是 Webshare 分配给我的美国住宅 IP
可能有人会问:为什么不在电脑上直接连 Webshare 的 SOCKS5?
因为 SOCKS5 本身不加密,从国内直连海外的 SOCKS5,基本连不稳。中间加一台 VPS 用 REALITY 中转,前半段稳定,最后一跳才走住宅 IP,两边的优点都用上了。
准备工作
- 一台 VPS:我用的是 Ubuntu 22,需要 root 权限,443 端口没有被其他服务占用。机房在美国西海岸或者日本都可以,链路越短越好
- 一个 Webshare 账号:用来买美国静态住宅 IP
- 客户端:Windows 用 v2rayN,安卓用 v2rayNG,苹果用 Shadowrocket
Xray: https://github.com/XTLS/Xray-core
Webshare: https://www.webshare.io
购买 Webshare 静态住宅 IP
购买时选 Static Residential(静态住宅),国家选美国。静态住宅 IP 是订阅制,按月付费。
这里有个选择:
- Private:IP 可能和少数其他用户共享,更便宜
- Dedicated:IP 只给你一个人用,3.5 美元起,具体以官网为准
我自己主要是用 Claude 和日常浏览,买的是 Dedicated。如果套餐里有多个 IP,可以挑一个质量最好的固定使用,剩下的当备用。
买完之后,在后台的 Proxy List 里能看到每个 IP 的:
- 代理地址(IP)
- 端口
- 用户名
- 密码
认证方式默认是用户名和密码。也可以改成 IP 授权,把 VPS 的 IP 加进白名单,这样就不用填用户名密码了。
先在 VPS 上测一下这个 IP
先别急着装 Xray,在 VPS 上用 curl 测一下 Webshare 的 IP 能不能用:
1 | curl -x socks5h://用户名:密码@代理地址:端口 https://ipinfo.io/json |
注意是 socks5h,多了一个 h,意思是域名也交给代理去解析,这样 DNS 请求也会从美国出去。
正常的话会返回一段 JSON,重点看这几个字段:
ip:应该是 Webshare 的 IP,而不是 VPS 的 IPcountry:USorg:一般是 AT&T、Comcast、Cox 这类美国运营商,而不是某某云
如果这一步就不通,后面配置再多也没用,先回 Webshare 后台检查用户名、密码和认证方式。
安装 Xray
使用官方脚本安装:
1 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install |
装完以后:
- 配置文件在
/usr/local/etc/xray/config.json - 服务名是
xray,用 systemd 管理
看一下版本,确认装好了:
1 | xray version |
生成配置需要的参数
一共需要 4 个东西,先生成好,记在本子上:
1. UUID,相当于用户的密码:
1 | xray uuid |
2. REALITY 密钥对:
1 | xray x25519 |
这里要注意,新旧版本输出的字段名不一样:
- 新版本输出
PrivateKey和Password,Password就是公钥 - 旧版本输出
Private key和Public key
私钥填在服务端,公钥填在客户端,千万别搞反。
3. shortId,一串 16 进制字符串:
1 | openssl rand -hex 8 |
4. 伪装网站(target)
REALITY 会把自己伪装成在访问一个真实的网站。选这个网站有几个要求:
- 国外的网站,支持 TLS 1.3 和 HTTP/2
- 访问时不会跳转到别的域名
- 最好和 VPS 在同一个地区,延迟低
本文用 www.microsoft.com 举例,你也可以换成别的。可以用 Xray 自带的命令测一下:
1 | xray tls ping www.microsoft.com |
编写服务端配置
编辑 /usr/local/etc/xray/config.json,把 {} 里的内容换成你自己的:
1 | { |
配置看着长,其实就是三块:入站、路由、出站。

几个地方解释一下:
- inbounds:VLESS + REALITY 入站,
flow用xtls-rprx-vision,客户端也要填一样的 - target:伪装网站,旧版本的 Xray 里这个字段叫
dest,如果启动报错可以改成dest试试,或者直接升级 Xray - outbounds 的 socks:这就是出站到 Webshare 的配置。如果 Webshare 用的是 IP 授权,
user和pass可以删掉 - 路由规则,从上往下匹配:
- 第一条:屏蔽 UDP 443,也就是 QUIC。Webshare 的 SOCKS5 不支持 UDP,不屏蔽的话,浏览器会先尝试 QUIC,失败了才退回 TCP,表现就是有些网站第一次打开特别慢
- 第二条:屏蔽访问内网地址,防止别人通过你的节点访问 VPS 所在的内网
- 第三条:其他所有流量都走 Webshare
保存之后,先检查一下配置有没有写错:
1 | xray run -test -config /usr/local/etc/xray/config.json |
没问题就启动,并设置开机自启:
1 | systemctl restart xray |
最后记得放行 443 端口。如果用的是 ufw:
1 | ufw allow 443/tcp |
有些云服务商还有一层“安全组”,要去网页后台也放行一下。
配置客户端
客户端需要填的字段,和服务端是一一对应的,其中最容易出错的是密钥:

| 客户端字段 | 填什么 |
|---|---|
| 地址 | VPS 的 IP |
| 端口 | 443 |
| UUID | 第一步生成的 UUID |
| 流控(flow) | xtls-rprx-vision |
| 传输协议 | tcp |
| 传输层安全 | reality |
| SNI | www.microsoft.com |
| Fingerprint | chrome |
| PublicKey | xray x25519 生成的公钥(新版本的 Password) |
| ShortId | 生成的 shortId |
懒得一个个填的话,可以拼一个分享链接,直接导入客户端:
1 | vless://{UUID}@{VPS IP}:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.microsoft.com&fp=chrome&pbk={公钥}&sid={shortId}&type=tcp#US-Home |
# 后面是节点名称,随便起。
检查一下是不是真的“住在美国”
连上节点以后,打开这几个网站看一下:
- ipinfo.io:IP 是不是 Webshare 的,
org是不是美国运营商 - ping0.cc:中文网站,能看到 IP 类型是“家庭宽带”还是“IDC 机房”,还有风控值
- browserleaks.com/webrtc:检查 WebRTC 有没有暴露真实 IP
- ipleak.net:检查 DNS 是不是也从美国出去
前两个没问题,说明链路通了。但是想让自己看起来更像一个“在美国的普通用户”,还有几个细节:
- WebRTC 泄露:浏览器的 WebRTC 走的是 UDP,会绕过系统代理暴露你的真实 IP。可以装个禁用 WebRTC 的插件,或者在客户端开启 TUN 模式(虚拟网卡)。注意客户端的“全局模式”一般只是设置了系统代理,防不住 WebRTC
- 时区和语言:IP 在美国,浏览器时区却是北京时间、语言是中文,网站也能看出来。如果是专门用来登录海外账号的浏览器,可以单独建一个浏览器配置,时区和语言都改成美国的
- IP 质量不满意:不同 IP 的质量差别很大,如果查出来是机房 IP 或者风控值很高,可以换另一个,Webshare 后台也有替换 IP 的功能
我踩过的坑
遇到问题先按这张图排查一遍,大部分问题都在这几个地方:

客户端连不上
按这个顺序检查:
- VPS 的 443 端口放行了没有,安全组也要看
- 客户端和服务端的 UUID、flow、SNI 是否一致
- 公钥和私钥有没有填反,客户端填的必须是公钥
- shortId 有没有填错
看服务端日志能快速定位问题:
1 | journalctl -u xray -f |
能连上,但网页打不开
大概率是 Webshare 那一跳出了问题。回到 VPS 上,用前面的 curl 命令再测一次。常见原因是用户名密码填错了,或者用的是 IP 授权但忘了把 VPS 的 IP 加进白名单。
浏览器能用,终端里的 Claude Code 却没走代理
客户端开的系统代理,只对浏览器这类遵守系统代理设置的程序生效,终端里的命令行工具默认是不走的。浏览器里 Claude 正常,不代表终端里的 Claude Code 也走了住宅 IP。
Claude Code 支持 HTTPS_PROXY 环境变量,在终端里设置一下,端口在客户端的设置里能看到:
1 | export HTTPS_PROXY=http://127.0.0.1:{客户端的本地 HTTP 端口} |
设置完在同一个终端里测一下,返回的应该是 Webshare 的 IP:
1 | curl https://ipinfo.io/json |
想一劳永逸的话,也可以直接在客户端开启 TUN 模式,所有程序的流量都会走代理。
有些网站打开比较慢
我现在是所有流量都走链式代理 + 住宅 IP,日常写代码、用 Claude、浏览网页都够用。
但要有心理预期:流量要先到 VPS,再到住宅 IP,延迟会比直连 VPS 多一段。如果某些网站第一次打开特别慢,先确认路由规则里屏蔽 QUIC 的那一条有没有生效。
游戏、语音通话用不了
还是因为 Webshare 不支持 UDP。如果确实需要,可以在路由规则里加一条,让 UDP 走 direct,放在“屏蔽内网地址”和“其他流量走 Webshare”这两条之间:
1 | { |
第一条屏蔽 UDP 443 的规则要保留,不然 QUIC 又会绕过住宅 IP。另外要注意,走 direct 的这部分 UDP 流量,用的就是 VPS 自己的机房 IP 了。
成本
- VPS:几美元一个月,看你选的服务商
- Webshare 静态住宅(Dedicated):订阅制,3.5 美元一个月起
对我来说,每个月多花几美元,换来的是用 Claude 时不用再提心吊胆,还是挺值的。
总结
最后放一张全文的思维导图,方便收藏:

整个方案其实就三层:REALITY 负责把流量安全地送到 VPS,Xray 负责转发,Webshare 负责提供一个固定的美国家庭 IP。
配置不复杂,最容易出错的是密钥填反、端口没放行和 UDP 这三个地方,照着上面的步骤检查基本都能解决。
本文仅用于技术学习和交流,请遵守当地法律法规和各网站的服务条款。如果你有更好的住宅 IP 服务商或者配置方案,欢迎留言一起交流。