Servidor VPN

Primero de todo vamos a explicar en que consiste una VPN (Virtual Private Network). Una VPN como bien dice su nombre es una red privada que no es física si no virtual. Una red física seria como la que tenemos en nuestras casa donde conectamos nuestro pc al router, y si tenemos varios pcs, podemos conectarnos entre ellos.

La VPN realiza el mismo cometido pero de forma virtual, nos crea una red donde ya no es necesario que los pcs conectados a dicha red, estén en la misma casa o país.

Estas redes se suelen usar en empresas para conectar diversas sedes entre ellas y así poder trabajar como si estuvieran todos en la misma red física, o para crear redes aisladas de la propia red local. Para conectar a una red VPN necesitamos tener un usuario y contraseña que nos será proporcionada por la persona que nos habilite el acceso a dicha VPN.

Como pre-requisitos debemos haber configurado una IP estática en nuestro servidor Linux.

Instalando software para crear la VPN

Si ya hemos configurado nuestra IP estática en nuestro servidor, ahora procedemos a instalar el programa/servicio encargado de crearnos la red privada virtual (VPN). Tenemos que iniciar sesión con un usuario que tenga permisos de administración, ya que sino no podremos instalar nada. Ejecutamos el siguiente comando en la consola.

    # apt-get install pptpd

Nos indicará que se va a proceder a la instalación del paquete PPTPD y que es necesario el BCRELAY, así que aceptamos la instalación.

Configurando el servidor VPN

Configurando IPs de la VPN

Lo primero que vamos a hacer es asignarle una IP estática al servidor VPN. Para ello vamos a editar el archivo \textbf{/etc/pptpd.conf} usando el editor de archivos para consola llamado nano.

    # nano /etc/pptpd.conf

Una vez estamos dentro del archivo, bajamos al final de todo usando las flechas o bien la tecla AvPag del teclado. Una vez estamos al final del fichero, hemos de añadir las IPs que queremos que tenga nuestra red VPN. Para ello debemos saber que rango de IP privadas queremos ponerles (Clase A, clase B o clase C). En nuestro caso usaremos una IP de clase A pero usando una mascara de red para clase C.

Las IPs privadas son IPs que están reservadas para uso domestico/privado, véase que no se pueden tener como IP publicas nunca, ningún operador de internet debe asignarlas a tu conexión de internet.

Como he dicho, usaremos la IP de clase A 10.X.X.X pero con una mascara de subred de clase C.

En el archivo añadimos las siguientes lineas.

localip 10.1.1.1
remoteip 10.1.1.10-254

En la primera línea, estamos asignándole al servidor la IP estática 10.1.1.1 para la red VPN. En la segunda línea, estamos diciéndole al servidor VPN que a los clientes que se conecten les asigne una IP que este entre la 10.1.1.10 y la 10.1.1.254 incluyendo ambas.

El último número nunca ha superar el número 254, ni ser inferior al número 1 y tampoco puede ser igual que el número que hemos puesto en el localip (ojo los tres primeros números si que han de ser iguales). Para finalizar, guardamos el archivo pulsando F2 ,Y , Enter.

Alta de usuarios

Para que los usuarios o nosotros nos podamos conectar a nuestra red VPN, debemos dar de alta usuarios. Para ello editaremos el archivo /etc/ppp/chap-secrets.

    # nano /etc/ppp/chap-secrets

La sintaxis que debemos ponerle al archivo es la siguiente:

loginusuario pptpd contraseña *
loginusuario2 pptpd contraseña2 *

Los espacios deben ser tabulaciones. El pptpd es para indicar el tipo de servidor VPN, como hemos instalado el pptpd, pues le indicamos que use ese. El asterisco sirve para decirle que le asigne cualquier IP de el rango que le hemos indicado en el archivo anterior. Si queremos asignarle una por algún motivo en especial, deberemos cambiar el asterisco por la IP que queramos asignarle. Guardamos el archivo pulsando F2 ,Y , Enter.

Configurar firewall iptables

Para poder conectarnos a nuestro servidor VPN debemos configurar el firewall de manera que nos acepte las conexiones para ese servicio. Para ello debemos añadir el siguiente comando al final del archivo /etc/rc.local, pero antes de exit 0.

    iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE

Donde pone eth0 es el nombre de nuestra interfaz de red, pueden saberlo haciendo ifconfig o ip addr o bien revisando el archivo donde hemos configurado anteriormente la IP estática real de el servidor.

Guardamos pulsando F2 ,Y , Enter.

Navegar por Internet través de la VPN

Esto es opcional, ya que solo lo vamos a usar si queremos navegar de forma segura desde redes publicas como puede ser la red de una biblioteca, wifi abierta, entre otros. al activarlo lo que estaremos haciendo es salir a Internet como si estuviéramos conectados en casa, véase saldremos desde nuestro router a internet. Mucha gente alquila servidores VPN para poder saltarse bloqueos que ponen los gobiernos, o ISP a ciertas paginas, de forma que ellos se conectan a una VPN con forwarding activado para poder navegar sin problemas. Un ejemplo seria poder descargar series o musica desde países donde esta prohibido la descarga de estos materiales, usaríamos una VPN de un pis donde si estuviera permitido tales acciones, y nuestro ISP no podría ver que es lo que estamos haciendo, ya que la conexión ira cifrada al ser una VPN.

Sea cual sea el motivo, para activar el IP Forwarding debemos editar un par de archivos más. El archivo /etc/sysctl.conf

    # nano /etc/sysctl.conf

Buscamos la linea #net.ipv4.ip_forward=1 y le eliminamos el #, dejando que quede así

net.ipv4.ip_forward=1

Por último editamos el archivo /etc/ppp/options, si encontramos las siguientes lineas (el número será diferente)

#ms-dns 208.67.222.222
#ms-dns 208.67.220.220

Las editamos eliminando el # que tienen delante y poniendo unos servidores DNS que queramos. Unos buenos servidores DNS son los que he puesto yo (OpenDNS), de manera que al final quede:

ms-dns 208.67.222.222
ms-dns 208.67.220.220

Guardos pulsando F2 , Y , Enter y a continuación reiniciamos el servidor usando el comando

# reboot

Configurando el router para la VPN

Para poder conectar desde Internet a nuestra VPN, debemos configurar el router de nuestra conexión a Internet de forma que nos deje pasar el puerto 1723 para la dirección estática que le hemos puesto. Para abrir los puertos de tu router puedes encontrar información en http://www.driverlandia.com/abriendo-las-puertas-a-internet-solo-si-tienes-router/ y también habilitar la opción de PPTP en los Linksys en la sección Security --> VPN Passthrough. Para otras marcas, puedes usar Google.

Una vez ya tengamos todo configurado, podemos probar de conectarnos mediante Windows , Linux, MacOS o incluso routers que soporte conexiones a VPN como los Cisco o Linksys. No hace falta decir que el computador que hace de servidor VPN debe estar encendido cuando queramos conectarnos a él.