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

Configuración de un servidor OpenVPN con CentOS 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 CentOS 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 CentOS 7 . Consulte nuestra Guía de Red Hat para CentOS 8.
  • Tienes raíz acceso a esta instalación
  • Conozca el nombre de sus interfaces de red (instrucciones justo debajo)
  • Esta instalación de CentOS es una instalación nueva
  • Ya tiene una copia de Viscosity instalada en su dispositivo cliente

Si necesita descargar e instalar una copia de CentOS, puede encontrar una copia en https://www.centos.org/download/. No cubriremos los detalles de la configuración de una instancia de CentOS, se pueden encontrar muchas guías en línea. Si está ejecutando una versión diferente de CentOS, 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).

Para obtener el nombre de su interfaz de red principal (acceso WAN), ejecute lo siguiente en su servidor CentOS:
ip route | grep default | awk 'NR==1 {print $(NF-4)}'

Si tiene una segunda interfaz de red para acceder a las máquinas en su red local, también necesitará el nombre de esta cuando configure el firewall y el enrutamiento.

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. Probamos minuciosamente los pasos de esta guía para asegurarnos de que, si sigue las instrucciones que se detallan a continuación, estará bien encaminado para disfrutar de los beneficios de ejecutar su propio servidor OpenVPN.

Para obtener más información o ayuda con CentOS, consulte los foros de la comunidad en https://www.centos.org/forums/

Accediendo a la Interfaz de Línea de Comandos

Los pasos descritos en esta guía se realizan a través de la interfaz de línea de comandos (es decir, terminal) en su servidor CentOS. Si está ejecutando este servidor de forma remota, deberá usar la aplicación SSH para conectarse de forma segura entre su dispositivo cliente y el servidor (para "SSH en" su servidor). Si está configurando su servidor OpenVPN en un servidor privado virtual (VPS), es posible que solo esté familiarizado con la interfaz web. Muchos proveedores de VPS brindan acceso SSH además de la interfaz web. Consulte a su proveedor de VPS para obtener más detalles.

Si es nuevo en SSH, tenemos algunas instrucciones en nuestra Guía de introducción.

Escritorio CentOS

Si tiene acceso local a su servidor CentOS, puede realizar los pasos de esta guía directamente, sin SSHing en el servidor. Los pasos deben realizarse en una ventana de terminal, por lo que el primer paso es abrir una ventana de terminal en CentOS con acceso de root. Desde el escritorio, abra la aplicación de terminal haciendo clic en el menú desplegable "Aplicaciones" en la parte superior izquierda y seleccionando "Terminal" de los Favoritos lista. Esto abre una ventana de terminal desde la que podemos continuar con el resto de la configuración.

Ahora que tiene acceso a la terminal en el servidor CentOS, debe cambiar el usuario a root. Escribe en la ventana de la terminal:

su root

luego ingrese su contraseña de root cuando se le solicite. Verá que ahora ha iniciado sesión en la cuenta raíz.

Cómo empezar

Una vez que haya iniciado sesión en la raíz, debemos asegurarnos de que la lista de repositorios de CentOS esté actualizada escribiendo lo siguiente:

yum update -y

Esto ejecutará y actualizará los paquetes preinstalados. Si se encuentran actualizaciones, se le preguntará si desea continuar. Confirma que lo haces ingresando y . Es posible que se le informe que debe reiniciar después de que se completen las actualizaciones del paquete. Si es así, asegúrese de volver a iniciar sesión en la terminal como raíz después de reiniciar.

A continuación, necesitaremos instalar EPEL (paquetes adicionales para Enterprise Linux), ya que contiene el paquete OpenVPN.

yum install epel-release -y

Ahora que tenemos los paquetes extendidos, podemos continuar e instalar OpenVPN. Escribe lo siguiente en la terminal:

yum install openvpn -y

Generando Configuraciones, 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. Puede seguir la sección para Linux usando el instalador RPM de CentOS 7 y copiar las configuraciones de su cliente fuera del servidor (recomendamos esto), o generar todo en su PC o Mac y copiar el servidor carpeta que se genera en su servidor CentOS.

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.

Una vez que haya generado sus configuraciones, deberá transferir la configuración del servidor a su servidor o transferir las configuraciones de su cliente fuera de su servidor. Si tiene acceso local, una unidad USB es la más fácil. Si no, tenemos ayuda sobre cómo transferir archivos con SCP en nuestra Guía de introducción.

Reenvío de IP

