Cliente OpenVPN escuchando en 0.0.0.0

Cliente OpenVPN escuchando en 0.0.0.0

Estoy probando y calibrando OpenVPN en Linux, inicialmente usando VPN gratuitas.

Según todas las fuentes que he visto, el proxy OpenVPN debería estar escuchando en localhost:1194. De hecho, escucha constantemente en 0.0.0.0, el origen, y un navegador solo se conectará a OpenVPN con el proxy configurado en esta dirección en el puerto habitual.

0.0.0.0 no se menciona en man openvpn. Una mención en línea muestra esta dirección en una implementación de servidor, pero estoy ejecutando un cliente usando client.ovpn sin indicación de 0.0.0.0. Los consejos en línea generalmente advierten sobre aplicaciones que escuchan en el origen, pero lo más importante es que toda la documentación que he visto asume que OpenVPN escucha en localhost:1194 y que los navegadores deben estar configurados en este proxy.

¿Por qué OpenVPN escucha en la dirección incorrecta y cómo puedo solucionarlo?

Editar:

Mirando nuevamente a man openvpn, veo 0.0.0.0 mencionado como 'puerta de enlace predeterminada' y localhost dado como IP de administración.

Todas las menciones que recuerdo haber visto sobre el uso de VPN comerciales con OpenVPN y el uso de navegadores con OpenVPN sugerido o implícito usando localhost:1194. Esto también está implícito en que la mayoría de los servidores proxy escuchan en localhost (Tor, Privoxy, etc.). A pesar del comentario a continuación, los clientes OpenVPN y VPN en general se discuten ampliamente como si fueran proxies: servicios de escucha disponibles, como calcetines o túneles http, a los que una aplicación transfiere la actividad de la red.

Ninguno que vi mencionó tener que ingresar 0.0.0.0:1194 como proxy de trabajo y, de hecho, Firefox no funcionaría con OpenVPN a menos que se proporcione explícitamente la dirección: puerto.

Los únicos tutoriales que tengo para iptables con OpenVPN solo sugieren especificar el puerto, pero nunca la dirección, lo que sugiere que el puerto está en localhost.

Todas las menciones se encuentran en documentos almacenados en la web para los cuales no tengo la URL y no tengo tiempo para buscar en línea en este momento.

Las discusiones sobre la IP 0.0.0.0 sugieren que un servicio que escucha aquí lo hace en todas las interfaces, lo que inmediatamente considero problemático. Prefiero restringir un oyente a una interfaz específica, es decir. servidor local. Por ejemplo, lo siguiente aparece en otra parte de Superusuario:

Cuando un servicio escucha en 0.0.0.0, esto significa que el servicio está escuchando en todas las interfaces de red configuradas; cuando escucha en 127.0.0.1, el servicio solo está vinculado a la interfaz loopback (solo disponible en la máquina local).

La dirección IP 0.0.0.0 puede tener significados muy diferentes, dependiendo de dónde se utilice.

No es una dirección válida para una interfaz de red real, junto con cualquier otra dirección en la subred 0.0.0.0/8 (es decir, cualquier dirección que comience con 0). No se puede utilizar como dirección de origen en ningún paquete IP, a menos que esto suceda cuando una computadora aún no conoce su propia dirección IP y está intentando adquirir una (ejemplo clásico: DHCP). Si se utiliza en una tabla de enrutamiento, identifica la puerta de enlace predeterminada; una ruta a 0.0.0.0 es la predeterminada, es decir, la que se utiliza cuando no hay ninguna ruta más específica disponible para una dirección de destino. Por último, cuando se ve en la salida del comando netstat (que es lo que usted solicitó), significa que un socket determinado está escuchando en todas las direcciones IP disponibles que tiene la computadora; cuando una computadora tiene más de una dirección IP, un socket puede vincularse solo a una dirección y un par de puertos específicos, o a un puerto y todas las direcciones; si ve una dirección IP allí, significa que el socket está escuchando solo en ese puerto y esa dirección específica; si ve 0.0.0.0, significa que está escuchando en ese puerto en todas las direcciones de la máquina, incluida la de loopback (127.0.0.1).

Se sugiere algo similar en Lifewire con tono siniestro; Esto es peor por el hecho de que OpenVPN se ejecuta como root durante su fase de inicialización antes de recurrir a un usuario sin privilegios, y no existe ninguna mitigación para esto para Debian AFAIK.

https://www.lifewire.com/four-zero-ip-address-818384

Como nota a pie de página, ¿se puede configurar OpenVPN con cualquier servidor determinado para que escuche en localhost?

Respuesta1

La dirección IP0.0.0.0 significa la dirección predeterminada.

OpenVPN aparentemente está configurado para enrutar todo el tráfico a través de la VPN, por lo que escucha (y responde) a todas las solicitudes del cliente para enrutarlas a la VPN.

Si lo configura para que no escuche 0.0.0.0, perderá la opción de enrutar todo de forma predeterminada a través de la VPN.


Explicación: OpenVPN crea un adaptador de red virtual que para el sistema operativo es igual que uno físico. Mientras OpenVPN está conectado, su computadora tiene dos de estos adaptadores.

Para que todas las solicitudes de Internet pasen a través de su adaptador, OpenVPN configura su dirección de enrutamiento en 0.0.0.0. Esta es una metadirección especial cuyo significado es "Yo me encargo de todo".

Antes de que OpenVPN se conectara, el adaptador físico se anunciaba como 0.0.0.0, por lo que era su controlador el que lo escuchaba.

Después de que OpenVPN se conectó, lo quitó 0.0.0.0del adaptador físico y lo tomó para sí mismo, por lo que ahora el controlador OpenVPN está escuchando en él.

La única forma de hacer que OpenVPN deje de escuchar 0.0.0.0es desconectar la VPN. Necesita escucharlo para poder funcionar.

información relacionada