Cómo configurar WireGuard VPN en Ubuntu 20.04

Cómo configurar WireGuard VPN en Ubuntu 20.04

WireGuard es una red privada virtual de código abierto y centrada en la seguridad diseñada para la simplicidad y la facilidad de uso. Es compatible con diferentes sistemas operativos, incluidos Linux, macOS, Windows, BSD y Android. Es una VPN simple y de propósito general que se puede implementar fácilmente en dispositivos pequeños para servidores de alta gama. Es un servidor VPN punto a punto en lugar de un modelo cliente-servidor. Utiliza un mecanismo de intercambio de clave pública para autenticar al cliente.

Si está buscando una VPN liviana y rápida, WireGuard VPN es la mejor opción para usted. En este tutorial, le mostraremos cómo instalar el servidor y el cliente WireGuard VPN en Ubuntu 20.04.

requisitos previos

  • Dos servidores que ejecutan el servidor Ubuntu 20.04.
  • Se configura una contraseña de root en ambos servidores.

Empezando

Primero, se recomienda actualizar los paquetes de su sistema a la última versión. Puede actualizarlos con el siguiente comando:

apt-get update -y

Una vez que todos los paquetes estén actualizados, deberá instalar Iptables en su sistema. Puedes instalarlo con el siguiente comando:

apt-get install iptables -y

Una vez finalizada la instalación, puede continuar con el siguiente paso.

Instalar el servidor VPN WireGuard

De forma predeterminada, el paquete WireGuard está disponible en el repositorio predeterminado de Ubuntu 20.04. Puede instalarlo ejecutando el siguiente comando:

apt-get install wireguard -y

Una vez que se haya instalado el paquete WireGuard, puede continuar con el siguiente paso.

Configurar servidor WireGuard

WireGuard funciona mediante el intercambio de claves públicas entre cada dispositivo de la red WireGuard. Por lo tanto, deberá crear una clave pública y privada en el servidor.

WireGuard proporciona la utilidad de línea de comandos wg y wg-quick para crear una clave y administrar las interfaces.

Puede crear tanto la clave pública como la privada con el siguiente comando:

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

Una vez creadas ambas claves, puede verificarlas con el siguiente comando:

ls /etc/wireguard

Debería ver el siguiente resultado:

privatekey  publickey

Puede mostrar el contenido de la clave privada con el siguiente comando:

cat /etc/wireguard/privatekey

Debería ver el siguiente resultado:

4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=

Puede mostrar el contenido de la clave pública con el siguiente comando:

cat /etc/wireguard/publickey

Debería ver el siguiente resultado:

00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=

A continuación, deberá crear una interfaz de red para WireGuard. Puedes crearlo con el siguiente comando:

nano /etc/wireguard/wg0.conf

Agregue las siguientes líneas:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = server-private-key
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Guarde y cierre el archivo cuando haya terminado.

Dónde:

  • Dirección : Una dirección IP privada para la interfaz wg0.
  • Puerto de escucha: Especifique el puerto de escucha de WireGuard.
  • Llave privada : Una clave privada almacenada en el archivo /etc/wireguard/privatekey.
  • Publicar arriba: Especifique el comando que permite que el tráfico salga del servidor y dé acceso a Internet a los clientes VPN. También reemplace eth0 con el nombre de su interfaz de red.

A continuación, establezca el permiso adecuado para la clave privada y el archivo wg0.

chmod 600 /etc/wireguard/{privatekey,wg0.conf}

A continuación, habilite la interfaz wg0 ejecutando el siguiente comando:

wg-quick up wg0

Deberías obtener el siguiente resultado:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

También puede iniciar el servicio WireGuard usando systemd como se muestra a continuación:

systemctl start [email protected]

A continuación, habilite el servicio WireGuard para que se inicie al reiniciar el sistema con el siguiente comando: Publicidad

systemctl enable [email protected]

A continuación, verifique el estado del servicio WireGuard con el siguiente comando:

systemctl status [email protected]

Deberías obtener el siguiente resultado:

? [email protected] - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
     Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 2173 (code=exited, status=0/SUCCESS)

Dec 10 11:42:14 ubuntu2004 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link add wg0 type wireguard
Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63
Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0
Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dec 10 11:42:14 ubuntu2004 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

También puede verificar el estado de la interfaz wg0 con el siguiente comando:

wg show wg0

Deberías obtener el siguiente resultado:

interface: wg0
  public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
  private key: (hidden)
  listening port: 51820

Puede obtener el estado de la dirección IP de la interfaz wg0 con el siguiente comando:

ip a show wg0

Deberías obtener el siguiente resultado:

13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Una vez que haya terminado, puede continuar con el siguiente paso.

Habilitar el reenvío de IP

A continuación, deberá habilitar el reenvío de IP en su servidor para enrutar paquetes entre clientes VPN e Internet. Puede habilitarlo editando el archivo /etc/sysctl.conf:

nano /etc/sysctl.conf

Cambia la siguiente línea:

net.ipv4.ip_forward=1

Guarde y cierre el archivo, luego ejecute el siguiente comando para aplicar los cambios de configuración:

sysctl -p

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar el cliente WireGuard

Primero, deberá instalar el paquete WireGuard en la máquina cliente. Puedes instalarlo con el siguiente comando:

apt-get install wireguard -y

Después de instalar el paquete WireGuard, cree una clave privada y una clave pública con el siguiente comando:

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

Una vez creadas ambas claves, deberá crear un nuevo archivo de configuración.

Puedes crearlo con el siguiente comando:

nano /etc/wireguard/wg0.conf

Agregue las siguientes líneas:

[Interface]
PrivateKey = client-private-key
Address = 10.0.0.2/24

[Peer]
PublicKey = server-public-key
Endpoint = server-ip-address:51820
AllowedIPs = 0.0.0.0/0

Guarde y cierre el archivo cuando haya terminado.

Dónde:

  • Dirección : Una dirección IP privada para la interfaz wg0.
  • Llave privada : Especifique la clave privada en la máquina cliente.
  • Llave pública : Especifique la clave pública en la máquina del servidor.
  • Punto final: Especifique la dirección IP del servidor.
  • IP permitidas: Especifique la lista de direcciones IP permitidas.

A continuación, deberá agregar la clave pública del cliente y la dirección IP en la máquina del servidor.

En la máquina del servidor, ejecute el siguiente comando para agregar ambos:

wg set wg0 peer client-public-key allowed-ips 10.0.0.2

A continuación, deberá abrir la interfaz wg0 en la máquina cliente.

En la máquina cliente, ejecute el siguiente comando para abrir la interfaz:

wg-quick up wg0

Deberías obtener el siguiente resultado:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820

En este punto, su máquina cliente está conectada al servidor VPN de WireGuard. Puede verificar el estado de la conexión con el siguiente comando:

wg

Deberías obtener el siguiente resultado:

interface: wg0
  public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4=
  private key: (hidden)
  listening port: 38830
  fwmark: 0xca6c

peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
  endpoint: 69.87.216.36:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 41 seconds ago
  transfer: 5.27 KiB received, 12.97 KiB sent

Conclusión

¡Felicidades! Ha instalado y configurado con éxito el servidor y el cliente VPN de WireGuard en el servidor Ubuntu 20.04. Ahora, el tráfico de su máquina cliente debe enrutarse a través de su máquina servidor. Ahora puede navegar por Internet de forma anónima y mantener sus datos privados.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *