Obelisco/Docs

OpenVPN

Configuración incluida en Obelisco

La siguiente configuración experimental se encuentra incluida en Obelisco, con el objetivo de crear túneles a través de Internet entre los AP/Nodos que se encuentren aislados o sin posibilidad de enlazar de forma inalámbrica con alguno, de forma temporal hasta que puedan lograr un enlace.

Si bien no se encuentra habilitado el servicio por defecto, se desalienta la utilización del mismo en entornos productivos porque dado que las configuraciones detalladas a continuación no cuentan con restricciones de seguridad (como autenticación, encriptación, etc) suficientes y necesarias para utilizar estos ejemplos fuera de la experimentación en BuenosAiresLibre.

Características

  • Configuración simple de OpenVPN, basada en la información obtenida de la documentación del proyecto: http://openvpn.net/.

  • Esta configuración genera un túnel entre un equipo denominado server y otro cliente.

  • Se asume que el extremo server está directamente conectado a Internet.
  • Para evitar que esta configuración interfiera con otras, como la que se describe en esta página, no utiliza el puerto por defecto de OpenVPN, y en cambio utiliza el puerto 1195, UDP.
  • Utiliza las interfaces tap, que permiten el intercambio de broadcasts entre ambos extremos. Útil para el correcto funcionamiento de OLSR.
  • No utiliza cifrado, lo que implica que cualquier que conozca la configuración, se puede conectar.
  • Para los enlaces punto a punto (túneles VPN incluidos), se debe utilizar una subred de enlaces (172.16.x.x). Ver [SubredesAsignadas].

Configuración

  • Mediante BALConfig se puede configurar el servicio, tanto del servidor como del cliente, de todos los parámetros necesarios para iniciar OpenVPN y abrir el firewall según corresponda.
  • A continuación se detallan los archivos de configuración, útil para reproducirlos en otro equipo.

Servidor

  • Archivo de configuración /etc/openvpn/server.conf

#
# OpenVPN Server
#
# 20060628 - HernanRossetto
#
mode p2p
proto udp
verb 3
mute 5
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
user nobody
group nogroup
daemon
status /var/run/openvpn-status.log

Cliente

  • Archivo de configuración /etc/openvpn/client.conf

#
# OpenVPN Client
#
# 20060628 - HernanRossetto
#
mode p2p
proto udp
nobind
verb 3
mute 5
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
user nobody
group nogroup
daemon
resolv-retry infinite
mute-replay-warnings
float

Scripts de inicio

  • Mediante BALConfig se puede configurar el servicio, tanto del servidor como del cliente, de todos los parámetros necesarios para iniciar OpenVPN y abrir el firewall según corresponda.
  • A continuación se detalla la forma de iniciar los servicios, útil para reproducirlo en otro equipo.

Servidor

  • Básicamente, el server se debe iniciar como:

openvpn --config /etc/openvpn/server.conf --dev tap0 --port 1195 --ifconfig ${VPN0_ipaddr} ${VPN0_netmask}
  • Donde ${VPN0_ipaddr} se debe reemplazar por la dirección IP a utilizar en este extremo del túnel. Ejemplo: 172.16.166.33
  • Luego, ${VPN0_netmask} se debe reemplazar por la máscara de red apropiada, en este ejemplo sería: 255.255.255.240.
  • Resultando:

openvpn --config /etc/openvpn/server.conf --dev tap0 --port 1195 --ifconfig 172.16.166.33 255.255.255.240

Cliente

  • El cliente se debe iniciar como:

openvpn --config /etc/openvpn/client.conf --dev tap1 --port 1195 --ifconfig ${VPN1_ipaddr} ${VPN1_netmask} --remote ${VPN1_remote}
  • Donde ${VPN0_ipaddr} se debe reemplazar por la dirección IP a utilizar en este extremo del túnel, y que como regla práctica debería ser la siguiente a la asignada del lado server. Ejemplo: 172.16.166.34
  • Luego, ${VPN0_netmask} se debe reemplazar por la máscara de red apropiada, en este ejemplo sería: 255.255.255.240.
  • Finalmente, ${VPN1_remote} se debe reemplazar por la dirección IP pública en Internet del extremo server. Ejemplo ficticio: 254.254.254.254
  • Resultando:

openvpn --config /etc/openvpn/client.conf --dev tap1 --port 1195 --ifconfig 172.16.166.34 255.255.255.240 --remote 254.254.254.254

Probando el túnel

  • Iniciar el servicio en el server.
  • Verificar en syslog si levanta bien. Se verán mensajes de inicialización del servicio.
  • Debería crearse una nueva interfaz de red tap0, con IP 172.16.166.33.

  • Iniciar el servicio del lado cliente.
  • Verificar el syslog.
  • Debería crearse una nueva interfaz de red tap1, con IP 172.16.166.34.

  • Probar el vínculo con ping a la IP del extremo server. Ejemplo:

