具有混合 ipv4 和 ipv6 客户端的 OpenVPN

Tui*_*lak 12 ipv6 openvpn ipv4

我有一个处理各种客户端的 VPN 服务器;有些只支持 ipv4,有些支持 ipv4 和 ipv6,有些只支持 ipv6。其中一些客户端正在漫游,因此理想情况下,如果可用,它们应该连接到 ipv6,如果不可用,则回退到 ipv4。

在我当前的设置中,OpenVPN 侦听 ipv4 和 ipv6:

proto udp
proto udp6
dev tun
Run Code Online (Sandbox Code Playgroud)

我的第一个问题在这里:虽然这似乎有效,但将两个 proto 放在一个配置文件中是否安全和正确?

我的客户在配置中有两个远程实例:

remote vpn.domain.tld port udp6
remote vpn.domain.tld port udp
Run Code Online (Sandbox Code Playgroud)

我的问题也在这里,因为这似乎有效(首先尝试 udp6,如果失败将回退到 udp),这是一个很好的方法吗?

小智 12

好。

在服务器端,两次指定“proto”实际上并没有做任何事情——“proto udp6”将使其绑定双栈套接字来处理 v4+v6,覆盖上一行中的“proto udp”。

在 2.3 客户端上,有两个遥控器,“udp6”和“udp”是要走的路,因为旧的套接字代码不能正确地进行故障转移。

在 git master (2.4-to-be) 或 3.0 (OpenVPN Connect) 客户端上,您可以只使用“udp”,因为它会正确调用 getaddrinfo() 并使用服务器和网络支持的任何 IP 协议,首先尝试一个家庭,然后使用操作系统信号的偏好(通过 getaddrinfo() 结果排序)落入另一个。

格特

  • 仅供参考,在 2.4 之前的 OpenVPN 上,您无法使用双栈。设置“proto udp6”不会绑定到双堆栈。在 OpenVPN 2.4 上,您可以按照指示使用“proto udp”。 (2认同)