![OpenVPN TAP 与 TUN 的并行](https://linux22.com/image/709699/OpenVPN%20TAP%20%E4%B8%8E%20TUN%20%E7%9A%84%E5%B9%B6%E8%A1%8C.png)
我对我们现有的 OpenVPN 服务器设置以及扩展访问权限的要求有一些疑问。
我们当前的设置如下:
- 1 个 OpenVPN 服务器(TAP 模式)
- 多个虚拟机服务器,主机物理连接到与 OpenVPN 服务器相同的子网
- 多台虚拟机服务器作为客户端连接到 OpenVPN 服务器以访问上述子网
- 多个终端用户作为客户端连接到 OpenVPN 服务器以访问上述子网
对于目前的使用情况,此设置没有问题。每个连接的设备/用户都会获得一个 IP,一切正常。但是,我们需要能够连接 iOS/Android 设备,我从文档和https://community.openvpn.net/openvpn/wiki/BridgingAndRouting这需要为 TUN 设置 OpenVPN。此外,似乎每个 OpenVPN 服务器实例只能在一种模式下运行,您不能在同一个 OpenVPN 配置中同时拥有 TAP 和 TUN。
以下是一些问题:
如果我们在当前 OVPN 服务器上设置另一个 OpenVPN 实例,并将其设置为 TUN 模式:连接到该 OpenVPN 的客户端设备是否只能看到 OVPN 服务器上的本地内容?还是由于已经存在 TAP OVPN 设置,它能够看到子网上的所有设备?
如果上述问题的答案是客户端设备只能看到 OVPN 服务器上的内容,而看不到其他内容,那么人们是否使用过其他替代设置来方便移动设备访问?我们是否可以在现在通过 TAP 作为客户端连接的虚拟机之一上设置 OVPN 服务器,然后在那里使用 TUN 允许访问该机器?
不幸的是,由于环境限制,我们无法将现有的 TAP OVPN 切换到 TUN 并保留它(除非我误解了 TUN 配置,并且它可以作为我们当前设置的替代方案并允许所有当前 VM 和客户端设备以及 Android/iOS 连接?)。
感谢您就此问题提供的任何见解。
答案1
在 TUN 模式下,为 VPN 客户端提供 IP 的子网在 VPN 服务器上是“虚拟的”。TUN 模式在第 3 层工作,而此子网没有第 2 层。OpenVPN 使用自己的机制将指向客户端 VPN IP 的流量放入正确的隧道(以便它到达客户端)。因此,不可能在同一个(VPN 客户端)子网中混合 VPN 客户端和本地计算机。它们必须始终位于不同的子网中,并且需要通过路由在两个方向上均可访问。
因此,除非您已设置本地防火墙规则,否则通过 tun 连接的 vpn 客户端应该能够访问所有在 openvpn 服务器上的路由配置中有路径的目标和有一条返回路径。最后一点是最重要的。在您要连接的每台本地计算机上,必须存在一条通往 VPN 客户端子网的路径。VPN 服务器必须在本地路由配置中被称为此子网的网关。
人们是否使用过这种设置的替代方法来方便移动设备访问?
没有好的。Play Store 中有一个 OpenVPN 客户端,它模拟了 VPN API 中不可用的第 2 层,在某些(大多数?)情况下有效。但这是一种黑客行为,官方客户端的开发人员决定不这样做。
我们是否可以在现在通过 TAP 作为客户端连接的其中一台虚拟机上设置一个 OVPN 服务器,并在那里使用 TUN 允许访问该机器?
是的。您需要能够从任何想要使用 TUN-VPN 隧道的地方连接到此 OpenVPN 服务器。因此,您很可能需要一个公共路由 IP。如果是这样,机器上的本地路由应该没有问题。