Clash需启用UDP代理转发并配置tun.udp: true,Chrome需启用chrome://flags/#enable-webrtc-hide-local-ips-with-mdns,系统需确保UDP流量经TUN网卡重定向,最后通过browserleaks.com/webrtc验证SDP无host候选且UDP连接均走Clash-TUN。

如果您在使用谷歌浏览器时发现Clash等代理工具无法拦截WebRTC的UDP流量,导致真实IP地址仍可能通过候选地址泄露,则问题很可能源于浏览器未启用UDP代理转发或WebRTC未正确隐藏本地IP。以下是解决此问题的步骤:
一、启用Clash配置中的UDP代理转发
UDP协议是WebRTC建立媒体连接的关键传输层,若代理未开启UDP支持,所有STUN/TURN探测及候选地址交换将绕过代理直接走系统原生网络栈,造成IP泄露。必须确保Clash核心配置显式启用UDP转发功能。
1、打开Clash配置文件(通常为config.yaml),定位到tun模块配置段。
2、确认tun.enable字段值为true。
3、在tun节点下添加或修改udp: true参数。
4、确保dns-hijack包含'any:53'以覆盖DNS查询路径。
5、保存配置文件后,重启Clash核心进程使变更生效。
二、强制启用Chrome内置WebRTC本地IP隐藏机制
Chrome自版本90起引入mDNS替代传统host候选地址暴露,通过启用该标志可使WebRTC仅报告虚拟mDNS主机名而非真实局域网IP,从而阻断内网拓扑探测。该设置直接影响SDP中candidate字段生成逻辑。
1、在Chrome地址栏输入chrome://flags/#enable-webrtc-hide-local-ips-with-mdns并回车。
2、在页面顶部搜索框中确认该实验性选项已加载显示。
3、点击右侧下拉菜单,将状态由Default改为Enabled。
4、点击页面右下角的“Relaunch”按钮强制重启浏览器。
三、通过系统级代理设置补全UDP流量捕获
Chrome自身不提供独立UDP代理开关,其网络栈依赖操作系统底层socket行为。当使用TUN模式代理时,需确保系统网络栈将UDP流量完整重定向至Clash虚拟网卡,否则WebRTC仍将使用原始网卡发送STUN绑定请求。
1、在Windows系统中,以管理员身份运行PowerShell。
2、执行命令:netsh interface ipv4 set subinterface "Clash TUN" mtu=1500 store=persistent(将"Clash TUN"替换为实际虚拟网卡名称)。
3、执行命令:netsh advfirewall firewall add rule name="Clash UDP Forward" dir=in action=allow protocol=UDP enable=yes。
4、在macOS上,确认Clash配置中tun.stack设为system,并执行sudo sysctl -w net.inet.ip.forwarding=1。
四、验证UDP代理与WebRTC隐藏是否协同生效
单一环节生效不代表整体防护成立,必须同步验证UDP流量是否经代理隧道、且WebRTC SDP中不再出现host类型候选地址。检测需在无扩展干扰的干净环境中进行。
1、启动Clash并确认系统代理状态为“已启用”,TUN模式状态灯为绿色。
2、打开Chrome新隐身窗口,访问https://browserleaks.com/webrtc。
3、等待页面完成全部检测,重点查看“Your local IP addresses are”区域是否为空或仅显示mDNS格式名称(如“a1b2c3d4.local”)。
4、打开开发者工具(F12),切换到Network标签页,筛选protocol为UDP,检查是否存在未标记为“Clash-TUN”的原始UDP连接记录。



















