概况:
电信家宽, 有公网 IP (v4 + v6);
Synapse 在群晖的 Docker 上, Matrix 服务通过端口转发的方式暴露在公网 (IPv4, IPv6 则是直接暴露指定的端口).
客户端: Element for Android
连接慢体现在 2 个手机之间. 即使这 2 个手机都用移动数据, A 打给 B, B 以第一时间接听, A 此时知道对方已接, 于是接下来就是漫长的等待, 10 次呼叫大概只有一两次能秒通, 剩下的至少 30 秒甚至 1 分钟, 偶尔会长时间卡在连接中. 不知道为什么.
我以为是没有中继导致的, 于是又在 Docker 上弄了个 coturn, 也按官方的说明文档开放了端口. 然而问题依旧.
开着中继的情况下用以下 2 个网站进行测试:
https://test.voip.librepush.net/
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
我看不懂测试结果, 只能看出来其中一个测试失败了.
诡异的是, 无论用手机测试还是用以上网站测试, cotrun 似乎都有反应, 主要体现在日志上 (用手机的移动数据测试, 日志能打印出手机的 IP 地址).
也试过让域名只保留解析后的 v4 或 v6 地址的其中一种, 也不行.
折腾了大概两三天还是这样, 现在已经没办法了.
附上配置文件:
turnserver.conf
cert=/etc/cert.pem
log-binding
log-file=/etc/turn.log
no-multicast-peers
no-rfc5780
no-sslv3
no-stun-backward-compatibility
no-tcp-relay
no-tlsv1
no-tlsv1_1
no-tlsv1_2
pkey=/etc/pkey.pem
realm=example.com
response-origin-only-with-rfc5780
server-name=example.com
static-auth-secret={B8A60FEC-FB0B-9094-BECF-5D1E8E59153E}
total-quota=1200
use-auth-secret
verbose
homeserver.yaml
turn_uris: [ "turns:example.com?transport=udp", "turns:example.com?transport=tcp" ]
turn_shared_secret: "{B8A60FEC-FB0B-9094-BECF-5D1E8E59153E}"
turn_user_lifetime: 86400000
turn_allow_guests: true
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.