У меня есть 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), это хороший способ сделать это?
Хорошо.
На стороне сервера указание «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 ()).
Герт