GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar WireGuard VPN en Linux

Si usa más de una computadora en el trabajo o en casa, probablemente quiera tener alguna forma de acceder a su red interna desde cada una de ellas. La buena noticia es que WireGuard VPN resuelve este problema.

En este tutorial, aprenderá cómo configurar WireGuard VPN para ejecutar una VPN completa para conectar sus computadoras y brindarle acceso seguro.

¿Listo para ensuciarte las manos? ¡Hora de sumergirse!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Un sistema Linux:este tutorial usa Ubuntu 20.04 LTS, pero cualquier distribución de Debian funcionará para las demostraciones.
  • Una computadora local:esta demostración usa un cliente de Windows 10 de 64 bits para conectarse al servidor VPN de WireGuard. 💡 Si está utilizando un servidor remoto, asegúrese de tener permiso para conectarse a ese servidor desde su máquina local.
  • Un usuario no root con [sudo]() privilegios.

Instalación de WireGuard

De forma predeterminada, WireGuard no viene instalado en su distribución de Ubuntu Linux. Así que primero instalará WireGuard con el administrador de paquetes APT.

También puede descargar y compilar WireGuard desde la fuente, pero una configuración mínima está bien para esta demostración.

Ejecute el siguiente comando para update la base de datos de paquetes del sistema.

sudo apt update -y

Ahora, ejecute el siguiente comando para instalar el wireguard paquete. El wireguard El paquete proporciona un módulo de kernel minimalista para admitir protocolos y redes privadas seguras.

El protocolo WireGuard implica claves públicas, distribuidas en un esquema de autenticación similar a SSH, que se combina con claves de cifrado simétricas para establecer conexiones privadas punto a punto o de sitio a sitio.

sudo apt install wireguard -y

Después de la instalación, WireGuard se ejecuta como un módulo del kernel. WireGuard se ejecuta en el espacio del kernel ya que WireGuard necesita acceso directo a sus interfaces de red para establecer una conexión VPN.

Generación de un par de claves

Ahora que tiene instalado WireGuard, es hora de generar un par de claves (una clave pública y una clave privada) ejecutando el wg genkey dominio. La clave pública es su "identidad" de WireGuard. Cada persona que quiera conectarse a su VPN necesitará acceso a esta clave pública. Por el contrario, la clave privada es lo que usa para establecer una conexión segura.

Mantenga la clave privada en secreto. Cualquiera que tenga acceso a su clave privada puede usarla para conectarse a su VPN.

1. Ejecute el umask Comando a continuación para que su par de claves sea legible. El umask El comando especifica la máscara de creación del modo de archivo y determina los permisos otorgados a los archivos recién creados.

Usarás un umasks valor de 077 para que todos los archivos recién creados puedan ser leídos por todos, pero solo pueden ser escritos por su propietario. Este paso garantiza que sus claves WireGuard no sean editables en todo el mundo.

umask 077

2. A continuación, ejecute el siguiente comando para generar (wg genkey ) un par de claves.

El comando escribe la clave privada en el /etc/wireguard/privatekey archivo y la clave pública (wg pubkey | sudo tee ) al /etc/wireguard/publickey expediente.

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Después de ejecutar el comando, obtendrá un valor en su terminal, que es su clave pública, como se muestra a continuación. El siguiente resultado confirma que ha generado su clave pública con éxito.

Copie y guarde esta clave pública en otro lugar, ya que sus pares usarán esta clave de publicación para conectarse a su VPN WireGuard. Su WireGuard VPN es como un túnel entre pares.

3. Finalmente, ejecuta el cat Comando a continuación para verificar que ha generado su clave privada con éxito.

cat /etc/wireguard/privatekey

Anote su clave privada, como en el resultado a continuación, tal como la definirá en la configuración de su servidor VPN WireGuard.

Configuración del servidor VPN WireGuard

Ahora que ha generado un par de claves para una conexión de servidor segura, el siguiente paso a seguir es configurar el servidor VPN de WireGuard.

