我有一台 VPN 服务器,用于处理各种客户端;有些客户端仅支持 ipv4,有些客户端同时支持 ipv4 和 ipv6,有些客户端将仅支持 ipv6。有些客户端处于漫游状态,因此理想情况下,如果 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),这是一个好方法吗?
答案1
出色地。
在服务器端,两次指定“proto”实际上不会执行任何操作 - “proto udp6”将使其绑定双栈套接字来处理 v4+v6,覆盖上一行中的“proto udp”。
在 2.3 客户端上,有两个遥控器,“udp6”和“udp”是可行的方法,因为旧的套接字代码无法正确地进行故障转移。
在 git master(即将推出的 2.4 版)或 3.0(OpenVPN Connect)客户端上,您只需使用“udp”即可,因为它将正确调用 getaddrinfo() 并使用服务器和网络支持的任何 IP 协议,首先尝试一个系列,然后转向另一个系列,使用操作系统发出的首选项(通过 getaddrinfo() 结果排序)。
格特