[HowTo] OpenVPN para vagos e inútiles. Linux server side, Windows client side.

Si de algo me puedo vanagloriar es de vago. Nunca me puse a investigar como era el asunto ese de openvpn por que no me importó. Nunca me importó por que siempre existió Hamachi y Hamachi hace que usar una VPN sea coser y cantar y coser y cantar es mi segundo nombre.

Hace unos meses tuve que instalar una conexión OpenVPN Linux contra Linux, sin cifrado, sin autenticación, dos IP fijos en ambas puntas y me resultó tan fácil que me sentí un pelotudo en plan de:

 

¿Por qué mierda nunca usé esto antes carajo?

 

Hoy me tuve que poner a entender como armar una VPN –de nuevo con OpenVPN, si– y no me resultó tan fácil esta vez. Internet está llena de guías exaustísimas que no tengo ganas de tener que volver a seguir en mi vida, por que conceptualmente entiendo todo con mucha precisión, solo necesito un ayuda memoria.

 

Para que quede claro de que va todo este post, una imagen que puede mas que mil palabras: Vagos de mierda

Para que quede claro de que va todo este post, una imagen que puede mas que mil palabras: Vagos de mierda

 

Así es que acá estoy, documentando para mi mismo como siempre y para cualquier otro vago de mierda que solo quiera copiar y pegar, como armar una VPN cuando tenés Linux en una punta y Windows en la otra. Sin autenticación y con cifrado con certificados auto-firmados por si sos un poquito maricón –o importante– y te preocupa realmente el man-in-the-middle.

Como se hace de lado Linux:

Si bien para el caso da lo mismo y las instrucciones aplican para cualquier versión de Linux, esto que sigue es una guía copy-pasteable para cualquier Debian y todos sus derivados (Ubuntu, Mint, Mierda, etc.) con lo cual si justo lo tenés que hacer en un Centos reemplazarás apt-get por yum o lo que corresponda. Siempre como root o con sudo si sos medio marica.

1 – Instalá OpenVPN y decile que si a todo cuando te pregunte:

~# apt-get install openvpn

 

2  – Copiá todo el contenido de los archivos que vienen de ejemplo con openvpn en tu /etc/openvpn:

~# cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

 

3 – Cambiate hasta dentro de /etc/openvpn/easy-rsa/2.0 y editá el archivo vars:

~# vim vars

3.1 – Dentro de vars al fondo abajo de todo, editá toda esta mierda si tenés ganas, para que coincida con la configuración de tu red/empresa/país de residencia (si lo dejás como viene también anda todo a la primera):

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"

3.2 – Cargá las variables que acabás de editar:

~# source ./vars

o lo que es lo mismo:

~# . ./vars

 

4 – Creá los certificados, que van a contener todos los datos que completaste en el paso inmediato anterior o que podés dejar totalmente en blanco y da lo mismo. Enter a todo hasta que te pregunta, caso en el cual, si a todo. Recordemos que esta es una guía para vagos e inútiles:

~# ./clean-all

~# ./build-ca

~# ./build-key-server server

~# ./build-key cliente

~# ./build-dh

 

5 – Copiá los certificados al dir de configuración del server openvpn:

~# cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn

 

6 – Creá un archivo que se llame “openvpn.conf” o editá el que ya estaba de antes:

~# vim /etc/openvpn/openvpn.conf

 

6.1 – Borrá a la mierda todo el contenido, dejando solamente estas líneas o si lo creaste desde cero, copiá y pegá todo esto:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key

dh dh1024.pem
server 172.17.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
client-to-client

Por si no es evidente, no te voy a explicar que hace cada cosa por que para eso está el manual y el resto es auto-explicativo. Por ejemplo, si tu red LAN está en el rango 172.17, cambiá esa línea para que no se te rompa el routing o switching.

 

7 – Todo listo de este lado. Iniciá openvpn de una buena vez y al fin:

~# /etc/init.d/openvpn restart

 

Si todo salió bien, ya tenés openvpn server corriendo, escuchando en el puerto 1194 UDP (abrilo en tu firewall y en tu router para que esto funcione) del IP 172.17.0.1, cosa que podés verificar ejecutando ifconfig o tirandote un ping a vos mismo: ping 172.17.01

 

 

Del lado Windows:

1 – Instalá la versión que corresponda a tu Windows:  http://openvpn.net/index.php/download/community-downloads.html

 

2 – Copiá los certificados que generaste para el cliente, desde Linux a tu Windows, dentro de Archivos de programa\openvpn\config. Los tres archivos relevantes son:

cliente.crt
cliente.key
ca.crt

 

3 – Creá dentro del mismo directorio un archivo de texto que se llame “cliente.ovpn” o como te parezca mejor llamarlo. Es a título ilustrativo y lo único que importa es que tenga esa extensión. Dentro, meté todo esto:

client
dev tun
proto udp
remote aca_el_ip_o_dominio_de_tu_server 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert cliente.crt
key cliente.key
comp-lzo
verb 3

El “aca_el_ip_o_dominio_de_tu_server” es el número de IP de tu server o domino que le apunta. Si no tenés uno podés darte de alta en cualquier servidor de dominios para números de IP dinámicos y usar a continuación esta guía que escribí hace un tiempo.

 

4 – Conectate desde el iconito que apareció en el systray cuando instalaste OpenVPN para Windows. Hacele ping a tu server y volvé a este blog a darme las gracias, que me las debés.

 

Troubleshooting:

¿No te funciona?

Revisá los logs de ambos lados pero apuesto plata a que en el server no abriste el puerto 1194 UDP.

¿Tenés cualquier otro problema?

No se mucho mas que vos pero cuando lo arregles podes venir y dejar un comentario explicando por que no te anduvo.

Maldito Nerd

Informático por elección, linuxero por convicción, viejo y choto por que no queda otra, el tiempo pasa. Escribo sobre lo que mas me gusta: La música y las computadoras.

More Posts - Website - Twitter - Facebook - Google Plus

1 comentario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *