Wireguard: cómo canalizar solo parte del tráfico

Wireguard: cómo canalizar solo parte del tráfico

¿Es posible configurar el servidor Wireguard para que solo se tunelice una lista de ips [A, B, C,...] a través de Wireguard, mientras que el resto del tráfico se ignora y pasa por la interfaz que no es Wireguard?

Dicho de otra manera, estoy tratando de dar acceso a una VPN Wireguard a algunas personas externas, pero no quiero que puedan usar la VPN para navegar por otras direcciones IP/sitios distintos al que especifiqué (mientras les permito acceder a lo que quieran). desea en su propia interfaz/conexión que no sea VPN.

Gracias

Respuesta1

Puedes usar iptables.
Reemplácela eth0con la interfaz de red que se conecta a Internet y 10.6.0.1/24con la subred de su cliente.

Inserte esto en algún lugar de su configuración de Wireguard debajo de [INTERFAZ]

# Drop all outgoing packets from the client subnet
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
## Add your exceptions here

Por ejemplo:

[Interface]
PrivateKey = ...
Address = 10.6.0.1/24
MTU = 1420
ListenPort = 51820

## Before interface wg0 is up
# Drop all outgoing packets from the client subnet
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
# Allow clients to connect to the local network 192.168.0.1/24
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 192.168.0.1/24 -j ACCEPT
# Allow clients to connect to tcp port 80 (usually http) on 10.10.0.5
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ACCEPT

## After interface wg0 is down
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -d 192.168.0.1/24 -j ACCEPT
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ACCEPT

[Peer]
...

Para una experiencia perfecta en el lado del cliente, también debe configurar AllowedIPsen la configuración del cliente. De lo contrario, los clientes intentarán utilizar la VPN para acceder a Internet y esas solicitudes simplemente expirarán.

Siguiendo el ejemplo anterior, la configuración del cliente podría verse así:

[Interface]
PrivateKey = ...
Address = 10.6.0.2/24
DNS = 10.6.0.1

[Peer]
PublicKey = ...
AllowedIPs = 192.168.0.1/24, 10.10.0.5
Endpoint = ...
PresharedKey = ...

Documentación:

información relacionada