Para reenviar nuestras solicitudes a través de la VPN, queremos que el servidor OpenVPN actúe como un enrutador. Como tal, debemos habilitar el reenvío de IP.

  1. En la terminal, podemos habilitar el reenvío de IP en el servidor CentOS ingresando:
    echo 1 > /proc/sys/net/ipv4/ip_forward
  2. Para garantizar que los hosts en la red doméstica/de la oficina puedan encontrar el servidor VPN, debemos hacer que el servidor responda a cualquier solicitud ARP:
    echo 1 > /proc/sys/net/ipv4/conf/ens33/proxy_arp
    donde ens33 es la interfaz de red de la red doméstica/de la oficina si tiene dos interfaces de red, o su interfaz de red principal (WAN) de lo contrario (consulte la sección Preparación para obtener más información).
  3. Cada vez que reiniciemos el servidor, estos comandos se desharán. Para asegurarnos de que eso no suceda, debemos modificar el archivo sysctl.conf:
    nano /etc/sysctl.conf
  4. Agregue las siguientes líneas al final de este archivo:
    net.ipv4.ip_forward = 1
    y
    net.ipv4.conf.ens33.proxy_arp = 1
  5. Presiona ctrl + x para salir de nano. Guarde los cambios cuando se le solicite.
  6. Para habilitar los cambios realizados en el archivo sysctl.conf, escriba:
    sysctl -p /etc/sysctl.conf

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.

  1. Para instalar el servidor DNS, escriba:
    yum install bind bind-utils bind-libs bind-chroot
  2. Para configurar las reglas de reenvío para nuestro servidor DNS, modificaremos el archivo de configuración:
    nano /etc/named.conf
  3. En la parte superior, verá una colección de instrucciones marcadas como opciones. . Inserte las siguientes dos líneas al final de la lista de opciones:
    forwarders {8.8.8.8;8.8.4.4;}; #IP of upstream nameservers
    forward only; #rely completely on our upstream nameservers
    donde estamos usando los servidores DNS de Google (usted es libre de usar el servicio de resolución de DNS de su elección).
  4. Agregue la subred VPN (10.8.0.0/24) a la escucha y permitir-consulta parámetros en la parte superior de las opciones para que ahora se vean así:
    ...
    listen-on port 53 { 10.8.0.0/24;127.0.0.1; };
    ...
    allow-query {10.8.0.0/24;localhost; };
    ...
  5. Presiona ctrl + x para salir de nano. Guarde los cambios cuando se le solicite.
  6. Establezca los permisos del archivo conf en 644:
    chmod 644 /etc/named.conf

Como este archivo conf es sensible a los errores, podemos comprobarlo escribiendo:

named-checkconf /etc/named.conf

Si su archivo de configuración no contiene errores, este comando no devolverá nada.

  1. Abra la lista de servidores de nombres:
    nano /etc/resolv.conf
  2. Configure el servidor de resolución para que apunte a sí mismo:
    nameserver 127.0.0.1
  3. Presiona ctrl + x para salir de nano. Guarde los cambios cuando se le solicite.
  4. Si su servidor CentOS se ejecuta en un enrutador con un servicio DHCP, debe asegurarse de que el archivo resolv.conf no se sobrescriba en la renovación de la concesión de DHCP. Escriba:
    nano /etc/sysconfig/network-scripts/ifcfg-ens33
    Reemplace ens33 con el nombre de su interfaz de red principal si es diferente (consulte la sección Preparación para obtener más información)
  5. Asegúrese de configurar los siguientes tres parámetros:
    BOOTPROTO=dhcp
    PEERDNS=no
    TYPE=Ethernet
  6. Presiona ctrl + x para salir de nano. Guarde los cambios cuando se le solicite.
  7. Para iniciar el servidor DNS, escriba:
    systemctl start named
  8. Habilitar el inicio automático del servidor DNS en el arranque del sistema:
    systemctl enable named

Eso es todo, el servidor DNS ahora está configurado.

Reglas de cortafuegos

Usaremos el firewalld predeterminado Firewall instalado por defecto en CentOS. 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 CentOS independiente simple, la configuración del firewall a continuación debería ser suficiente para que su servidor OpenVPN esté en funcionamiento.

  1. Permitir openvpn servicio:
    firewall-cmd --permanent --add-service=openvpn
    firewall-cmd --add-service=openvpn
  2. Configure el servidor OpenVPN para proporcionar enmascaramiento:
    firewall-cmd --permanent --add-masquerade
    firewall-cmd --add-masquerade
  3. Permitir el puerto OpenVPN (1194):
    firewall-cmd --permanent --add-port=1194/udp
  4. Reinicie el cortafuegos con esta nueva configuración:
    firewall-cmd --reload

Iniciar el servidor OpenVPN

En este punto, los conceptos básicos están completos. La configuración y los archivos de su servidor deben estar en su servidor copiados desde donde los generó.

Primero, copie los archivos de configuración del servidor al directorio de OpenVPN:

sudo cp /path/to/configs/server/* /etc/openvpn/

Ahora inicie su servidor y habilítelo para que también se inicie después de un reinicio.

systemctl -f enable [email protected]
systemctl start [email protected]

Para verificar el estado del servidor, ingrese:

systemctl -l status [email protected]

A lo que debería responder con el estado y en verde debería ver:

...
Active: active (running)
...

Su servidor OpenVPN ya está funcionando y listo para que se conecte a él.

Configuración del enrutador

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

Sin embargo, si su servidor CentOS 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:

Destination: 10.8.0.0
Subnet mask: 255.255.255.0
Default gateway: your-server-IP

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.

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 el servidor y cliente OpenVPN con Easy-RSA 3 en CentOS 7

  2. Cómo instalar el servidor y cliente OpenVPN con Easy-RSA 3 en CentOS 8

  3. Configuración de un servidor y cliente NFS en CentOS 7.2

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

  5. Instale y configure el servidor OpenVPN en Fedora 29/CentOS 7

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

Configuración de un servidor OpenVPN con VyOS y Viscosity