关于ios端chatGPT语音对话不能准确及时的连接的原因及如何改进 #3200
Jasonzhang2023
started this conversation in
General
Replies: 1 comment 7 replies
-
udp3478是stun的端口,你首先要测一下路由器的NAT类型,其次vmess无法实现真正的fullcone,另外你的代理是redirect还是tproxy?只有tproxy才能代理udp,你xray分流默认是走的直连吗?如果是,没在代理列表的就会走直连 |
Beta Was this translation helpful? Give feedback.
7 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
前提及基本环境:
1、使用openwrt软路由esir高大全,x86架构,内核5.15;
2、passwall4.6开始,每一个版本都迭代安装,现在用的是最新的4.77-5;
3、使用的是中国列表外,DNS解析是路由器自带的MOSdns分流+smartdns+adguardhome,用了1年没问题,也没有dns泄露;
4、xray版本1.8.11(服务器也是1.8.11版本),vmess+ws+tls;
5、流量嗅探是打开的
6、用xray分流+haproxy负载均衡(每个passwall版本的sing-box用不了,不知道原因),其中加了openai的分流规则,走的是美国的落地解锁机器(因为geosite:openai不全,我还添加了一些domain,应该也是是不全的
openai的分流规则如下,走的是能原生解锁chatGPT的节点:
发现的问题:
1、如果使用软路由透明代理局域网的ios手机,ipad或者安卓手机,chatGPT4.0的语音对话,会经常连不上,要多试几次才能连接上。
原因分析:
语音对话,我看走的都是udp接口,联想到自己用的几个走udp的语音程序:
A.googlevoice,确实是走udp接口,而且走的几个域名和ip都是固定的,因此它的分流规则如下,很好固定:
B. T-mobile(Ultra mobile)的wifi calling,它也是固定的,分流规则很好固定下来:
其中208.54.0.0:500端口负责探测通讯是否畅通,208.54.0.0:4500端口负责承载通讯语音数据
chatGPT是实时语音,因此我就断定它也是走的UDP
先看一下手机5G环境下,使用小火箭全局代理,打开ios chatGPT的语音对话,对话非常的流畅。
这时候服务器的xray日志:
可以看到有这些日志,我来大概做个解释和猜想:
1、低位端口3478和7881负责探测通讯是否畅通;
2、高位端口5000X是通讯端口,用来承载通讯语音数据。
当然,语音通讯也是可以通过443端口https传输,但效率就比udp要慢
以上是非常流畅的打开chatGPT语音对话聊天的日志情况。
接下来就是有问题的部分,我用手机接入openwrt(走的是xray分流模式,嗅探开启),打开ios chatGPT,打开语音对话。
失败一次后,第二次成功打开了对话窗口并进行了简单的对话,这段时间passwall的日志文件:
root@Home-OpenWrt:~# tail -f /tmp/etc/passwall/acl/default/TCP.log |grep -v '8.8.8.8|1.1.1.1|8.8.4.4':
这段时间服务器xray的日志:
root@zgoLA:~# tail -f v2ray-access.log |grep -v '8.8.8.8|1.1.1.1'
2024/05/15 08:46:59 tcp:固网openwrt的ip:0 accepted tcp:www.google.com:443 [IPv4_out]
2024/05/15 08:47:38 tcp:固网openwrt的ip:0 accepted tcp:193945-ipv4.gr.global.aa-rt.sharepoint.com:443 [IPv4_out]
2024/05/15 08:48:01 tcp:固网openwrt的ip:0 accepted tcp:www.google.com:443 [IPv4_out]
2024/05/15 08:49:02 tcp:固网openwrt的ip:0 accepted tcp:www.google.com:443 [IPv4_out]
2024/05/15 08:50:03 tcp:固网openwrt的ip:0 accepted tcp:www.google.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:chat.openai.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:ab.chatgpt.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:ios.chat.openai.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:ab.chatgpt.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:ios.chat.openai.com:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:o33249.ingest.sentry.io:443 [IPv4_out]
2024/05/15 08:50:14 tcp:固网openwrt的ip:0 accepted tcp:api.revenuecat.com:443 [IPv4_out]
2024/05/15 08:50:15 tcp:固网openwrt的ip:0 accepted tcp:chat.openai.com:443 [IPv4_out]
2024/05/15 08:50:17 tcp:固网openwrt的ip:0 accepted tcp:chatgpt.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:18 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:19 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:19 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:35 tcp:固网openwrt的ip:0 accepted tcp:browser-intake-datadoghq.com:443 [IPv4_out]
2024/05/15 08:50:36 tcp:固网openwrt的ip:0 accepted tcp:chatgpt.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:36 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:37 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:37 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:52 tcp:固网openwrt的ip:0 accepted tcp:chat.openai.com:443 [IPv4_out]
2024/05/15 08:50:52 tcp:固网openwrt的ip:0 accepted tcp:api.revenuecat.com:443 [IPv4_out]
2024/05/15 08:50:53 tcp:固网openwrt的ip:0 accepted tcp:chatgpt.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:54 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:55 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
2024/05/15 08:50:55 tcp:固网openwrt的ip:0 accepted tcp:oashburn1a.turn.livekit.cloud:443 [IPv4_out]
可以看到passwall并没有将所有属于openai的的ip,通过分流规则传递给服务器,而是漏了一些ip(端口是3478),这部分ip没有走分流,而是直接出去了,这就导致语音对话要几次才能连接上。
这些IP的域名应该就是.livekit.cloud或者其他几个openai规则内的域名,但非常奇怪,xray无法嗅探出来,导致分流失效。*
(我没有使用sing-box,因为服务器没有安装,如果passwall中用了singbox服务器不是,双端不一致会有很多问题。实际测试中,连wificalling都打不开)
至此,原因找到了,因为chatGPT一直在更新,而且有的底层用的是其他家的服务(比如livekit),所以它的IP段不确定,因此没法在分流规则内写死IP段,但域名基本上可以锁定。
解决思路:如果能让passwall直接传递域名出来,而不是解析成ip再传递,这样是不是能解决漏ip导致分流失败呢?
或者说,嗅探功能再厉害一点,把所有ip都能嗅探出来?
其他大神是否有遇到类似的问题,欢迎讨论。
Beta Was this translation helpful? Give feedback.
All reactions