Можно использовать iptables.
Заменять eth0
с сетевым интерфейсом, который подключается к Интернету и 10.6.0.1/24
с вашей клиентской подсетью.
Вставьте это куда-нибудь в конфигурацию Wireguard ниже [ИНТЕРФЕЙС].
# Отбрасываем все исходящие пакеты из клиентской подсети
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
## Добавьте сюда свои исключения
Например:
[Интерфейс]
Приватный ключ = ...
Адрес = 10.6.0.1/24
МТУ = 1420
Порт прослушивания = 51820
## Перед запуском интерфейса wg0
# Отбрасываем все исходящие пакеты из клиентской подсети
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
# Разрешить клиентам подключаться к локальной сети 192.168.0.1/24
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 192.168.0.1/24 -j ПРИНЯТЬ
# Разрешить клиентам подключаться к tcp-порту 80 (обычно http) на 10.10.0.5
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ПРИНЯТЬ
## После отключения интерфейса wg0
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 ПРИНЯТЬ
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ПРИНЯТЬ
[Вглядеться]
...
Для бесперебойной работы на стороне клиента вам также необходимо настроить Разрешенные IP-адреса
в конфиге клиента. В противном случае клиенты попытаются использовать VPN для доступа в Интернет, и эти запросы просто истечет.
Следуя приведенному выше примеру, конфигурация клиента может выглядеть так:
[Интерфейс]
Приватный ключ = ...
Адрес = 10.6.0.2/24
DNS = 10.6.0.1
[Вглядеться]
Публичный ключ = ...
Разрешенные IP-адреса = 192.168.0.1/24, 10.10.0.5
Конечная точка = ...
Предварительный Ключ = ...
Документация: