OpenVPN con clientes mixtos ipv4 e ipv6

11

Tengo un servidor VPN que maneja varios clientes; algunos solo con ipv4, algunos con ipv4 e ipv6, y otros solo ipv6. Algunos de estos clientes están en itinerancia, por lo que idealmente deberían conectarse a ipv6 si está disponible, y recurrir a ipv4 si no lo está.

En mi configuración actual, OpenVPN escucha ipv4 e ipv6:

proto udp
proto udp6
dev tun

Mi primera pregunta es aquí: si bien esto parece funcionar, ¿es seguro y correcto tener ambos protocolos en un archivo de configuración?

Mis clientes tienen dos instancias remotas en la configuración:

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

Mi pregunta aquí también, ya que esto parece funcionar (probar udp6 primero, si eso falla, recurrirá a udp), ¿es esta una buena manera de hacer esto?

Tuinslak
fuente

Respuestas:

11

Bien.

En el lado del servidor, especificar "proto" dos veces en realidad no hace nada: "proto udp6" hará que se una a un socket de doble pila para manejar v4 + v6, sobrescribiendo el "proto udp" en la línea anterior.

En un cliente 2.3, tener dos controles remotos, con "udp6" y "udp" es el camino a seguir, ya que el antiguo código de socket no puede conmutar por error correctamente.

En un cliente git master (2.4-to-be) o 3.0 (OpenVPN Connect), puede usar "udp", ya que llamará correctamente a getaddrinfo () y usar cualquier protocolo IP que admita el servidor y la red, probando primero una familia y caer sobre el otro, utilizando la preferencia de las señales del sistema operativo (a través de la ordenación de resultados getaddrinfo ()).

gert

usuario2156968
fuente
FYI en OpenVPN anterior a 2.4 no puede hacer doble pila. La configuración de "proto udp6" no se unirá a la pila dual. En OpenVPN 2.4 puede usar "proto udp" como se indica.
Ben Franske
Encontré varias documentaciones contradictorias para este tema. En la configuración práctica "proto udp6" en OpenVPN 2.4 da como resultado una pila doble. Al menos este es el comportamiento de mi servidor. Al menos wiki.archlinux.org/index.php/… dice lo mismo.
Martin hace