ipv4 및 ipv6 클라이언트가 혼합 된 OpenVPN ipv6에 연결하고 사용 가능하지

다양한 클라이언트를 처리하는 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) 클라이언트에서 getudrinfo ()를 올바르게 호출하고 서버와 네트워크가 지원하는 모든 IP 프로토콜을 사용하기 때문에 “udp”를 사용할 수 있습니다. getaddrinfo () 결과 순서를 통해 기본 설정으로 OS 신호를 사용하여 다른 신호로 넘어갑니다.

거트