1. Cree un nuevo archivo llamado wg0.conf con su editor de texto favorito y rellene el wg0.conf archivo con el siguiente contenido. Asegúrese de reemplazar el eth0 después de POSTRUTE -o con su interfaz de red .

El nombre de los archivos de configuración depende de usted, pero para que los nombres sean más fáciles de recordar, elija nombres como wg0, wg1 (wg significa WireGuard), o tun0, tun1 (tun significa túnel), etc.

2. Complete el wg0.conf archivo con el siguiente contenido. Asegúrese de reemplazar el eth0 después de POSTRUTE -o con su interfaz de red, guarde los cambios y salga del editor.

El wg0.conf El archivo contiene todos los parámetros de red y seguridad de su interfaz WireGuard. Sin él, su interfaz WireGuard y sus pares no pueden establecer una conexión segura.

# Defines your WireGuard interface name
[Interface]
# Sets the server's Public IP Address. This network is routed to your server's 
# eth0 interface. This is an IP range of private IPv4 that you will use 
# for your peers to connect to the broader internet using your VPN server. 
# Your peer can use any private IPs from 10.8.0.1 to 10.8.0.255.
Address = 10.0.0.1/24
# Set the value to "true" to save your server's config file automatically 
# after a connection is established or when you shut down your VPN server.
SaveConfig = true
# Sets the port that your VPN server listens on. This port should be open on your router
# so that your peers can access this port to connect to your VPN
ListenPort = 51820
# Replace  with your private key generated earlier.
PrivateKey = 
# Sets WireGuard to automatically accept new connections, which allows your peers 
# to access your server with their own public IP address. Your VPN server forwards 
# your peers’ connection through your private network to make it seem 
# like they are coming directly from the peers.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Reverses the PostUp values when there's a disconnection 
# to make the network settings return to original state
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

3. Ejecute el siguiente comando para activar el wg0 interfaz.

sudo wg-quick up wg0 

4. Por último, ejecute el siguiente comando para verificar su wg0 estado de la interfaz.

sudo wg show wg0 

Puedes ver el wg0 la interfaz se está ejecutando y está escuchando conexiones en el puerto 51820.

Configurar la red del servidor y el cortafuegos

Desde la configuración de su servidor WireGuard, también necesita configurar su red local y firewall. Si lo hace, le da más control sobre quién puede conectarse a su servidor.

Reenviarás el puerto UDP 51820 para que sus compañeros puedan conectarse a su servidor VPN, pero no puede mantener este puerto abierto todo el tiempo. Así que configurará la función NAT de su enrutador para reenviar el tráfico en el puerto 51820 a través de su servidor VPN.

1. Abra el etc/sysctl.conf archivo usando su editor favorito.

2. Busque y descomente el #net.ipv4.ip_forward=1 línea eliminando el “# ” para habilitar el reenvío de IP IPv4 y guardar los cambios.

3. A continuación, ejecute el siguiente sysctl comando para aplicar y hacer que los cambios sean permanentes (-p ).

sudo sysctl -p

Su servidor WireGuard ahora reenviará el tráfico entrante de los clientes de sus pares WireGuard a Internet en general. Una vez que avanza, WireGuard pasa los datos a los pares a través de la interfaz ethernet eth0 VPN.

Sin embargo, cualquier tráfico proveniente de Internet más amplio y destinado a su servidor WireGuard local pasará por el firewall de red predeterminado de Linux. Si está utilizando UFW como su firewall, deberá agregar algunas reglas más.

4. Ejecute el siguiente comando para permitir udp conexiones en el puerto 51820 sí mismo.

sudo ufw allow 51820/udp

5. Ahora, ejecute el siguiente comando para verificar el estado de su firewall. sudo ufw status command

sudo ufw status command

Su firewall UFW ahora debería verse como el siguiente:

Configuración de un cliente WireGuard

Su servidor WireGuard VPN funciona perfectamente, por lo que a continuación configurará un cliente para probar la conexión con su servidor WireGuard VPN. Su cliente puede ser Windows, MAC OS, Linux o BSD, pero esta demostración usa un cliente de Windows 10 de 64 bits.

