昨天想和朋友一起开 zoom 屏幕共享追剧,然后登陆 zoom 的时候发现提示 "error code 1044",这个是 Zoom 对于免费用户在大陆地区登陆时的限制,再三确认分流规则没问题后,我想到会不会是由于出口 IP 有问题。
分析
我作为网络出口的服务器上有两张绑定了外部 IP 地址的网卡, eth0
和 eth1
分别对应 ipv4 和 ipv6,ipv4 出口是美国的家宽,ipv6 ASN 注册在中国大陆,但是因为宣告在美国所以 Google 在内的大部分 GeoIP 都会认为这个 IP 是美国的,zoom 的 GeoIP 服务商不知道为什么这个月突然把这个 IP 重新标注回了中国。
随后我 down 掉了 eth1 ( ifdown eth1
),然后打开 zoom,就可以正常登陆了。
解决
我没找到 v2ray 这类软件的服务端如何对一个网站或 GeoSite 做指定 IP 地址的分流,但是在文档中找到了对网站指定 IPv4 和 IPv6 的方法,完整配置文件如下。
如果你使用的官方脚本,或你使用的第三方脚本配置文件地址和官方脚本相同,那么配置文件位于
/usr/local/etc/v2ray/config.json
可以使用 cat /usr/local/etc/v2ray/config.json 查看文件内容,使用 vi /usr/local/etc/v2ray/config.json 更改文件内容,更改后
ESC
:
wq
回车保存退出
{
"inbounds": [{
"port": 11111, //此处为安装时生成的端口,可修改随意,但是保证和下面提到的端口号相同
"listen":"127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "*****", //此处为安装时生成的id
"level": 1,
"alterId": ** //此处为安装时生成的alterId
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/************" //此处为路径
}
}
}],
"outbounds": [
{
"tag":"IP4_out", //IPv4出口的标签
"protocol": "freedom",
"settings": {
"domainStrategy": "UseIPv4" //出口策略
}
},
{
"tag":"IP6_out", //IPv6出口的标签
"protocol": "freedom",
"settings": {
"domainStrategy": "UseIPv6" //出口策略
}
}
],
"routing": {
"rules": [
{
"type": "field",
"outboundTag": "IP4_out",
"domain": ["geosite:netflix","geosite:zoom","geosite:paypal"]
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
},
{
"type": "field",
"outboundTag": "IP4_out",
"network": "udp,tcp"
}
]
}
}
随后重启 v2ray
systemctl restart v2ray
需要注意的是,如果 routing (路由) 策略里面包含多个网站,必须使用 "geosite:1","geosite:2"
的写法,不可 "geosite:1,2"
;如果你的服务端没有 GeoSite 配置的话这个策略无法被识别也会导致无法启动,遇到这种情况需要输入以下内容更新 GeoIP 和 GeoSite,然后重启 v2ray
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh)
systemctl restart v2ray
进阶玩法
有一些进阶玩法,例如使用 WARP 解锁 Netflix 非自制剧,如果你只配置了单栈网络的话也可以使用这个方法配置让 geosite:netflix
走你配置网络的出口,下面是脚本,来自 P3TERX。
该脚本使用的 git.io 可能无法在纯 ipv6 服务器上打开,可以在电脑上打开该地址下载后使用 SFTP 上传到服务器
添加 WARP WireGuard 双栈全局网络
bash <(curl -fsSL git.io/warp.sh) d
添加或更改 IPv4/IPv6 网络中的一个出口走 WARP WireGuard 网络
bash <(curl -fsSL git.io/warp.sh) 4
bash <(curl -fsSL git.io/warp.sh) 6
然后在 v2ray 配置文件中更改以下字段后重启即可
"rules": [
{
"type": "field",
"outboundTag": "IP*_out", //替换为你自己选择的网络,并且移除本行双斜线注释后方全部内容,含双斜线
"domain": ["geosite:netflix"]
},