GNU/Linux >> Tutoriales Linux >  >> Panels >> OpenVPN

Configuración de un servidor OpenVPN con VyOS y Viscosity

Las redes privadas virtuales (VPN) se pueden utilizar para una serie de aplicaciones muy útiles. Puede conectarse de forma segura a cualquier punto de acceso WiFi público. Puede superar las restricciones de bloqueo geográfico en sus sitios web favoritos. E incluso puede conectarse a la red de su hogar u oficina desde cualquier parte del mundo, como si estuviera sentado en su escritorio. Esta guía lo guiará a través del proceso de configurar su propio servidor OpenVPN y conectarse a él con su copia de Viscosity.

Ejecutar su propio servidor OpenVPN le permitirá encriptar todo lo que hace en Internet, para que pueda realizar sus operaciones bancarias en línea de manera segura en el WiFi gratuito de su café favorito. Todo lo que envíe a través de la conexión VPN se cifrará desde su dispositivo hasta que llegue a su servidor OpenVPN en casa. La configuración de su servidor OpenVPN para acceder a la red de su hogar u oficina le brinda acceso completo a todos sus archivos en su red.

Esta guía lo guiará a través de los pasos necesarios para configurar un servidor OpenVPN en un host VyOS que le permita acceder de manera segura a la red de su hogar/oficina desde una ubicación remota y, opcionalmente, enviar todo el tráfico de su red a través de él para que pueda acceder a Internet. también de forma segura.

Preparación

Para esta guía, asumimos:

  • Ya ha instalado la última versión de VyOS (1.1 en el momento de escribir este artículo)
  • Su cuenta tiene sudo privilegios para esta instalación
  • Esta instalación de VyOS es una instalación nueva
  • Ya tiene una copia de Viscosity instalada en su dispositivo cliente

Si necesita descargar e instalar una copia de VyOS, puede encontrar una copia en http://vyos.net/wiki/Main_Page. No cubriremos los detalles de la configuración de una instancia de VyOS, se pueden encontrar muchas guías en línea. Si está ejecutando una versión diferente de VyOS, es muy probable que se apliquen muchos o incluso todos los pasos descritos en esta guía. Si desea configurar un servidor OpenVPN en un sistema operativo diferente, consulte nuestras otras guías.

Si aún no tiene una copia de Viscosity instalada en su cliente, consulte esta guía de configuración para instalar Viscosity (Mac | Windows).

Soporte

Lamentablemente, no podemos brindar asistencia directa para configurar su propio servidor OpenVPN. Brindamos esta guía como cortesía para ayudarlo a comenzar y aprovechar al máximo su copia de Viscosity. Hemos probado minuciosamente los pasos de esta guía para asegurarnos de que, si sigue las instrucciones que se detallan a continuación, debería estar bien encaminado para disfrutar de los beneficios de ejecutar su propio servidor OpenVPN.

Para obtener más información o ayuda con VyOS, hay una variedad de recursos y foros disponibles en https://vyos.io/

Cómo empezar

Asumiremos que ya ha configurado sus interfaces de red como tales:

  • 'EXTERIOR':eth0 conectado a Internet
  • 'DENTRO':eth1 conectado a su red doméstica local

Generando Certificados y Claves

El siguiente paso es generar sus configuraciones para el servidor y sus clientes, así como los certificados que las acompañan. Puede hacerlo fácilmente siguiendo la Guía de creación de certificados y claves. Genere todo en su PC o Mac y luego tome nota de la ruta a su servidor carpeta que se crea, usaremos los archivos aquí más adelante.

Si usa el servidor DNS predeterminado (10.8.0.1), deberá configurar un servidor DNS usted mismo; las instrucciones se encuentran al final de este artículo. Recomendamos en su lugar usar un servidor DNS existente, un servidor DNS disponible públicamente como el de Google (8.8.8.8 y 8.8.4.4) es el más fácil.

Ahora necesitamos copiar los siguientes archivos a /config/auth/ directorio en su dispositivo VyOS que estará en el servidor carpeta que openvpn-generate acaba de crear, recomendamos usar SCP. Si no está familiarizado con SCP, tenemos ayuda sobre cómo transferir archivos con SCP en nuestra Guía de introducción.

  • ca.crt
  • servidor.crt
  • servidor.clave
  • dh.pem

