You are on page 1of 14

Configuración básica de servidor OpenVPN (Centos 7):

Instalar el repositorio epel-release.


[root@server ~]# yum install epel-release

1
Se instala la aplicación:
[root@server ~]# yum install openvpn easy-rsa

2
3
4
Se accede al directorio de easy-rsa, donde se ubican los archivos necesarios para la configuración:
[root@server ~]# cd /usr/share/easy-rsa/3.0.8

cd
Si se desea, se puede copiar el contenido al directorio de openvpn: (en mi caso lo haré, por comodidad de
configuración)
[root@server ~]# cp -r * /etc/openvpn/server/.

5
Cambiamos al directorio dónde se copiaron los archivos:
[root@server ~]# cd /etc/openvpn/server/

6
Se inicia el PKI (Public Key Infrastructure) y se construye la autoridad de certificación (CA):
[root@server server]# ./easyrsa init-pki
[root@server server]# ./easyrsa build-ca nopass

7
8
Se genera y firma el certificado del servidor:
[root@server server]# ./easyrsa gen-req serverA nopass
[root@server server]# ./easyrsa sign-req server serverA nopass

9
Se genera y firma el certificado para el cliente:
[root@server 3.0.8]# ./easyrsa gen-req clientA nopass
[root@server 3.0.8]# ./easyrsa sign-req client clientA nopass

se genera el dh.pem (parámetros de Diffie-Hellman) que establece la fortaleza en el intercambio de las claves:
[root@server 3.0.8]# ./easyrsa gen-dh

Copiar el archivo de configuración ejemplo al directorio de configuración:


[root@server openvpn]# cp

10
/usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf
/etc/openvpn/.

Editamos el archivo ‘/etc/openvpn/server.conf’:


[root@server ~]# vi /etc/openvpn/server.conf

Se edita el archivo /etc/openvpn/server.conf y se configuran las rutas correctas de los certificados y llaves, para
este ejemplo, quedaría como se muestra a continuación.

# Any X509 key management system can be used.


# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).

ca /etc/openvpn/server/pki/ca.crt
cert /etc/openvpn/server/pki/issued/serverA.crt
key /etc/openvpn/server/pki/private/serverA.key # This file should be kept secret

# Diffie hellman parameters.


# Generate your own with:
# openssl dhparam -out dh2048.pem 2048

dh /etc/openvpn/server/pki/dh.pem
.
topology subnet
.
.
push "redirect-gateway def1 bypass-dhcp"
.
.
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
.
.
# The second parameter should be '0'
# on the server and '1' on the clients.
;tls-auth ta.key 0 # This file is secret
.
.
# You can uncomment this out on
# non-Windows systems.
user nobody
group nobody
Si alguno de los parámetros resaltados no se configura, el servicio no podrá ser iniciado.

Solo ejecutar en caso de habilitar tls:


[root@server 3.0.8]# openvpn --genkey --secret /etc/openvpn/ta.key

Se habilita el ip forwarding.
[root@server ~]# sysctl -w net.ipv4.ip_forward=1

11
Para hacerlo de forma persistente:
[root@server ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.d/sysctl-additionals.conf

Establecer las reglas del firewall:


[root@server ~]# firewall-cmd --zone=trusted --add-masquerade --permanent
[root@server ~]# firewall-cmd --set-default-zone=trusted
[root@server ~]# firewall-cmd --add-service=openvpn --permanent
[root@server ~]# firewall-cmd --reload

Deshabilitar SElinux:
[root@server ~]# setenforce 0

Se comprueba su funcionamiento con:


[root@server ~]# openvpn --config server.conf

La siguiente línea al final de la salida, indica que levantó correctamente:


.... Initialization Sequence Complete

Se inicia y habilita el servidor:


[root@server ~]# systemctl start openvpn@server
[root@server ~]# systemctl enable openvpn@server

Se puede comprobar que la interfaz virtual se haya habilitado con ‘ip addr’:
[root@server ~]# ip addr
.
.
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN
group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::dab7:46e8:cc6e:4b79/64 scope link flags 800
valid_lft forever preferred_lft forever

Configuración del cliente

Instalar el repositorio epel-release.


[root@client ~]# yum install epel-release

Se instala la aplicación:

12
[root@client ~]# yum install openvpn

Se comprueba la conexión entre los equipos (servidor y cliente), y se copian los certificados del generados en el
servidor hacia el cliente:
[root@server ~]# cd /etc/openvpn/server/pki/
[root@server pki]# scp ca.crt root@ip_client:/etc/openvpn/client/.
[root@server pki]# scp issued/clientA.crt root@ip_client:/etc/openvpn/client/.
[root@server pki]# scp private/clientA.key root@ip_client:/etc/openvpn/client/.

Se edita el archivo de configuración para el cliente:


[root@client ~]# vi /etc/openvpn/clientA.conf

y se agregan las siguientes líneas:


client
dev tun
proto udp
remote ip_server 1194
ca client/ca.crt #en caso de usar otra ruta, modificarla
cert client/clientA.crt #en caso de usar otra ruta, modificarla
key client/clientA.key #en caso de usar otra ruta, modificarla
verb 5

remote-cert-tls server
auth-nocache
cipher AES-256-CBC

Se guarda y se ejecuta la configuración para comprobar el funcionamiento::


[root@client ~]# openvpn --config clientA.conf

La siguiente línea al final de la salida, indica que la VPN levantó correctamente:


.... Initialization Sequence Complete

Si la VPN levantó correctamente, se puede habilitar para su uso de dos maneras:

1. ejecutar en segundo plano y no asociada a la sesión actual:


[root@client ~]# nohup openvpn --config clientA.conf&

2. Como servicio:
[root@client ~]# systemctl start openvpn@clientA

Al igual que con el servidor, se debió crear una interfaz virtual:


[root@server ~]# ip addr
.
.
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN
group default qlen 100

13
link/none
inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::a2fc:5174:af3f:5c3e/64 scope link flags 800
valid_lft forever preferred_lft forever

Con lo anterior, la VPN está establecida y funcional.

14

You might also like