为什么IP伪装会修复有问题的WebRTC连接?

时间:2018-06-14 22:14:18

标签: webrtc iptables nat stun turn

我正在使用WebRTC堆栈,该堆栈包含(启用防火墙的)嵌入式Linux设备,iOS移动应用程序以及自维护信令,STUN和TURN服务器。

在99%的网络配置中,设置工作正常。但是,当嵌入式Linux设备连接到Verizon Jetpack(4G LTE)时,设备无法与移动应用程序建立WebRTC连接(无论移动电话是连接到Jetpack还是其他网络)。

为了调试,我在IPv4和IPv6上取下了整个防火墙,但没有区别。

然后,我随意发现如果我将伪装的路由后IPv4规则添加到设备的NAT表中,它就会开始工作!具体来说,这是我使用的iptables命令:

$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

为什么此规则会使WebRTC连接正常工作?是否有更合适的方法来实现相同的结果?上面的规则似乎太自由了。

1 个答案:

答案 0 :(得分:1)

我发现了这个问题,因为尝试连接到Jetpack网络上的设备时,我也遇到了WebRTC ICE超时的问题。我对iptables或防火墙/ DNS / NAT配置一无所知,但您的发现为我提供了一个线索,那就是它必须是MiFi本身中的某些设置。

看着http://my.jetpack(Jetpacks Web配置页面/应用程序/事物),我发现了一个标记为“启用直通VPN”之类的设置,默认为true / on。将其切换为false / off似乎已经为我解决了连接问题。

我不太确定这是“真正的”问题,因为似乎同一VPN上的两个设备应该可以连接。希望它可以为您提供一些自己的搜索线索。