OpenVPN y DD-WRT

OpenVPN y DD-WRT

Estoy intentando configurar un enrutador dd-wrt nuevo para que funcione con OpenVpn. Sin embargo, el OpenVpn que necesito usar tiene un archivo de configuración generado automáticamente. Eso parece como:

# Automatically generated OpenVPN client config file
# Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159
# Note: this config file contains inline private keys
#       and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=-redacted-
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=-redacted-
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START
# -----BEGIN CERTIFICATE-----
# -redacted-
# -----END CERTIFICATE-----
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP
# OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0
# OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc.
setenv FORWARD_COMPATIBLE 1
client
proto udp
nobind
remote -redacted-
port 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

<ca>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-redacted-
-----END PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key (Server Agent)
#
-----BEGIN OpenVPN Static key V1-----
-redacted-
-----END OpenVPN Static key V1-----
</tls-auth>

Si tengo un SSH en mi enrutador (esto significa que he activado sshd), puedo usar esta configuración para conectarme al servidor OpenVpn. Si miro la página de control de acceso al servidor VPN, aparece que me he conectado correctamente. Sin embargo, creo que la tabla de enrutamiento del dd-wrt no envía tráfico desde el dispositivo wifi a la VPN.

Soy muy nuevo en enrutamiento y no he podido trabajar en ninguno de los tutoriales de dd-wrt (todos suponen que usas otro tipo de configuración, que yo no puedo usar). Por lo tanto, mi pregunta se divide en dos partes:

  1. ¿Alguien puede guiarme en la configuración de iptables (o cualquier cosa que envíe el tráfico desde el dispositivo de red wifi) de forma programable para que pueda ejecutar el script de iptables y luego iniciar OpenVPN en el enrutador?

  2. ¿Cómo cambio esto para que funcione solo en un VAP (punto de acceso virtual) o solo con ciertas direcciones IP (para que solo el dispositivo con la IP de xxxx conectado al AP pase por la VPN)?

Nota: Normalmente me gusta tener estos scripts en mi computadora y luego los envío a cualquier enrutador dd-wrt disponible y luego los ejecuto para abrir una conexión VPN.

Revisar Google y este sitio no me ha ayudado mucho hasta ahora.

Respuesta1

Hablo principalmente en función de mis planes de trasladar la configuración de OpenVPN de mi hogar a OpenWRT. Actualmente está implementado en Fedora18, pero me gustaría usar la máquina de prueba para otras cosas. Me imagino que DD-WRT sería similar, pero puede haber algunas imprecisiones debido a dificultades de implementación. Esperemos que alguien con más experiencia en DD-WRT pueda respaldarme y solucionar cualquier problema.

La dev tundirectiva significa que está utilizando una subred separada, generalmente configurada mediante la serverdirectiva (supongo que esta parte se maneja en la página de administración de VPN). Por ejemplo, server 10.0.0.0 255.255.255.0significaría que a sus clientes se les daría una dirección en el adaptador virtual de su cliente dentro de este rango.

Si este dispositivo es su enrutador de Internet, entonces se está utilizando como puerta de enlace predeterminada para su red. Si su dispositivo inalámbrico no tiene una ruta estática para una red determinada configurada, solicita la puerta de enlace predeterminada. Lo que sospecho que está sucediendo es que sus reglas de iptables no están configuradas para buscar y aceptar tráfico de su subred VPN, según la interfaz de entrada.

Puede ver la configuración de iptables usando iptables -nvL --line-numbers. Las personas que quieran utilizar su dispositivo como enrutador se encontrarán con algo como lo siguiente.

  1. Aceptar conexiones establecidas.
  2. Acepte conexiones a direcciones locales desde Internet que correspondan con las reglas de reenvío de puertos que tenga implementadas.
  3. Acepte tráfico de la subred local.
  4. Descartar/Rechazar todos los intentos restantes que crucen la cadena de reglas.

Si su subred OpenVPN no se menciona en la etapa 3, pasará a la etapa 4 y desaparecerá.

Estos procedimientos están claramente organizados en cadenas de reglas basadas en tareas. Lo que planeo hacer es definir una cadena para mis subredes OpenVPN al comienzo de "zone_lan_forward", la cadena de reglas que maneja las conexiones locales. Es algo parecido a esto:

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

Lo que haga a continuación depende del tipo de restricciones que desee aplicar a estos clientes. Tengo tres instancias OpenVPN diferentes (una administrativa y dos niveles de acceso de invitados), así que las he dividido un poco más.

Los usuarios de la subred VPN administrativa tienen acceso a casi todo, por lo que he implementado una configuración DENEGAR->PERMITIR que bloquea sólo las direcciones específicas que están fuera del menú antes de aceptar todo lo demás. Los invitados solo pueden acceder a ciertos recursos, por lo que están en una configuración PERMITIR->DENEGAR.

La parte de la que no estoy seguro con DD-WRT es cómo configurar esto para que ocurra automáticamente al arrancar. En OpenWRT, las reglas de firewall se generan en función de scripts (con los que no se debe interferir) en formato /lib/firewall. El archivo de configuración, /etc/config/firewallcontiene las siguientes líneas:

config 'include'

option 'path' '/etc/firewall.user'

El /etc/firewall.userarchivo definido anteriormente se lee como un script BASH cada vez que se recargan las reglas del firewall, para permitir ajustes específicos del usuario. No estoy familiarizado específicamente con DD-WRT, por lo que no estoy seguro de si se utiliza el mismo método de configuración del firewall.

Si sus reglas de firewall están en el valor predeterminado DD-WRT, ¿podría publicar el resultado iptables -nvL --line-numbersen Pastebin o similar, con su dirección pública redactada? Me ayudaría a tener una mejor idea del diseño específico de DD-WRT. ¿Puede confirmar la dirección IP en la subred OpenVPN que obtiene el cliente remoto? ¿Podría publicar también la tabla de enrutamiento de su enrutador, como se muestra en los resultados de route -n? (Asegúrese de que el servidor OpenVPN se esté ejecutando mientras hace esto). Si elimina direcciones de red de esto, identifique cuál fue el propósito del rango (por ejemplo, subred local, subred VPN, pública).

Por supuesto, todo esto podría ser discutible si existe una opción para definir este acceso en la interfaz web. ¿Existe una opción en la consola web de su enrutador para filtrar usuarios en la subred OpenVPN?

Me temo que no entiendo bien la segunda parte de tu pregunta. ¿Quiere que solo ciertas direcciones IP puedan conectarse al dispositivo a través de OpenVPN? ¿Quiere que este servicio esté en un servidor que no sea su enrutador DD-WRT en el futuro?

información relacionada