Acceso VPN
Introducción
Este VM se encarga de las conexiones Wireguard entrantes en la red local. Ya sea para la comunicación con boniato o como servicio para el móvil.
Generalidades
Router virtual en Brocoli
Máquina LXC "VPN" con SO Debian.
Dirección IP fija en red local 192.168.1.19/24
Dirección IP fija wireguard 10.0.0.1/32
NAT en router de fibra: 51821 a IP local 192.168.1.19 hostname: vpn.lechuga.eu
Configuración en /etc/wireguard/wg0
wg show
# Reiniciar la conexión
wg-quick down wg0 && wg-quick up wg0
Direcciones asignadas
(:sortable arrows=black headerrow=#000 headerrowbg=#efe :)
| NOMBRE | IP ASIGNADA |
| router3 (Nodo local Lechuga) | 192.168.1.019:51821 |
| router3 (interfaz VPN) | 10.0.0.1/32 |
| boniato | 10.0.0.2/32 |
| movil hugo | 10.0.0.3/32 |
| vm-test-wireguard-001 | 10.0.0.101/32 |
| vm-test-wireguard-002 | 10.0.0.102/32 |
| vm-test-wg en guisante | 10.0.0.103/32 |
Reglas iptables
# Actualiza con tablas actules: sudo iptables-save | sudo tee /etc/iptables/rules.v4 # Restaurar desde este archivo: iptables-restore < /etc/iptables/rules.v4 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Para chibisafe **** INICIO -A FORWARD -s 10.0.0.2/24 -d 192.168.1.156/24 -i wg0 -o eth0 -p tcp -m tcp --dport 24424 -j ACCEPT -A FORWARD -s 192.168.1.156/24 -d 10.0.0.2/24 -i eth0 -o wg0 -p tcp -m tcp --sport 24424 -m state --state RELATED,ESTABLISHED -j ACCEPT # Para chibisafe **** FIN # Para mealie **** INICIO -A FORWARD -s 10.0.0.2/24 -d 192.168.1.156/24 -i wg0 -o eth0 -p tcp -m tcp --dport 9925 -j ACCEPT -A FORWARD -s 192.168.1.156/24 -d 10.0.0.2/24 -i eth0 -o wg0 -p tcp -m tcp --sport 9925 -m state --state RELATED,ESTABLISHED -j ACCEPT # Para mealie **** FIN # no se permite al VPS husmear otras partes de la red -A FORWARD -s 10.0.0.2 -d 192.168.1.0/24 -j DROP # Para conexiones propias a la red local -A FORWARD -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT -A FORWARD -d 10.0.0.0/24 -s 192.168.1.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT # Para conexiones propias a internet -A FORWARD -s 10.0.0.0/24 -j ACCEPT -A FORWARD -d 10.0.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT # Completed on Tue Nov 4 06:03:58 2025 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [1:60] -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE # Para chibisafe *** INICIO # -A POSTROUTING -d 192.168.1.156/24 -o eth0 -p tcp -m tcp --dport 24424 -j MASQUERADE # Para chibisafe *** FIN # Para mealie **** INICIO # -A POSTROUTING -d 192.168.1.156/24 -o eth0 -p tcp -m tcp --dport 9925 -j MASQUERADE # Para mealie **** FIN COMMIT # Completed on Tue Nov 4 06:03:58 2025
Setup inicial ejecutado
Cargar el módulo wireguard en el guest (en el host debe estar ya cargado)lxc config set vpn linux.kernel_modules wireguard
Generar cliente nuevo
Decidir FQDN e IP fija
En cliente, generamos pareja público-privada
cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey
En cliente, añadir a /etc/wireguard/wg0.conf:
[Interface] Address = 10.0.0.2/32 PrivateKey = <<Clave privada del cliente>> DNS = 1.1.1.1 [Peer] PublicKey = <<Clave pública del servidor>> Endpoint = <server-public-ip>:51821 AllowedIPs = 0.0.0.0/0, ::/0
En servidor, añadir un nuevo peer a /etc/wireguard/wg0.conf:
[Peer] # Peer de pruebas PublicKey = <<Clave pública del cliente>> AllowedIPs = 10.0.0.101/32 PersistentKeepalive = 25Reiniciamos, tanto en cliente como en servidor, el interfaz wg0
wg-quick up wg0 wg syncconf wg0 <(wg-quick strip wg0)
https://upcloud.com/community/tutorials/get-started-wireguard-vpn/
https://serversideup.net/generating-wireguard-qr-codes-for-fast-mobile-deployments/