Si está utilizando SCP desde la línea de comandos, un comando de ejemplo sería
scp path/to/server/ca.crt [email protected]:/config/auth/

Configuración del servidor OpenVPN

Hay una serie de configuraciones diferentes que debemos personalizar en la configuración de nuestro servidor OpenVPN. En la terminal, ingrese al modo de configuración escribiendo:

configure

Debería ver el cambio de aviso de $ a # . Si comete un error al ingresar los siguientes comandos de configuración, puede eliminar un comando ingresado anteriormente repitiéndolo, pero reemplazando la palabra 'establecer' al principio con la palabra 'eliminar'.

Pegue lo siguiente en la ventana del terminal:

# Configure this OpenVPN instance to run as the VPN server
set interfaces openvpn vtun0 mode server

# The OpenVPN server needs to know the location of the Diffie Hellman file
#NOTE: Depending on how you generated your keys, this file name might be 'dh.pem' instead
set interfaces openvpn vtun0 tls dh-file '/config/auth/dh.pem'

# Our VPN connection will be transported over UDP
set interfaces openvpn vtun0 openvpn-option "--proto udp"

# The server needs to keep a record of client virtual IP addresses so that they
# can be reassigned if the server goes down
set interfaces openvpn vtun0 openvpn-option "--ifconfig-pool-persist ipp.txt"

# To ensure that each side of the VPN knows if the connection has been severed,
# we want to ping each side every 10 seconds. If either side fails to recieve a
# ping within 2 minutes, then it will assume the other side is down
set interfaces openvpn vtun0 openvpn-option "--keepalive 10 120"

# There can be security issues if you run the OpenVPN server as root, so we will
# downgrade the user and group
set interfaces openvpn vtun0 openvpn-option "--user nobody --group nogroup"

# To avoid attempting to access resources that may no longer be accessible on
# restart
set interfaces openvpn vtun0 openvpn-option "--persist-key --persist-tun"

# To write (and rewrite) a short summary of current VPN connections every minute
# to a file
set interfaces openvpn vtun0 openvpn-option "--status openvpn-status.log"

# The verbosity of this connection logging (displayed in the Viscosity 'Details'
#  window) can range from 0 (silent) to 9 extremely verbose. We will use the 
# default of 3
set interfaces openvpn vtun0 openvpn-option "--verb 3"

# To prevent more than 10 duplicates of the same log message in a row from
# flooding the Viscosity log
set interfaces openvpn vtun0 openvpn-option "--mute 10"

# The credential files
set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt'
set interfaces openvpn vtun0 tls cert-file '/config/auth/server.crt'
set interfaces openvpn vtun0 tls key-file '/config/auth/server.key'

# The server will use the default OpenVPN port (1194)
set interfaces openvpn vtun0 openvpn-option "--port 1194"

# We need the VPN to create a tun network interface through which we can 
# route all our traffic:
set interfaces openvpn vtun0 openvpn-option "--dev vtun0"

# The VPN requires a private IP subnet. We will use the default OpenVPN IP
# subnet
set interfaces openvpn vtun0 server subnet '10.8.0.0/24'

# We want VPN clients connected to this server to be able to access any hosts
# accessible on your home network. We are assuming that your local network
# subnet is 192.168.0.x/24. If it is something else, you will need to change the
# IP address in the command below.
set interfaces openvpn vtun0 server push-route 192.168.0.0/24

# For enhanced security, set a cipher and auth hash
set interfaces openvpn vtun0 openvpn-option "--cipher AES-256-CBC"
set interfaces openvpn vtun0 openvpn-option "--auth SHA256"

# Lastly, we want to allow hosts on the home network to be able to see VPN
# clients connected to the OpenVPN server
set interfaces openvpn vtun0 openvpn-option "--client-to-client"

Preste especial atención a la dirección IP en set interfaces openvpn vtun0 server push-route 192.168.0.0/24 . Asegúrese de que esta subred coincida con la subred IP de la LAN de su hogar/oficina. Si no está configurando este servidor VPN para acceder a la LAN de su hogar/oficina, puede omitir esta línea por completo.

Reglas de cortafuegos

Usaremos el firewall instalado por defecto en VyOS. Si está instalando OpenVPN en un servidor que ya tiene su propia configuración de firewall, asegúrese de agregar las reglas para permitir nuestro tráfico de OpenVPN. Sin embargo, si este es solo un servidor VyOS independiente simple, la configuración del firewall a continuación debería ser suficiente para que su servidor OpenVPN esté en funcionamiento.

Todavía en modo de configuración , pegue lo siguiente en la ventana de la terminal:

# First we will set the rules for traffic passing through the server. We want
# the firewall to allow traffic for existing connections to the server, and drop 
# any new ones:
set firewall name OUTSIDE-IN default-action 'drop'
set firewall name OUTSIDE-IN rule 10 action 'accept'
set firewall name OUTSIDE-IN rule 10 state established 'enable'
set firewall name OUTSIDE-IN rule 10 state related 'enable'

# Next we will set the rules to allow the local network to talk to the outside world
set firewall name OUTSIDE-LOCAL default-action 'drop'
set firewall name OUTSIDE-LOCAL rule 10 action 'accept'
set firewall name OUTSIDE-LOCAL rule 10 state established 'enable'
set firewall name OUTSIDE-LOCAL rule 10 state related 'enable'</code>

# If you would like the ability to ping your VyOS server externally, add the following
set firewall name OUTSIDE-LOCAL rule 20 action 'accept'
set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request'
set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp'
set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'

# If you would like the ability to SSH into your server externally (without a VPN connected), add the following
# NOTE - This can be a security risk and is not recommended
set firewall name OUTSIDE-LOCAL rule 30 action 'drop'
set firewall name OUTSIDE-LOCAL rule 30 destination port '22'
set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 30 recent count '4'
set firewall name OUTSIDE-LOCAL rule 30 recent time '60'
set firewall name OUTSIDE-LOCAL rule 30 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 31 action 'accept'
set firewall name OUTSIDE-LOCAL rule 31 destination port '22'
set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'

# Allow external connections to the OpenVPN port. This will allow you to VPN to your server
# from somewhere outside your local network (like a coffee shop)
set firewall name OUTSIDE-LOCAL rule 40 action 'accept'
set firewall name OUTSIDE-LOCAL rule 40 destination port '1194'
set firewall name OUTSIDE-LOCAL rule 40 protocol 'udp'

# Apply these firewall policies:
set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'

# Lastly, we need to enable NAT masquerade:
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '10.8.0.0/24'
set nat source rule 100 translation address 'masquerade'
set nat source rule 200 outbound-interface 'eth1'
set nat source rule 200 source address '10.8.0.0/24'
set nat source rule 200 translation address 'masquerade'

Servidor DNS

Si planea cifrar todo el tráfico de red a través de su servidor VPN, se recomienda habilitar su propio servidor DNS. VyOS tiene un reenviador de DNS instalado de forma predeterminada que podemos usar para proporcionar nuestro propio servidor DNS para la conexión VPN, para evitar ataques relacionados con DNS.

Todavía en modo de configuración , pegue lo siguiente en la ventana del terminal:

# We will set the DNS forwarder to store 100 lookups locally, to speed up 
# repeated DNS requests:
set service dns forwarding cache-size '100'

# DNS queries will be resolved coming from the local network:
set service dns forwarding listen-on 'eth1'

# DNS queries will be resolved coming from our VPN connection:
set service dns forwarding listen-on 'vtun0'

# We will use the Google DNS servers (you are free to use your DNS resolution
# service of choice):
set service dns forwarding name-server '8.8.8.8'
set service dns forwarding name-server '8.8.4.4'

Ahora que hemos terminado de establecer la configuración, guarde los cambios ingresando lo siguiente en la terminal:

commit;save

y salir del modo de configuración:

exit

Configuración del enrutador

Si se puede acceder directamente a su servidor VyOS , entonces puedes saltarte esta sección . No hay enrutador para configurar.

