<H1>软路由WebRTC加速:TURN服务器STUN部署全攻略,顺带聊聊代理ip那点事儿</H1>
<H2>为什么WebRTC在软路由上总卡?先别急着换硬件</H2>
很多小伙伴把OpenWrt、iStoreOS刷进J4125小主机后,兴冲冲跑WebRTC——结果Zoom开会依旧马赛克,Moonlight串流还是幻灯片。问题八成出在NAT打洞失败,浏览器回退到「中继模式」后,找不到靠谱的TURN/中继服务器。自己搭一个,延迟立刻从300 ms掉到30 ms,还省得把流量送给第三方大厂。
<H2>STUN vs TURN:一句话分清俩兄弟</H2>
STUN只管“打听”公网IP+端口,打洞成功就P2P直连,零成本;TURN是“备胎”,洞打不通时由它转发所有音视频数据,按流量计费。家庭宽带多数对称型NAT,STUN经常跪,所以TURN必须安排上。俩服务可以装在同一台小鸡,端口不同,互不影响。
<H2>10分钟搭好coTURN:OpenWrt也能跑</H2>
1 先装Erlang环境——别慌,OpenWrt官方仓库里搜erlang
,点一下就行。
2 opkg update && opkg install coturn
一步到位。
3 改配置文件/etc/turnserver.conf
,核心就5行:
listening-port=3478
relay-ip=你的软路由LAN口IP
external-ip=你的公网IP(动态DDNS也行)
user=webrtc:自定义密码
realm=你的域名(没有就填IP)
4 防火墙放行TCP/UDP 3478,外加49152-65535中继端口段。
5 /etc/init.d/coturn enable && /etc/init.d/coturn start
浏览器打开chrome://webrtc-internals,看candidate
有没有relay
字样,有就代表成功,全程不到600 kB内存,J4125毫无压力。
<H2>免费STUN白嫖清单,顺带提一嘴“干净代理ip”</H2>
不想自己维护,可以白嫖Google、Twilio、Meta的STUN,地址分别是stun.l.google.com:19302、stun:stun.twilio.com:3478,延迟50 ms以内。但TURN就别白嫖了,别人限速1 Gb/天,视频会议一开就爆。这时你可以把TURN装在国内轻量云,再配一条“干净代理IP”隧道,让海外用户先连代理IP,再走TURN回国,延迟能再降20 ms,还能躲QoE丢包。选代理IP记得要“住宅ISP、UDP支持、原生IP段”,别贪便宜买机房广播段,WebRTC识别到会直接标成“proxy”,Zoom直接降画质。
<H2>一键脚本:把TURN装进Docker,搬家不头疼</H2>
怕软路由重装?Docker版coTURN两行命令: docker run -d --name turn -p 3478:3478 -p 49152-65535:49152-65535/udp -e DETECT_EXTERNAL_IP=yes -e USERNAME=webrtc -e PASSWORD=自定义密码 docker.io/coturn/coturn
数据卷映射出来,备份只拷一个文件夹,换机30秒搞定。
<H2>常见翻车点:防火墙、IPv6、证书</H2>
1 光猫侧IPv6没关,TURN拿到v6地址,但客户端网络不支持v6,直接超时——关!
2 3478只放行TCP,没放UDP,Chrome优先UDP,秒跪——双栈全开。
3 想给TURN加TLS,letsencrypt证书却写错realm
,WebRTC校验不通过——域名、证书、realm三统一。
<H2>软路由+TURN+代理IP:远程串流也能4K60</H2>
把TURN装在软路由里,Moonlight Sunshine走TURN中继,再配一条香港住宅代理ip,Switch躺床上玩PC的2077,延迟38 ms,码率50 Mb不掉帧。朋友来家里做客,手机扫码就能加入,P2P打洞失败也能自动切中继,妈妈再也不担心我折腾端口映射。
<H2>写在最后的小贴士</H2>
1 动态公网IP用DDNS,cloudflare-api脚本5分钟更新一次。
2 多人会议记得给TURN限带宽,bps-cap=50000000
防止小鸡被打爆。
3 每月重启一次coTURN,防止内存碎片。
4 真·零预算方案:把旧安卓机插上电,termux里跑turnutils,一样能中继,就是热点别关。
采购代理IP请添加微信客户经理:x31471626
评论0