我有一个处理各种客户端的 VPN 服务器;一些只有 ipv4,一些有 ipv4 和 ipv6,还有一些只有 ipv6。其中一些客户端正在漫游,因此理想情况下,如果可用,它们应该连接到 ipv6,如果不可用,则回退到 ipv4。
在我当前的设置中,OpenVPN 监听 ipv4 和 ipv6:
proto udp
proto udp6
dev tun
我的第一个问题是:虽然这似乎可行,但在一个配置文件中包含两个 proto 是否安全且正确?
我的客户在配置中有两个远程实例:
remote vpn.domain.tld port udp6
remote vpn.domain.tld port udp
我的问题也在这里,因为这似乎有效(首先尝试 udp6,如果失败将回退到 udp),这是一个好方法吗?
出色地。
在服务器端,指定“proto”两次实际上并没有做任何事情——“proto udp6”将使它绑定一个双栈套接字来处理 v4+v6,覆盖上一行中的“proto udp”。
在 2.3 客户端上,有两个遥控器,带有“udp6”和“udp”是要走的路,因为旧的套接字代码不能正确地进行故障转移。
在 git master (2.4-to-be) 或 3.0 (OpenVPN Connect) 客户端上,您可以只使用“udp”,因为它会正确调用 getaddrinfo() 并使用服务器和网络支持的任何 IP 协议,首先尝试一个家庭,然后使用 OS 信号的偏好(通过 getaddrinfo() 结果排序)落入另一个。
格特