Wireguard - Como encapsular apenas parte do tráfego

Wireguard - Como encapsular apenas parte do tráfego

É possível configurar o servidor Wireguard para que apenas uma lista de ips [A, B, C,...] seja encapsulada via Wireguard - enquanto o restante do tráfego é ignorado e passa pela interface não-Wireguard?

Dito de outra forma, estou tentando dar acesso a uma VPN Wireguard para algumas pessoas externas, mas não quero que elas possam usar a VPN para navegar em outros ips/sites além daquele que eu especifiquei (ao mesmo tempo que permito que eles façam o que quiserem). desejam por conta própria interface/conexão não VPN.

Obrigado

Responder1

Você pode usar o iptables.
Substitua eth0pela interface de rede que se conecta à Internet e 10.6.0.1/24à sub-rede do cliente.

Insira isso em algum lugar na configuração do Wireguard abaixo [INTERFACE]

# 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 exemplo:

[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 uma experiência perfeita do lado do cliente, você também precisa configurar na AllowedIPsconfiguração do cliente. Caso contrário, os clientes tentarão usar a VPN para acessar a Internet e essas solicitações simplesmente expirarão.

Seguindo o exemplo acima, a configuração do cliente poderia ficar assim:

[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 = ...

Documentação:

informação relacionada