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 *