Resumen
Este artículo mostrará el procedimiento para instalar el servidor Wireguard VPN con Docker. Wireguard es otra buena opción de VPN además de OpenVPN. Wireguard aún no tiene una imagen oficial de Docker, por lo que usaremos la imagen de Wireguard Docker de linuxserver.io:esta imagen exacta se usa en esta publicación:Docker Hub (y la página de Github)
Este procedimiento también está cubierto con OpenVPN. Puedes comprobarlo en esta publicación.
Requisitos:
- Docker instalado y funcionando.
Para la instalación de la ventana acoplable, puede consultar esta publicación o consultar la documentación oficial.
Si ejecuta distribuciones como:Ubuntu, Debian, Raspbian, entonces puede usar el script oficial de instalación rápida de Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Luego, agregue el usuario al grupo docker, si lo desea. Es decir, si desea ejecutar comandos docker sin sudo.
sudo usermod -aG docker <username>
Configuración del cortafuegos
Si tiene un firewall en ejecución (que es muy recomendable), es necesario tener puertos abiertos para Wireguard, de lo contrario, no podrá establecer la conexión con el servidor de Wireguard.
UFW
sudo ufw allow 51820
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 51820 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 51820 -j ACCEPT
Instalar y ejecutar la imagen de Docker
A continuación se enumera el comando Docker con las variables de entorno configuradas (estos son ejemplos y también se explican):
docker run -d \ --name wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=1000 -e PGID=1000 \ -e TZ=Europe/London \ -e SERVERURL=wireguard.yourdomain.com \ -e PEERS=laptop,tablet,phone \ -e PEERDNS=auto \ -p 51820:51820/udp \ -v wireguard_config:/config \ -v /lib/modules:/lib/modules \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --restart=unless-stopped \ linuxserver/wireguard
Variables de entorno explicadas:
nombre protector de cable – este es el nombre que establecemos para el contenedor de protección de cables
cap-add=NET_ADMIN &cap-add=SYS_MODULE – esta variable proporcionará al contenedor permisos elevados en el servidor host y le permitirá administrar el kernel del host e interactuar con las interfaces de red del host (que son necesarias si queremos establecer la comunicación con nuestra VPN).
e PUID=1000 -e PGID=1000 – variable para especificar el usuario y el grupo de permisos (el mismo grupo que un usuario sudo)
e TZ=Europa/Londres – Zona horaria del servidor (Ajústelo en consecuencia)
e SERVERURL=vpn.yourdomain.com – Nombre de dominio (FQDN) del servidor. El dominio es opcional, pero al menos DEBE establecerse la dirección IP pública del servidor (esto es necesario, para que nuestro dispositivo cliente pueda ubicar el servidor y comunicarse con él). También puede establecer la configuración en automático.
e PEERS=portátil,tableta,teléfono – variable para configurar la conexión del cliente a la VPN para dispositivos cliente (esencialmente la cantidad de dispositivos cliente)
e PEERDNS=auto – Variable para configurar el solucionador de dominios
p 51820:51820/udp – puerto para exponer en el contenedor y qué puerto escuchar en el servidor host para usar para el tráfico VPN.
v wireguard_config:/config &v /lib/modules:/lib/modules – directorios de volumen para montar en el servidor host y usarlos para guardar la configuración y los archivos de Wireguard
sysctl=”net.ipv4.conf.all.src_valid_mark=1″ – Otra variable importante. Es para habilitar un parámetro del kernel en el nivel de red para que el contenedor pueda comunicarse con redes fuera del contenedor. Lo que significa que el contenedor puede obtener acceso a Internet.
restart=a menos que se detenga – para reiniciar el contenedor cada vez que se ha detenido
linuxserver/wireguard – Imagen Docker a usar
Versión del compositor
Nota – esto requiere tener docker-compose instalado y ejecutándose
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=vpn.domain.com # domain optional, public IP is required at least - SERVERPORT=51820 - PEERS=3 # number of peers - PEERDNS=auto #optional volumes: - /lib/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Conectando clientes
Revisar la configuración de pares
Tan pronto como inicie el contenedor Wireguard, Wireguard creará toda la configuración de conexión del cliente. Puede revisar la configuración con el comando:
docker logs wireguard
o
docker exec -it wireguard /app/show-peer peer-number
Esta salida también imprimirá los códigos QR para una configuración de conexión fácil y rápida. Esto es más conveniente para los dispositivos inteligentes que pueden escanear los códigos QR a través de la aplicación Wireguard. Entonces, para dispositivos inteligentes, simplemente descargue la aplicación Wireguard, escanee el código QR y debería conectarse de inmediato.
Instalación del cliente Wireguard y obtención de la configuración de pares
En dispositivos Linux (PC y portátiles), la configuración del cliente es un poco diferente. La instalación y configuración del cliente se realiza a través de la terminal. Primero, instala Wireguard:
sudo apt install wireguard
El cliente Wireguard también está disponible para otras distribuciones y también para Windows. Si necesita un cliente para otros clientes, consulte los documentos.
A continuación, cree la interfaz Wireguard:
ip link add dev wg0 type wireguard
y verifique dos veces si está presente a través del comando:ip -a. Si encuentra problemas con esto, Wireguard docs también tiene otros métodos y cubre la resolución de problemas.
Debería ser algo como esto:
Déjalo como está por ahora y muévete al servidor. Primero debemos adquirir la configuración de pares directamente desde el servidor, copiar la configuración y pegarla en nuestro dispositivo cliente Linux.
La ubicación predeterminada de la configuración de pares se encuentra en:
/var/lib/docker/volumes/wireguard_config/_data/
Puede copiarlo (si es necesario) para hacer una copia de seguridad o acceder directamente a la configuración de pares:
sudo cp /var/lib/docker/volumes/wireguard_config/_data/peer*/*.conf ~
Esto copiará todas las configuraciones de pares al directorio de inicio y luego, en el directorio de inicio, imprimirá el archivo con cat:
sudo cat peer_laptop.conf or sudo nano peer_laptop.conf
o acceda a la configuración de pares directamente:
sudo cat /var/lib/docker/volumes/wireguard_config/_data/peer_laptop/peer_laptop.conf
Si también obtiene el error de permiso denegado con el comando sudo, eso significa que solo se puede acceder a la configuración como root. Si ese es el caso, simplemente inicie sesión como root con -sudo su y vuelva a ejecutar cualquiera de los comandos anteriores sin sudo.
Configurar la interfaz del cliente y establecer la conexión
Después de haber copiado la configuración, regrese a su dispositivo Linux, cree el archivo de configuración de pares (solo para el ejemplo, vamos a crear la configuración en el directorio de inicio):
sudo nano wireguard-vpn.conf
y pegue la configuración de pares, guarde y salga.
Por último, ejecute este comando para autoconfigurar la interfaz wireguard, para activarla y luego, debería conectarse automáticamente a su servidor:
sudo wg-quick up wireguard-vpn.conf
Puede verificarlo dos veces con - ip a y con ping al servidor vpn o con un servicio what's my ip.
Para desconectarse, simplemente ejecute el mismo comando nuevamente pero con el argumento hacia abajo:
sudo wg-quick down wireguard-vpn.conf
Resumen
Lo que cubrimos en esta publicación son los pasos para instalar el servidor Wireguard VPN con Docker. Este método es bastante rápido de configurar y es fácilmente ajustable, si desea agregar o eliminar clientes. Pero, si prefieres más la solución con OpenVPN, tienes el mismo procedimiento con OpenVPN en este enlace
Muchas gracias por su tiempo…