Wireguard - Как туннелировать только часть трафика

Можно ли настроить сервер Wireguard так, чтобы только список IPS [A, B, C, ...] туннелировался через Wireguard, а остальной трафик игнорировался и проходил через не -Wireguard interface?

Другими словами, я пытаюсь предоставить доступ к Wireguard VPN некоторым внешним людям, но я не хочу, чтобы они могли использовать VPN для просмотра других IP / сайтов, отличных от того, который я указал (позволяя им делать все, что они хотят, на их собственном интерфейсе / подключении, не относящемся к VPN.

Спасибо

1
задан 29 August 2021 в 21:21
1 ответ

Вы можете использовать iptables.
Замените eth0 на сетевой интерфейс, который подключается к Интернету, а 10.6.0.1/24 на подсеть вашего клиента.

Вставьте это куда-нибудь в конфигурацию Wireguard ниже [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

Например:

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

Для бесперебойной работы на стороне клиента вам также необходимо настроить AllowedIPs в конфигурации клиента. В противном случае клиенты попытаются использовать VPN для доступа в Интернет, и эти запросы просто истекут по тайм-ауту.

Следуя приведенному выше примеру, конфигурация клиента может выглядеть так:

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

Документация:

1
ответ дан 29 August 2021 в 22:24

Теги

Похожие вопросы