• Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Cachivaches
  • Ubuntu
  • Servicios en la nube
  • Raspberry Pi
  • ¿Preguntas?
    • ¿Quieres hablar?

Kacharreando

Kacharreando desde antes que montara este blog

Hosting Estupendos baratos

Cómo instalar OpenVPN en un VPS por menos de 15$ al año

abril 28, 2016 Deja un comentario

Instalar OpenVPN en Debian por 15$

Cuando trabajamos en remoto a través de un punto de acceso gratuito WiFi o a través de una cafetería, estamos trabajando en nuestros servidores, webs, … de manera totalmente insegura, ya que pueden captar nuestros datos en este proceso.

Para evitar esto lo más interesante es utilizar OpenVPN que asegura nuestra conexión y evitaremos que nuestro tráfico sea interceptado por otros.

Además si tienes restricciones por algún firewall, u otra razón, puedes utilizar OpenVPN para conectarte sin impedimentos.

Puedes usar una variedad de distintos servicios OpenVPN gratuitos pero no son fiables, hay límites en la velocidad de transferencia y tienen otras restricciones. Para arreglar esto, me he puesto manos a la obra y he contratado un VPS OpenVZ barato de RamNode para tener mi propio servidor OpenVPN.

Vas a ver en este artículo como he instalado y configurado OpenVPN en un servidor Debian 7.

El servidor VPS que he contratado es el más barato, tiene las siguientes especificaciones:

  • 128mb RAM (con 128mb swap)
  • 1 nucleo CPU
  • 10 GB SSD de espacio
  • Puerto de 1Gbps
  • 500GB de ancho de banda
  • Direcciones 1 IPv4 & 16 IPv6
  • Soporte de una gran variedad de distribuciones de linux.

Estas características son ideales para ejecutar un servidor personal OpenVPN. Es barato (solamente 15$ para todo un año) y te permite transferir una gran cantidad de datos. Los 10GB SSD y los 128mb de RAM pueden paracer poco, pero es más que suficiente para un servidor OpenVPN. De hecho podrías correr Nginx y PHP en el servidor sin llegar a consumir más de un 70% de memoria.

He escogido la distribución Debian 7, porque es muy parecida a la que utilizo yo (ubuntu) y es perfecta para servidores.

Compra del Servidor

Servdor OpenVZ de RamnodeEsta es la pantalla que obtendremos cuando vamos a contratar un servidor de Ramnode, pudiendo elegir la localización del servidor y por tanto su IP.

En nuestro caso como queremos una IP americana elegiremos NYC como servidor OpenVZ.

Según necesitemos más RAM, disco duro o Bandwidth el precio irá incremenándose.

La siguiente pantalla elegimos el servidor y la distribución con la que trabajaremos:

Selección del Servidor OpenVZ de 128MB de RAM

A partir de aquí tendremos que darnos de alta, introducir nuestros datos y pagar por el método elegido.

Una vez acabado el proceso nos llegarán una serie de mails con las claves y todos los datos de la compra, por lo que podremos conectarnos a nuestro servidor.

Preparativos

Antes de trabajar con el servidor y poder instalar OpenVPN tienes que asegurarte de que tu VPS esté ejecutándose. Tendrás que permitir el TUN/TAP y el PPP en el Panel de Control SolusVM.

Podrás encontrar esta configuración en la página de inicio del panel de control en la pestaña ‘Settings’:

Habilitar acceso TUN TAP para openvz

Optimizaciones antes de la instalación

Antes de instalar OpenVPN, vamos a hacer algunas optimizaciones del sistema.

Como este servidor lo vamos a utilizar para más servicios y probaremos a instalar algunas webs en el y WordPress, cada gasto de memoria RAM que haga cualqueir programa es conveniente que lo reduzcamos.

Una de las primeras optimizaciones de gasto de RAM va a ser sustituir el open-ssh por otro que consuma menos ram.

En este caso el programa elegido es Dropbear.

Primero tendremos que acceder al servidor con el comando SSH siguiente:

ssh root@1.2.3.4

Siendo 1.2.3.4 la IP de tu servidor.

Te pedirá la contraseña y te preguntará si confías en la clave.

Para instalarlo en el sistema utilizaremos el siguiente comando:

