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.
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
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.
No existe el archivo easy-rsa cabeza!