Instalar y configurar WireGuard VPN en Ubuntu y derivados.
WireGuard es una aplicación VPN facil de usar, rápida y segura que utiliza las últimas novedades en criptografía. Si lo pruebas te darás cuenta que es el muco más rápido y ágil que otros protocolos VPN, como los afamados OpenVPN o IPSec.
WireGuard todavía no está en su version final, pero incluso en su actual estado es más potente que el resto.
La configuración de WireGuard es bastante simple mediante SSH. La conexión se establece mediante el intercambio de claves públicas entre el servidor y el cliente. Solo el cliente que tenga en su poder la clave pública en el archivo de configuración del servidor podrá conectarse. WireGuard se puede configurar en cualquier interfaz de red estándar, como ethernet o wireless.
Instalar y configurar WireGuard
Instalar y configurar WireGuard VPN en Ubuntu
Instalar WireGuard en Ubuntu
La instalación de WireGuard en Ubuntu y derivados es bastante simple. Tan solo debemos agregar el repositorio e instalar la herramienta.
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt install wireguard
ejemplo…
sololinux # sudo apt install wireguard Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho Se instalarán los siguientes paquetes adicionales: wireguard-dkms wireguard-tools Se instalarán los siguientes paquetes NUEVOS: wireguard wireguard-dkms wireguard-tools 0 actualizados, 3 nuevos se instalarán, 0 para eliminar y 2 no actualizados. Se necesita descargar 358 kB de archivos. Se utilizarán 2.041 kB de espacio de disco adicional después de esta operación. ¿Desea continuar? [S/n]
Configurar WireGuard
Lo primero que tenemos que hacer es generar una clave publica.
umask 077 wg genkey | tee privatekey | wg pubkey > publickey
Puedes ver las claves generadas con:
cat privatekey
y cat publickey
.En nuestro ejemplo creamos el archivo de configuración wg0.conf.
nano /etc/wireguard/wg0.conf
Copia y pega lo siguiente (donde «Tu-KEY», agregas tu clave).
[Interface] PrivateKey = <Tu-KEY> Address = 10.0.0.1/24, fd86:ea04:1115::1/64 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE SaveConfig = true
Modifica las configuraciones según tus necesidades.
- Address: define las direcciones IPv4 e IPv6 privadas para el servidor WireGuard.
- ListenPort: especifica qué puerto utilizará WireGuard para las conexiones entrantes.
- PostUp y PostDown: define los pasos que se ejecutarán después de encender o apagar la interfaz con respecto a las iptables.
- SaveConfig: ordena al archivo de configuración que se actualice automáticamente cada vez que se agrega un nuevo par.
Configurar el cortafuegos
Abrimos el puerto ssh y el de WireGuard.
sudo ufw allow 22/tcp sudo ufw allow 51820/udp sudo ufw enable
Verificamos que los puertos están abiertos.
sudo ufw status verbose
Iniciar WireGuard
Iniciar el servicio (según el nombre que hayas definido dependiendo de tus interfaces).
wg-quick up wg0
Habilitamos el servicio para que inicie con el sistema.
sudo systemctl enable wg-quick@wg0
La VPN ya debería estar funcionado, puedes verificarlo con los siguientes comandos.
sudo wg show
ifconfig wg0
Instalar WireGuard cliente
La configuración de un cliente es similar a la del servidor. Si usas Ubuntu como sistema operativo cliente, la única diferencia entre el cliente y el servidor es el contenido del archivo de configuración.
Instalamos la aplicación como mencionamos anteriormente, después generamos las claves.
umask 077 wg genkey | tee privatekey | wg pubkey > publickey
Creamos el archivo de configuración.
nano /etc/wireguard/wg0.conf
Copia y pega lo siguiente.
[Interface] PrivateKey = <archivo que contiene la clave> Address = 10.0.0.2/24, fd86:ea04:1115::5/64
Guarda el archivo y cierra el editor.
Conectar el cliente con el servidor
La forma más sencilla de conectarnos al VPN es editar el archivo…
nano /etc/wireguard/wg0.conf
Ingresa tus datos reales.
[Peer] PublicKey = <Server Public key> Endpoint = <Server Public IP>:51820 AllowedIPs = 10.0.0.2/24, fd86:ea04:1115::5/64
Guarda y cierra el editor.
Podemos verificar la conexión con el siguiente comando.
sudo wg
La configuración de la red se agregara automáticamente al archivo *.conf. Si no te fias y quieres forzar el guardado puedes ejecutar el siguiente comando (con el nombre correspondiente).
wg-quick save wg0
Ahora y como punto final del articulo puedes verificar la conexión con…
ping 10.0.0.1 sudo wg
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Pues qué se le puede pedir a un manual: Que te guie por un proceso que tu no sabes hacer.
Y éste lo cumple a la perfección, además es conciso, exacto y muy muy claro.
Eternamente agradecido pues llevaba intentando instalar Wireguard en Debian e iba por la 5ª vez. Con tus indicaciones lo he conseguido a la primera.
Lo próximo es como configurar el cliente de un smartphone android/iOs.
Cuando puedas.
Reitero mi agradecimiento.
Tendré en cuenta tu petición Salvador. Gracias por visitar sololinux.es.
Muchas gracias por el manual, pero tengo un par de cuestiones…
Este punto donde tendría que editarse, ¿en el server o en cliente?
[Peer]
PublicKey =
Endpoint = :51820
AllowedIPs = 10.0.0.2/24, fd86:ea04:1115::5/64
Otra pregunta que tengo es:
Yo tengo montado en server ubuntu donde tengo instalado Wireguard pero tengo configurado un debian server que hace función de enrutador con dos interfaces de red: 10.33.6.0 y la 192.168.1.0
La ip privada del debian 10.33.6.1 y la interfaz de red que da salida a internet con la 192.168.1.68
El ubuntu server (wireguard) forma parte de la red privada del debian y tiene la ip 10.33.6.6
El cliente ubuntu no forma parte de la red privada si no que tiene otra red 192.168.1.139
Mi cuention es ¿que ip publica debería poner EndPoint?
Si me pudieras ayudar en este punto te lo agradecería muchísimo…
Gracias!