Un cliente WireGuard es un dispositivo que se conecta al servidor VPN con su propia clave pública (ID) única. El servidor WireGuard autentica al cliente y encripta todo el tráfico entre él y el cliente.

Tenga en cuenta que los siguientes pasos deben realizarse en todos los dispositivos cliente de WireGuard.

1. Vaya a la página de descarga oficial de WireGuard para descargar el instalador del cliente de WireGuard para su sistema operativo y ejecútelo. Esta demostración utiliza el cliente para Windows.

2. Abra la aplicación de cliente WireGuard, haga clic en Agregar túnel (abajo a la izquierda) —> Añadir túnel vacío para crear un túnel vacío. Aparecerá una ventana emergente para configurar la conexión de red VPN (paso tres).

Configure la conexión de red VPN con lo siguiente:

  • Ingrese el nombre de su conexión de red VPN, como se muestra a continuación. Pero para esta demostración, el nombre se establece en ubuntu .
  • Deje la PrivateKey generada por defecto , agregue una nueva línea a continuación y escriba Dirección =. Reemplace con su IP estática de cliente de WireGuard.
  • Agregar un nuevo [Miembro] bloque, y debajo, agregue una nueva PublicKey = línea. Reemplazar con la clave pública de su servidor VPN que guardó en la sección "Generación de un par de claves" (paso dos).
  • Agregar un nuevo Punto final =:51820 , donde 51820 es el puerto que escucha su servidor WireGuard. Reemplazar con la IP pública de tu servidor VPN.
  • Agregue una nueva IP permitida:0.0.0.0/0 línea. Esta línea permite que el cliente de WireGuard acceda a todas las direcciones IPv4 e IPv6 en la red.
  • Haga clic en Guardar para guardar la configuración de la conexión de red VPN.

4. Finalmente, regrese a la terminal de su servidor VPN y ejecute el siguiente comando para agregar la clave pública y la dirección IP del cliente al servidor VPN.

Asegúrese de reemplazar lo siguiente:

  • – con la clave pública de su cliente.
  • 10.0.0.2 – con la dirección IP de su dispositivo cliente para que su servidor VPN pueda comunicarse con su dispositivo cliente.sudo wg set wg0 peer allowed-ips 10.0.0.2

Probar si el túnel VPN funciona

A estas alturas, ya tiene un servidor y un cliente de WireGuard en funcionamiento a su disposición. Ahora es el momento de probar la conexión entre ellos y ver si el túnel VPN funciona.

1. Abra su aplicación de cliente WireGuard y haga clic en ubuntu conexión (túnel VPN) que creó.

2. Haga clic en Activar botón para activar el túnel VPN.

3. Después de activar el túnel VPN, verá el Estado cambiar a Activo , Como se muestra abajo. ¡Eso es todo! Ahora tiene una conexión exitosa a su servidor VPN.

Conclusión

A lo largo de este tutorial, ha aprendido a configurar un servidor VPN WireGuard. También configuró un cliente para probar si la conexión entre el servidor VPN WireGuard y el cliente funciona mediante la creación de un túnel VPN.

En esta etapa, ahora puede configurar varios servidores y clientes de WireGuard para una red privada cifrada sin control de autoridad centralizado.

¿Cómo se basará en este nuevo conocimiento? ¿Quizás intente explorar Ansible mediante la configuración de una VPN WireGuard?


Linux
  1. Cómo configurar Wireguard VPN en CentOS 8

  2. Cómo configurar WireGuard VPN en Ubuntu 20.04

  3. Cómo configurar WireGuard VPN en Ubuntu (una guía paso a paso)

  4. Cómo configurar claves SSH

  5. Cómo configurar WireGuard VPN en CentOS 8

Cómo configurar WireGuard VPN en Debian 10

Cómo configurar el servidor Pritunl VPN en Rocky Linux 8

Cómo configurar o cambiar el nombre de host en Linux

Cómo configurar la clave pública y privada SSH en Linux

Cómo configurar claves SSH en Debian 11 Linux

Cómo configurar WireGuard VPN en Debian 11