Linux下配置WireGuard用于WebRTC泄漏测试的问题求助
Linux下配置WireGuard用于WebRTC泄漏测试的问题求助
我来帮你拆解一下这个问题的根源,再给你几个可行的解决方案,应该能解决你的困惑:
为什么Windows的配置在Linux上不生效?
咱们先搞清楚核心差异:Windows的WireGuard客户端里的「Block untunneled traffic」开关,本质是kill switch的控制——不勾选时,客户端会保留你原来的默认网关,哪怕配置里的AllowedIPs覆盖了所有IP,系统也会根据路由优先级(原网关的metric通常更低)选择走原网络;但Linux的wg-quick工具是「严格按配置来」的,当你设置AllowedIPs = 0.0.0.0/1, 128.0.0.0/1时,它会把这两个覆盖全IPv4的路由加到系统里,并且把WireGuard接口设为默认路由的下一跳,直接替换掉原来的默认网关,结果就和设0.0.0.0/0一样,所有流量都走隧道,自然看不到WebRTC泄漏了。
针对WebRTC泄漏测试的可行配置方案
方案1:最直接的方式——保留原默认路由
修改你的WireGuard配置文件(比如/etc/wireguard/wg0.conf),关键是告诉wg-quick不要乱改系统路由:
[Interface] PrivateKey = 你的私钥内容 Address = 10.14.0.2/16 DNS = 162.252.x.x, 149.154.x.x # 核心配置:关闭wg-quick的路由自动管理 Table = off [Peer] PublicKey = fJDA+OA6jzQxfRcoHfC27xz7m3C8/590fRjpntzSpGo= AllowedIPs = 10.14.0.0/16 # 只路由WireGuard内网的IP,其他都走原网关 Endpoint = example.com:51820
这样启动WireGuard后,系统默认流量还是走原来的网络,WebRTC会正常暴露你的真实IP,完美满足泄漏测试的需求。如果之后需要让某个特定公网IP走隧道,直接在AllowedIPs里加对应的段就行(比如AllowedIPs = 10.14.0.0/16, 8.8.8.8/32)。
方案2:手动恢复原默认网关(临时测试用)
如果你不想改配置,只是临时测试,可以按以下步骤操作:
- 先记下来原来的默认网关:
输出大概是ip route show defaultdefault via 192.168.xx.xx dev eth0这样的格式,把里面的网关地址和网卡名记下来。 - 用原来的配置启动WireGuard:
wg-quick up wg0 - 把原默认网关加回去,设置更高的优先级(metric值越小优先级越高):
这样系统会优先走原网关,WebRTC就能泄漏真实IP了;如果需要走隧道的流量,也能正常通过WireGuard。ip route add default via 192.168.xx.xx dev eth0 metric 100
方案3:策略路由——让特定进程/用户走隧道(进阶测试)
如果你想对比测试“浏览器走隧道”和“浏览器不走隧道”的WebRTC差异,可以用策略路由:
- 修改WireGuard配置,指定单独的路由表:
[Interface] PrivateKey = 你的私钥内容 Address = 10.14.0.2/16 DNS = 162.252.x.x, 149.154.x.x Table = 100 # 用编号100的路由表 [Peer] PublicKey = fJDA+OA6jzQxfRcoHfC27xz7m3C8/590fRjpntzSpGo= AllowedIPs = 0.0.0.0/0 # 所有流量走这个路由表 Endpoint = example.com:51820 - 添加规则,让特定用户的进程使用这个路由表(比如你的用户UID是1000):
ip rule add uidrange 1000-1000 table 100 - 启动WireGuard后,用该用户运行的浏览器会走隧道(WebRTC显示隧道IP),其他用户的浏览器会走原网络(WebRTC显示真实IP),非常适合对比测试。
备注:内容来源于stack exchange,提问作者quantumquester
相关产品推荐
相关产品推荐

