GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN

VPN significa Red Privada Virtual.

Una red privada virtual permite que una computadora envíe y reciba datos de una red privada a otra red privada que está conectada a través de una red pública (Internet).

Esto es útil para aquellos que están fuera de la intranet de la empresa y les gusta conectarse a la red de la oficina de forma segura para acceder a los servidores internos. La VPN también es útil cuando conecta varias sucursales juntas.

Incluso cuando no conecta varias sucursales juntas, aún puede usar la configuración de VPN para permitir que sus empleados se conecten de forma remota desde su computadora portátil al centro de datos y acceder a los sistemas.

A veces, la empresa compra líneas arrendadas para formar WAN (red de área amplia) y se comunica con sus sucursales. Aunque la línea arrendada es segura y confiable, es costosa.

VPN llena el vacío al proporcionar una conexión virtual punto a punto a través de la red pública. Una VPN puede crecer para adaptarse fácilmente a más usuarios en diferentes ubicaciones geográficas.

Tipos de VPN

En un nivel alto, los siguientes son dos tipos de VPN:

  • Acceso remoto
  • Sitio a sitio

El acceso remoto consiste en conectar una computadora individual a una red a través de VPN. “Sitio a sitio” conecta dos redes a través de VPN.

Qué es OpenVPN

Del hombre de OpenVPN:

OpenVPN es un demonio VPN de código abierto de James Yonan. OpenVPN es un demonio VPN robusto y altamente flexible. OpenVPN es compatible con seguridad SSL/TLS, puentes Ethernet, transporte de túneles TCP o UDP a través de proxies o NAT, compatibilidad con direcciones IP dinámicas y DHCP, escalabilidad para cientos o miles de usuarios y portabilidad para la mayoría de las principales plataformas de sistemas operativos.

Este tutorial explica el proceso para instalar y configurar el servidor y el cliente OpenVPN para acceso remoto.

Yo. Configuración de OpenVPN:lado del servidor

1. Instalar OpenVPN

Instale el paquete openvpn tanto en el servidor como en la máquina cliente.

$ sudo apt-get install openvpn

Usa el administrador de paquetes respectivo de la distribución que estés trabajando. Si está utilizando yum, haga lo siguiente

$ yum install openvpn

2. Crear directorios y establecer variables de entorno

Cree un directorio dentro de /etc/openvpn y copia el easy-rsa contenidos a la misma. Esto se hace para asegurarse de que los cambios realizados en los scripts no se pierdan cuando se actualice el paquete. Cambie el propietario como usuario actual para que el usuario actual tenga permiso para crear archivos.

$ sudo mkdir /etc/openvpn/easy-rsa

$ sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa

$ sudo chown -R $USER /etc/openvpn/easy-rsa/

A continuación, edite /etc/openvpn/easy-rsa/vars para adaptarse a su entorno.

export KEY_COUNTRY="IN"
export KEY_PROVINCE="TN"
export KEY_CITY="CHN"
export KEY_ORG="tgs"
export KEY_EMAIL="[email protected]"

3. Creando la CA – Autoridad Certificadora (Certificado Raíz)

El siguiente paso en la construcción del servidor openvpn es establecer una infraestructura de clave pública para que el servidor y los clientes puedan autenticarse entre sí.

$ cd /etc/openvpn/easy-rsa/

$ source vars

$ ./clean-all

$ ln -s openssl-1.0.0.cnf openssl.cnf

$ ./build-ca

Generating a 1024 bit RSA private key
........++++++
......++++++
unable to write 'random state'
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IN]:
State or Province Name (full name) [TN]:
Locality Name (eg, city) [CHN]:
Organization Name (eg, company) [tgs]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]:lakshmanan
Email Address [[email protected]]:[email protected]

Una vez ./build-ca se completa, verá un archivo llamado "ca.key ” y “ca.crt ” dentro de /etc/openvpn/easy-rsa/keys/

Recuerda que la “.key ” los archivos deben mantenerse confidenciales.

4. Creando certificado para Servidor

El siguiente paso es crear un certificado para nuestro servidor Openvpn.