apt-get install dropbear

Una vez instalado, tenemos que configurar las opciones de dropbear. Instalaremos nano para editar los archivos:

apt-get install nano

Una vez tengamos nano, editaremos el archivo de configuración de dropbear para añadir el puerto de acceso:

nano  /etc/default/dropbear

Tendremos que cambiar las siguientes líneas con el puerto escogido:

NO_START=0
DROPBEAR_PORT=2424

Una vez que lo tenemos configurado, iniciamos dropbear:

service dropbear start

Para comprobar que funciona correctamente dropbear, ejecutamos el siguiente comando:

netstat -nlpt | grep dropbear

Tenemos que ver algo como esto:

rtcp 0 0 0.0.0.0:2424 0.0.0.0:* LISTEN 1918/dropbear

Si todo ha ido bien, entonces salimos del servidor, y volvemos a entrar con el siguiente comando:

ssh -p 2424 root@1.2.3.4

Si todo funciona correctamente entonces podrás acceder al servidor. Una vez dentro del servidor pararemos el servicio openssh y lo desinstalaremos:

/etc/init.d/ssh stop o ejecuta service ssh stop
apt-get remove openssh-server

RECUERDA: antes de desinstalar openssh-server asegurate de que funciona correctamente el acceso a tu máquina, porque sino entonces no podrás acceder y perderás todo lo que hayas hecho en el servidor. Que no se te olvide leche!!!

Instalando OpenVPN

Antes de instalar, actualizaremos los paquetes e instalaremos todas las actualizaciones:

sudo apt-get update
sudo apt-get upgrade

Lo siguiente que haremos será instalar OpenVPN:

sudo apt-get install openvpn easy-rsa

En debian 7 no está por defecto el paquete easy-rsa, por lo que tendremos que añadir los backports de debian en los repositorios para poder instalar el paquete. Editaremos el archivos sources.list y añadiremos el respositorio siguiente:

nano /etc/apt/sources.list
deb http://ftp.debian.org/debian wheezy-backports main

Una ve que tenemos el repositorio añadido instalaremos el paquete easy-rsa:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install easy-rsa

Configurar el servidor

La encriptación de OpenVPN utiliza certificados de cliente y servidor. Primero es necesario generar un certificado para el servidor. Copia los ejemplos de archivos de configuración en el directorio correcto:

cifrado de OpenVPN utiliza certificados de cliente y servidor. Así que vamos a empezar por generar un certificado para el servidor. Copiar el ejemplo config archivos en el directorio correcto:

mkdir -r /etc/openvpn/easy-rsa/
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Editar el archivo /etc/openvpn/easy-rsa/vars y configura los valores KEY_ :

export KEY_COUNTRY="ES"
export KEY_PROVINCE="VA"
export KEY_CITY="Gandia"
export KEY_ORG="Kacharreando"
export KEY_EMAIL="me@mihost.midominio"
export KEY_CN="KacharreandoVPN"
export KEY_NAME="KacharreandoVPN"
export KEY_OU="KacharreandoVPN"
export KEY_ALTNAMES="KacharreandoVPN"

Marcaremos las opciones de KEY_CN y KEY_NAME en el archivo con # y las sustituiremos por estas anteriores que hemos visto.

Con esto realizado, ejecutaremos los siguientes comandos para construir la autoridad de certificación (CA):

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-ca

El siguiente paso es generar los parámetros Diffie Hellman para el servidor OpenVPN:

./build-dh

Certificados de servidor

Una vez que tenemos listo el servidor, ya podemos generar y firmar los certificados de servidor. easy-rsa también ofrece un script que hace todo el trabajo necesario. Vas a tener que introducir algunos parámetros para el certificado de servidor. La mayoría de los valores por defecto de /etc/openvpn/easy-rsa/vars será correcta.

./build-key-server KacharreandoVPN

Se te preguntará “Sign the certificate? [y/n]” y “1 out of 1 certificate requests certified, commit? [y/n]”, contesta ambas preguntas con yes.

Los certificados y las claves de servidor se han generado en el subdirectorio /etc/openvpn/easy-RSA/keys/. Ahora tendremos que copiarlos a /etc/openvpn/:

