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


11

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

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

proto udp
proto udp6
dev tun

我的第一个问题是:虽然这似乎可行,但将两个协议都放在一个配置文件中是否安全正确?

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

remote vpn.domain.tld port udp6
remote vpn.domain.tld port udp

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

Answers:


11

好。

在服务器端,两次指定“ 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()结果排序)切换到另一个。

格特


在2.4版之前的OpenVPN上仅供参考,您无法进行双堆栈。设置“ proto udp6”将不会绑定到双堆栈。在OpenVPN 2.4上,您可以按照指示使用“ proto udp”。
Ben Franske '17

我发现了一些与此主题矛盾的文档。在OpenVPN 2.4中的主动设置“ proto udp6”中会导致双栈。至少这是我服务器的行为。至少wiki.archlinux.org/index.php/…声明相同。
马丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.