WireGuard: Как протолкнуть маршруты и параметры dhcp клиентам с сервера?
Поддерживает ли WireGuard способ для VPN-сервера передавать маршруты и параметры DHCP своим клиентам, как это делает OpenVPN с чем-то вроде:
push "route 10.0.2.0 255.255.255.0 "
push "dhcp-option DNS 10.66.0.4"
У меня есть сотни клиентов, которые динамически настраивают свое VPN-соединение с VPN-сервером, и я хочу, чтобы эти маршруты и опции были установлены по мере их подключения к VPN-серверу.
1 ответ
Маршруты или даже разделенное туннелирование выполняется установкой Allowed IPs
параметр в конфигурации клиента!
Конфигурация клиента
[Interface]
# client001 #
PrivateKey = <private key of client>
Address = 100.64.0.100/32
DNS = 100.64.0.1
[Peer]
PublicKey = <public key of server>
PresharedKey = <preshared key for client>
AllowedIPs = 100.64.0.0/10, 192.168.178.0/24
Endpoint = <your-ip-or-fqdn.to.connect>:<port>
PersistentKeepalive = 25
Конфигурация сервера
[Interface]
Address = 100.64.0.1/10
SaveConfig = true
ListenPort = 51820
PrivateKey = <private key of server>
[Peer]
PublicKey = <public key of client>
PresharedKey = <preshared key for client>
AllowedIPs = 100.64.0.100/32
В этом случае конфигурация для клиента AllowedIPs = 100.64.0.0/10, 192.168.178.0/24
устанавливает на клиенте маршруты для отправки всего за 100.64.0.0/10 и 192.168.178.0/24 в туннель проводника, но не более того. (Переадресация IP-адресов и маскарадинг также активируются на сервере WireGuard.)
DNS = 100.64.0.1
параметр говорит клиенту использовать 100.64.0.1
(в моем случае сервер WireGuard) в качестве DNS-сервера. Даже DNS находится на самом WireGuard-сервере, интернет-трафик по-прежнему маршрутизируется напрямую, только DNS выполняется моим пользовательским DNS.
В текущей версии это невозможно. IPSec и OpenVPN содержат тысячи строк кода, которые имеют дело с политиками маршрутизации (по крайней мере, IPSec), а также для настройки IP-адресов. Wireguard ожидает, что они будут жестко закодированы, по крайней мере, на данный момент, в каждом файле.
Имейте в виду, что наличие интерфейса точка-точка лучше, чем несколько режимов моста в OpenVPN, но нет способа настроить интерфейс внутри модуля ядра. т.е. кода уровня 2 нет. Немного обидно, остальное красиво и чисто.