cd keys/
cp KacharreandoVPN.crt KacharreandoVPN.key ca.crt dh2048.pem /etc/openvpn/

Certificados de Clientes

Cada cliente VPN también necesita un certificado para autentificarse en el servidor. Normalmente se crea un certificado diferente para cada cliente. Para que puedas crear el certificado, introduce los siguientes comandos en una terminal con el usuario root:

cd /etc/openvpn/easy-rsa/
source vars
./build-key client1

Los archivos generados son los siguientes:

  • /etc/openvpn/ca.crt
  • /etc/openvpn/easy-rsa/keys/client1.crt
  • /etc/openvpn/easy-rsa/keys/client1.key

Copiaremos los archivos generados a la home de nuestro ordenador, el que vamos a conectar con OpenVPN. Desde el cliente realizamos los siguientes comandos para copiar los archivos a /home/:

scp -P 2424 root@1.2.3.4:/etc/openvpn/ca.crt ~/
scp -P 2424 root@1.2.3.4:/etc/openvpn/easy-rsa/keys/client1.crt ~/
scp -P 2424 root@1.2.3.4:/etc/openvpn/easy-rsa/keys/client1.key ~/

Una vez copiados a nuestro ordenador es conveniente borrarlos del servidor para que nadie pueda acceder a ellos en caso de que nos hackeen el servidor. Utilizando el siguiente comando borraríamos los archivos:

rm /etc/openvpn/easy-rsa/keys/client*

Configurando el enrutado y el firewall

Para que OpenVPN enrute todo el tráfico desde el cliente a través del servidor y tengamos la IP del servidor, tenemos que configurar algunas cosas relacionados con la red. En primer lugar, tendrás que asegurarte de que el reenvío de puerto (port forwarding) esté habilidato en el kernel. Si la salida del siguiente comando es 1 no tienes que configurar nada:

cat /proc/sys/net/ipv4/ip_forward

Si no, tendrás que editar el archivo /etc/sysctl.conf y cambiar estas variables (tendrás que reiniciar el servidor):

# Packet forwarding
net.ipv4.ip_forward = 1
net.inet.ip.fastforwarding = 1

Con el reenvío de puerto (port forwarding) habilitado, todo lo que falta es permitir que el tráfico en el firewall y configurar el enrutamiento. Con varias guias de internet he creado este script en bash:

# OpenVPN (depending on the port you run OpenVPN)
iptables -A INPUT -i venet0 -m state --state NEW -p udp --dport 1194 -j ACCEPT

# Allow TUN interface connections to OpenVPN server
iptables -A INPUT -i tun+ -j ACCEPT

# Allow TUN interface connections to be forwarded through other interfaces
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o venet0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i venet0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

# NAT the VPN client traffic to the internet
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

iptables -A OUTPUT -o tun+ -j ACCEPT

Este script lo he copiado de internet, por lo que no voy a escribir que significa cada una de las partes, además no me llevo muy bien con iptables, por lo que simplemente copia el texto y pégalo en un archivo en el servidor. Yo lo he llamado firewall.sh y le he dado permisos de ejecución (chmod +x firewall.sh). El script tiene que ejecutarse cada vez que el servidor arranque, así que lo que he hecho ha sido añadirlo al crontab. Para añadirlo ejecuta crontab -e y añade lo siguiente:

@reboot /root/firewall.sh

NOTA IMPORTANTE: Muchas de las guías que verás por internet hacen los cambios en la interfaz eth0. Sin embargo en OpenVZ la interfaz por defecto se llama venet0.

Configurar y Arrancar el servidor OpenVPN

Ya tenemos todo listo! En el paso final necesitamos crear un archivo de configuración para el servidor OpenVPN. Afortunadamente no tenemos que crearlo desde cero, OpenVPN viene con archivos de configuración de ejemplo que podremos usar. Simplemente copiaremos y los extraeremos en el directorio correcto:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gzip -d /etc/openvpn/server.conf.gz

Ahora editaremos el archivo /etc/openvpn/server.conf y nos aseguraremos que añades los certificados y claves que has creado anteriormente. Tiene que quedar algo así:

ca ca.crt
cert KacharreandoVPN.crt
key KacharreandoVPN.key
dh dh2048.pem

