GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Instale el servidor Wireguard VPN con Docker

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…


Docker
  1. Instale ModSecurity con Apache en un contenedor Docker

  2. Monitoree el servidor MySQL con Nagios 3.4

  3. Cómo instalar y alojar un servidor OpenVPN con Docker

  4. Cómo instalar Jenkins con Docker

  5. Cómo instalar Nextcloud con Docker en su servidor Linux

Cómo instalar Sentry con Docker en Ubuntu 20.04

Cómo instalar Mailtrain en Ubuntu 18.04 con Docker

Instalar Portainer con Docker en Ubuntu

Instalar Portainer con Docker en Centos8

Cómo instalar Wireguard en CentOS 8

Instalar WordPress con Docker en Ubuntu 20.04