$ /etc/openvpn/easy-rsa/build-key-server vpnserver
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Tenga en cuenta que vpnserver es el HOSTNAME del servidor. Este comando tomará una entrada del usuario similar a la anterior. Este comando creará el certificado y los archivos de claves para el servidor.

5. Creando certificado para el cliente

El cliente VPN también necesitará un certificado para autenticarse con el servidor. Si desea configurar varios clientes, debe crear un certificado para cada cliente por separado.

$ ./build-key vpnclient1
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

vpnclient1 es el nombre de host del cliente. Este comando creará el certificado y los archivos de claves para el cliente.

6. Crear parámetros Diffie Hellman

$ ./build-dh

Una vez que todos los pasos anteriores se completen con éxito, tendrá muchos archivos de claves y certificados dentro de /etc/openvpn/easy-rsa/keys .

7. Copie los certificados en las ubicaciones respectivas

Hemos creado Certificado Raíz, Certificado de Servidor y Certificado de Cliente. Necesitamos copiarlos en las ubicaciones adecuadas.

$ cd /etc/openvpn/easy-rsa/keys/

$ sudo cp ca.crt vpnserver.crt vpnserver.key dh1024.pem /etc/openvpn/

$ scp ca.crt vpnclient1.key  vpnclient1.crt root@vpnclient1:/etc/openvpn

Ahora hemos copiado el certificado y la clave del cliente en la máquina del cliente. Recuerde usar un medio seguro como scp, mientras copia los archivos clave.

8. Configuración del servidor

OpenVPN proporciona un server.conf predeterminado. Puede modificarlo para adaptarlo a sus necesidades.

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

$ sudo gzip -d /etc/openvpn/server.conf.gz

Edite el archivo "/etc/openvpn/server.conf “.

...
ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh1024.pem
...

Ahora inicie el servidor OpenVPN:

$ sudo /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'server'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

Por defecto, openVPN registrará errores en el archivo syslog.

II. Configuración de OpenVPN:lado del cliente

9. Configurar archivos de configuración del cliente

Ahora configuraremos el openVPN para que funcione como cliente. Recuerde que ya hemos instalado el paquete openvpn en el cliente y tenemos "ca.crt", "vpnclient1.key", vpnclient1.crt" en /etc/openvpn/

Copie la muestra client.conf a /etc/openvpn .

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Edite el /etc/openvpn/client.conf .

...
# Specify that this is openvpn client
client

remote vpnserver 1194

ca ca.crt

cert vpnclient1.crt

key vpnclient1.key
...

Ahora inicie OpenVPN en el cliente

$ /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'client'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255

10. Pruebe la configuración de VPN

Haga ping al servidor vpn desde la máquina cliente para ver si la VPN funciona o no.

$ ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=2.14 ms

Si puede hacer ping, entonces ha realizado la configuración correcta.

Tenga en cuenta lo siguiente:

  1. Asegúrese de que el cliente y el servidor utilicen el mismo protocolo y número de puerto.
  2. El cliente y el servidor deben usar la misma configuración con respecto a algunos parámetros como tamaño de clave, compresión, etc...
  3. En caso de cualquier problema, aumente el nivel de detalle del registro en la configuración y consulte el archivo syslog para solucionar el problema.

Linux
  1. Cómo configurar el servidor y el cliente NTP en Debian 9 Stretch Linux

  2. Cómo configurar el servidor y el cliente NFS en Rocky/Alma Linux 8

  3. Cómo instalar y configurar cPanel en un servidor Linux

  4. Cómo instalar y configurar el servidor y cliente YPServ Linux NIS

  5. Cómo instalar y configurar el servidor y el cliente NTP de Linux

Cómo configurar un servidor VPN usando Pritunl en Ubuntu 18.04 LTS

Cómo configurar el servidor de respaldo usando Rsnapshot en Linux

Cómo configurar el servidor de transmisión de medios usando Jellyfin en Linux

Cómo configurar el cliente y el servidor NFS en Linux

Cómo configurar el servidor y el cliente NTP en Ubuntu 20.04 LTS

Cómo conectarse a una VPN con OpenVPN