Y con esto ya podríamos arrancar el servidor OpenVPN y usarlo sin problemas. Solo tendríamos que teclear en la consola:

service openvpn start

Últimos Ajustes

Ya tienes todo listo para establecer un túnel VPN seguro entre el cliente y el servidor OpenVPN y utilizar su IP.

Si estás usando un firewall, necesitas abrir el puerto 1194 para permitir las conexiones entrantes a tu servidor OpenVPN. Lo más cómodo es utilizar ufw en debian, por lo que puedes utilizar el comando siguiente para abrir el puerto:

sudo ufw allow 1194

Como último punto vamos a dejar configurado el acceso ssh en el puerto por defecto (22) y sin acceso root, así añadiremos una capa más de seguridad al servidor. Cuando tengamos que acceder a root lo haremos desde dentro del servidor.

Editaremos el archivo dropbear:

nano  /etc/default/dropbear

Y añadiremos las siguientes opciones:

nano  /etc/default/dropbear
DROPBEAR_PORT=22
DROPBEAR_EXTRA_ARGS="-w -g"

La primera opción es para que inicie dropbear al arrancar el servidor. Cambiamos el puerto usado temporalmente 2424 para desinstalar openssh a el puerto por defecto 22. Los argumentos que ponemos «-w -g», la opción «-w» es para no acceso root, y «-g» para no acceso de clave de root.

Otra opción posible es -s para desactivar los accesos con clave. En este caso necesitarías un par de claves para autentificarte.

Una vez que lo tenemos configurado, reiniciamos dropbear:

service dropbear restart

Conclusion

Por el precio que ofrece RamNode, es una gran oferta como VPS para realizar tus pruebas de servidor y aprender de ello. Tiene un rendimiento para ejecutar diversos servicios y como OpenVPN servidor.

El único inconveniente es que no he sido capaz de conectarme vía mi escritorio de Ubuntu. Posiblemente he generado de manera incorrecta las claves del cliente y por lo tanto no lo he conseguido.

En el próximo artículo haré un artículo para configurarlo de manera mucho más sencilla.

Espero que lo disfrutes. Artículo basado en este en inglés.

Publicado en: Servicios en la nube

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

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

Barra lateral principal

Descubre Más

Generar documentación para los scripts de bash

Generar documentación para los scripts de bash

julio 1, 2022

Drawing edita imágenes de manera sencilla

Instalar drawing con soporte Webp

enero 20, 2022

Primeros pasos con tus finanzas personales con Beancount

Primeros pasos para controlar tus finanzas con Beancount

noviembre 29, 2021

Placa impresa pcb roja

How to root Galaxy Tab 2 10.1 in linux with heimdall

octubre 15, 2021

Tags

Beginner Comienzo Expert Intermediate Markdown

Footer

Temas de Kacharreo

Supongo que habrás llegado hasta aquí porque eres un culo inquieto, o simplemente tienes curiosidad por algún tema.

Hasta que tu mente no se queda extasiada resolviendo aquello que no te deja dormir no has parado.

Vas a encontrar temas sobre Ubuntu, Cachivaches que hacen cosas, Servicios en la Nube que puedes aprovechar, y temas sobre Rasberry Pi. Hasta es posible que a veces introduzca temas relacionados.

Todo es posible.

Vaya comentarios!!

  • luidelkacha en Instalar y configurar un proxy http en Ubuntu con Squid – Mega Guía
  • Pichibw en Instalar y configurar un proxy http en Ubuntu con Squid – Mega Guía
  • luidelkacha en Un potente editor de texto para nuestro sistema operativo Ubuntu

Canal en Telegram

telegram-iconSíguenos en Telegram

Buscar las llaves

Temas Dispersos

Beginner Comienzo Expert Intermediate Markdown

Creative Commons Atribución -CompartirIgual 4.0 Internacional pa las tontás que publico © 2025 · Acceder
Aviso Legal y Política de Privacidad | Política de Cookies

Gestionar el Consentimiento de las Cookies
Utilizamos cookies para optimizar nuestro sitio web y nuestro servicio.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar {vendor_count} proveedores Leer más sobre estos propósitos
Ver preferencias
{title} {title} {title}