Tengo la versión CentOS 7.6 e instalé el servidor VPN Wireguard de prueba. Toda la instalación y configuración es bastante sencilla, al menos de acuerdo con la documentación, así que lo que hice fue instalar wireguard-tools, wireguard-dkms y linux-headers
El siguiente paso fue generar la clave privada y pública del servidor y escribir la configuración del servidor como:
[Interface]
Address = 10.7.0.1/24
ListenPort = 34777
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.2/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.3/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.4/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.5/32
desde el lado del servidor, abrí el puerto 34777 udp en un firewall y configuré sysctl -w net.ipv4.ip_forward (para habilitar el reenvío) ya que este servidor debería reenviar el tráfico del cliente a otros servidores en la subred del servidor VPN.
Ahora imaginemos que la IP pública de este servidor es 11.11.11.11/23
En el lado del cliente, la configuración se ve así:
[Interface]
Address = 10.7.0.4/24
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.1/32,11.11.11.0/23 (for having route to 11.11.11.0/23 subnet) or 0.0.0.0/0
Endpoint = 11.11.11.11:34777
ahora 0.0.0.0/0 significa que reenviaré todo el tráfico a mi VPN (no es obligatorio), puede ser un túnel dividido... lo que no entiendo, cuando me conecto, puedo hacer ping a la interfaz del servidor 10.7.0.1, pero no puedo hacer ping a nada de la red 11.11.11.0/23.
Dado que la red 11.11.11.0/23 es pública, no hay NAT.
También para mencionar, en CentOS uso firewalld en lugar de iptables.
¿Cómo y por qué no puedo ver la red interna detrás de la interfaz tunelada?
imagina cómo se ve la configuración:
PD En la imagen, entre el host A y el servidor Wireguard, hay otro enrutador Linux (un enrutador principal), por lo que debe tenerlo en cuenta.
Respuesta aceptada:
Después de tantos intentos y fallas y una lluvia de ideas con los chicos del canal IRC de wireguard, aparentemente olvidé agregar una ruta estática para 10.7.0.0/24 para cada servidor detrás de wireguard. Ping va al servidor, pero no regresa porque el servidor no sabe dónde enviar esa respuesta de eco:
ip route add 10.7.0.0/24 via 11.11.11.11 dev eth0 (main device for communication)
Para mí, problema resuelto 😉