Sin embargo, si su servidor VyOS está detrás de un enrutador (como en el WiFi de su hogar), deberá configurar su enrutador para permitir el tráfico VPN. Debido a los diferentes modelos de enrutadores y configuraciones de red, no podemos proporcionar una guía paso a paso sobre cómo configurar su enrutador para permitir el tráfico de VPN. Sin embargo, es probable que deba cambiar algunas configuraciones, por lo que las describiremos aquí.

Como el enrutador dirigirá todo el tráfico hacia y desde su servidor OpenVPN, deberá configurar el reenvío de puertos para que el servidor OpenVPN sea accesible desde el exterior. El reenvío de puertos puede estar en la sección de la interfaz de administración de su enrutador llamada 'Servidores virtuales'. En general, deseará reenviar cualquier tráfico entrante al enrutador en el puerto OpenVPN (1194). Deberá configurar una regla para enviar cualquier tráfico UDP en estos puertos a la dirección IP local de su servidor OpenVPN (que probablemente sea algo en el rango 192.168.0.x).

Si ha configurado el reenvío de puertos, anote también su dirección IP de WAN externa. . Esta es la dirección IP asignada a su enrutador por su proveedor de servicios de Internet (ISP). Esta dirección será necesaria cuando configure su conexión en Viscosity a continuación.

La otra configuración principal del enrutador que deberá considerar es el enrutamiento estático. Debido a que tendrá una VPN configurada, se enviará tráfico a su enrutador con una IP de origen o destino en el rango 10.8.0.x. Este tráfico deberá tener un enrutamiento estático para garantizar que cuando un host recibe una solicitud del cliente VPN (en la subred 10.8.0.x) y envía una respuesta a esa dirección, el enrutador sabe cómo convertir el 10.8. 0.x dirección IP en una dirección que entienda (es decir, 192.168.0.x). Por lo tanto, deberá configurar una regla de enrutamiento estático que tenga las siguientes propiedades:

Destino:10.8.0.0Máscara de subred:255.255.255.0Puerta de enlace predeterminada:IP de su servidor

donde su-servidor-IP es la dirección IP de su servidor OpenVPN en la red local (algo en el rango 192.168.0.x).

Configuración de la viscosidad

El último paso es configurar la Viscosidad. Gracias a openvpn-generate, esto es tan fácil como importar y conectarse.

Importando

Copie su archivo *.visz que creó con openvpn-generate a su máquina Mac o Windows con Viscosity instalado y haga doble clic en el archivo. Debería ver un aviso de que la configuración se importó correctamente.

Una vez importado, edite su conexión y vaya a la pestaña Avanzado. Agregue los siguientes dos comandos en nuevas líneas:

cipher AES-256-CBC
auth SHA256

Conectando y usando su conexión VPN

Ahora está listo para conectarse. Haga clic en el ícono Viscosity en la barra de menú de macOS o en la bandeja del sistema de Windows para abrir el menú Viscosity, seleccione la conexión que importó y Viscosity se conectará.

Para verificar que la VPN esté funcionando, puede abrir la ventana Detalles desde el menú Viscosidad. Esto le permitirá ver los detalles de la conexión, el tráfico y el registro de OpenVPN.



Eso es todo, ha configurado su propio servidor OpenVPN. ¡Felicitaciones, ahora puede disfrutar de los beneficios de operar su propio servidor OpenVPN!


OpenVPN
  1. Cómo instalar y configurar un servidor OpenVPN en Ubuntu 22.04

  2. Cómo instalar y alojar un servidor OpenVPN con Docker

  3. Configuración de un servidor de ofuscación con Obfsproxy y Viscosity

  4. Instale y configure el servidor OpenVPN en Ubuntu 20.04

  5. Instalar y configurar el servidor OpenVPN FreeBSD 12

Configuración de un servidor OpenVPN con Sophos UTM y Viscosity

Configuración de un servidor OpenVPN con Sophos XG y Viscosity

Configuración de un servidor OpenVPN con Synology y Viscosity

Configuración de un servidor OpenVPN con enrutador Tomato y Viscosity

Configuración de un servidor OpenVPN con Ubiquiti EdgeRouter (EdgeOS) y Viscosity

Configuración de un servidor OpenVPN con Ubuntu y Viscosity