ping 172.16.166.33
  • Luego probar el vínculo con ping a alguna IP de las subredes disponibles en el extremo server. Ejemplo:

ping 10.4.1.1
  • El túnel debería estar funcionando correctamente.

Configuración simple, punto a punto, cifrada

La siguiente configuración es un ejemplo que puede ser utilizado para usos personales, donde se desee crear un túnel a través de Internet entre el router que tiene instalado Obelisco y otro remoto.

Características

  • Configuración simple de OpenVPN, basada en OpenVPN Static Key Mini-HOWTO.

  • Esta configuración genera un túnel entre un equipo denominado server y otro cliente.

  • Se asume que el extremo server está directamente conectado a Internet y es accesible con SSH.
  • Se asume que no hay otras configuraciones de OpenVPN existentes en los dos extremos. De lo contrario esta configuración puede interferir con otra existente.
  • Esta configuración utiliza el puerto por defecto de OpenVPN (1194, UDP), que tiene que estar abierto en el firewall del server.
  • Utiliza las interfaces tun.
  • Para los enlaces punto a punto (túneles VPN incluidos), se debe utilizar una subred de enlaces (172.16.x.x). Ver [SubredesAsignadas].

  • En caso de que un extremo sea Debian/Ubuntu, se puede modificar /etc/default/openvpn para que inicie automáticamente el servicio de openvpn para la configuración creada.
    • En tal caso modificar la línea que indica AUTOSTART, indicando allí el nombre de la configuración a iniciar, ejemplo: AUTOSTART="server-ptp1".

Configuración del Servidor

  • Tiene que estar activo (1) el ip forwarding en el server, para lo que el siguiente comando debe responder simplemente 1:

cat /proc/sys/net/ipv4/ip_forward
  • Generar la clave estática en el servidor:

openvpn --genkey --secret server-ptp1.key
  • Mover la clave a /etc/openvpn/, como root:

mv server-ptp1.key /etc/openvpn/
  • Crear la configuración en el server en /etc/openvpn/server-ptp1.conf:

# Configuración OpenVPN
# Extremo server para crear un túnel entre dos puntos.
#
# ptp1
#
dev tun
ifconfig 172.16.166.1 172.16.166.2
secret /etc/openvpn/server-ptp1.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
daemon
  • Si no existe, crear en el server un script ejecutable para que levante el servicio en cada inicio del sistema:

echo "openvpn /etc/openvpn/server-ptp1.conf" > /etc/init.d/openvpn
chmod +x /etc/init.d/openvpn

Configuración del Cliente

  • A continuación se mencionará IP-DEL-SERVER, que corresponderá a la IP pública (de Internet) del extremo server.

  • Copiar la clave, previamente generada, al cliente. Desde el equipo cliente realizar, como root:

scp root@IP-DEL-SERVER:/etc/openvpn/server-ptp1.key /etc/openvpn/ptp1.key
  • Crear la configuración en el cliente en /etc/openvpn/ptp1.conf:

# Configuración OpenVPN
# Extremo cliente para crear un túnel entre dos puntos.
#
# ptp1
#
remote IP-DEL-SERVER
dev tun
ifconfig 172.16.166.2 172.16.166.1
secret /etc/openvpn/ptp1.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
daemon
# Agregar rutas a subredes remotas:
#route 10.4.1.0 255.255.255.224
  • Si no existe, crear en el cliente un script ejecutable para que levante el servicio en cada inicio del sistema:

echo "openvpn /etc/openvpn/ptp1.conf" > /etc/init.d/openvpn
chmod +x /etc/init.d/openvpn

Probando el túnel

  • Iniciar el servicio en el server, como root:

/etc/init.d/openvpn
  • Verificar en syslog si levanta bien. Se verán mensajes de inicialización del servicio.
  • Debería crearse una nueva interfaz de red tun0, con IP 172.16.166.1.

  • Iniciar el servicio del lado cliente:

/etc/init.d/openvpn
  • Verificar el syslog.
  • Debería crearse una nueva interfaz de red tun0, con IP 172.16.166.2.

  • Probar el vínculo con ping a la IP del extremo server. Ejemplo:

ping 172.16.166.1
  • Luego probar el vínculo con ping a alguna IP de las subredes disponibles en el extremo server. Ejemplo:

ping 10.4.1.1
  • El túnel debería estar funcionando correctamente.


CategoryObelisco

Wiki: Obelisco/Docs/OpenVPN (last edited 2008-09-28 09:18:28 by localhost)

USLA