我有一个安装了 openVPN 的 dd-wrt 路由器,我用它远程玩 LAN 游戏。
网络上的一些细节:
remote site LAN: 192.168.10.0/23
router LAN IP: 192.168.11.1
LAN DHCP range: 192.168.11.1-254 (same for VPN clients)
我们玩的游戏使用广播数据包来定位服务器,问题是,即使广播被发送到 VPN,路由器也无法将它们从客户端发送到远程站点 LAN 内的主机。反之亦然,来自远程 LAN 的广播无法到达 VPN 客户端。
这仅发生在 255.255.255.255 广播地址上,我已经在客户端嗅探了网络,并且可以看到到 192.168.11.255 的“正常”广播。
非传输数据包的示例(源是 VPN 客户端):
192.168.11.24 255.255.255.255 UDP Source port: 28960 Destination port: 28961
传输数据包的示例(通过 VPN 客户端嗅探捕获。源是远程 LAN 中的主机):
192.168.11.25 192.168.11.255 UDP Source port: 60978 Destination port: 32414
如何配置路由器来广播这些数据包?
这是路由、iptables 还是 openVPN 修复?
编辑:VPN 配置为桥接模式(tap)。
答案1
您的 OpenVPN 可能配置为tun
模式,该模式在第 3 层工作并且不会跨子网传播广播。
您需要将其切换到tap
模式,该模式在第 2 层工作并传播广播。您需要对tap
模式执行的操作是创建一个桥接接口,例如br0
,然后将您的物理eth0
和连接tap0
到它。 br0
然后为分配一个 IP,并且从发出的广播br0
将到达连接到它的任何设备,就像它是一个交换机一样。
我相信 DD-WRT 接口会为您完成大部分工作,这就是它的要点。
答案2
广播没有被路由,这不是 OpenVPN 的问题,这只是 IP 的工作方式。
如果 OpenVPN 配置为第 3 层模式(又名 tun),那么它将充当路由器,广播将不会被传递。
您的选择是设置一个桥(又名 tap),形成一个第 2 层网络,它将转发广播。不过,我不确定你要做什么才能让它在 dd-wrt 上工作。
顺便说一句,你真的可能想看看 dd-wrt 的一些替代方案,大多数路由器的版本已经 4 年多没有更新了。这意味着积累了很多安全漏洞,比如 heartbleed,可能还有 shellshock。如果你的固件映像已经超过一个月了,那么是时候升级或寻找替代方案了。
答案3
我设法通过使用 openVPN 连接 2 个路由器(客户端和服务器)来实现这一点,其中 tap0 接口桥接到两侧的以太网。
似乎无法通过 VPN 接口传播 255.255.255.255 可能只是 Windows 客户端上的问题,也许是由于缺乏桥接。