OpenVPN en Centos

Durante los últimos dos meses me he encontrado repentinamente al menos en cuatro ocasiones ante la necesidad de instalar OpenVPN en Centos. Siempre ha sido un requerimiento de alguna tarea más grande o más «importante», algo como para no perder el tiempo en ello. Sin embargo, el repositorio oficial de Centos no incluye el paquete de OpenVPN, lo cual nos obliga a ejecutar una serie de pasos adicionales. Aqui les dejo una guia de estos pasos que se les ahorrará tiempo a muchos y a mi mismo como referencia futura pues según las probabilidades pronto me tocará otra instalación de OpenVPN en Centos.

– Agregar estas líneas a /etc/yum.conf  para utilizar el repositorio Dag

[dag]
name=Repositorio Dag para Red Hat Enterprise Linux, Centos, Fedora
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

– Instalar las llaves GPG para el repositorio Dag, de otra forma mostrará un error cuando se intente instalar un paquete.

cd /var/tmp
wget [archivo-correspondiente-a-mi-instalacion]
rpm -Uhv [archivo-correspondiente-a-mi-instalacion]
cat /etc/redhat-release

En mi caso particular, el último de los sistemas instalados fue CentOS release 5.5 (Final), luego el comando quedó asi:

cd /var/tmp
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Instalar las bibliotecas requeridas para OpenVPN:

yum install lzo lzo-devel zlib zlib-devel

– Y al final instalar OpenVPN:

yum install openvpn

Copiar para /etc/openvpn los archivos de configuración de muestra:

cp -r /usr/share/doc/openvpn-2.1.4/easy-rsa/ /etc/openvpn/
cp /usr/share/doc/openvpn-2.1.4/sample-config-files/server.conf /etc/openvpn/
cp -r /usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/openssl /etc/openvpn

– Configurar como servidor o cliente: el programa es el mismo para ambas, la función es determinada por el contenido del archivo de configuración. Al final de los pasos anteriores OpenVPN se instaló como servicio, o sea, tiene ya un script en /etc/init.d  y en Centos se puede manipular asi:

service openvpn [start | stop | restart ]

Para arrancar el servicio cuando reinicie el servidor:

chkconfig openvpn on

El servicio lee cualquier archivo en /etc/openvpn con extensión .cnf e inicia el servicio basado en este.

– El próximo paso es crear los certificados y las llaves (en caso de ser servidor) y los archivos de configuración, lo cual no repetiré aquí pues está muy bien documentado en el sitio de openvpn .  Garantizar primero permiso de ejecución a los scripts en el directorio easy-rsa:

cd /etc/openvpn/easy-rsa/2.0
chmod +x clean-all
chmod +x build*
chmod +x vars
chmod +x whichopensslcnf
chmod +x pkitool

 

Configurar el servidor como un router a través de la VPN

– Primero activar el reenvio de paquetes: editar /etc/sysctl.conf y adicionar la linea:

net.ipv4.ip_forward = 1

El siguiente comando lo activa de forma inmediata pero no sobrevive a un reinicio:

 echo 1 > /proc/sys/net/ipv4/ip_forward
 

– Activar las reglas de NAT de iptables.  El siguiente ejemplo debe ajustarlo a su configuración específica, aqui se asume el siguiente escenario:

Subred OpenVPN:  10.8.1.1/24
IP local del servidor: 192.168.0.2
Subred local (LAN):  192.168.0.0/24
Gateway de la LAN: 192.168.0.1
DNS: 192.168.0.1

Desde el shell ejecutar:

iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -j SNAT --to 192.168.0.2
iptables -A FORWARD -d 10.8.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.8.1.0/24 -j ACCEPT

Guardar las reglas:

service iptables save

y asegurar que el servicio iptables se arranque automático al iniciar el servidor:

chkconfig iptables on

Listo!

5 Responses to OpenVPN en Centos

  1. Fidel Dominguez-Valero says:

    Amigo desde hace dos dias estoy buscando la forma de hacer esto mismo pero descargando el repo completo para la pc, dime si tienes algun script o algo, Ya lo estoy haciendo con los repos normales, pero no he encontrado la forma de hacerloo con los de DAG. Alguna idea??

    Gracias de antemano
    Saludos
    Fidel

  2. Diego says:

    He seguido su tutorial para instalar OpenVPN pero falla al iniciar el servicio.
    Donde puedo chequear log u otra informacion que me de una pista del error?

    Muchas Gracias,

    Diego

  3. MIR Imagen says:

    Soy nuevo en VPN y Linux, Realize una website y esta alojada en GoDaddy mi cliente me pidio que el site permitiera hacer una consulta de estados de cuenta en linea a sus clientes. Para eso debo accesar un webservice en el servidor del cliente, pero el quiere que se haga con una VPN por motivos de seguridad.

    Alguien me puede orientar paso a paso como debo hacerlo?
    P.D. Alguien me dijo que comprara en godaddy un servidor dedicado asi que ya lo hice pero no se como hacer nada

  4. ignacio says:

    hola buena tarde, soy nuevo en estos de las redes privadas virtuales podria asesorarme de como creear una paso a paso

Replica a Diego Cancelar la respuesta