
É 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 eth0
pela 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 AllowedIPs
configuraçã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: