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.