Один из способов сделать это - назначить IP-адрес серверу из подсети, которую вы используете для виртуальных IP-адресов ваших клиентов. Затем вы назначаете этот IP-адрес как DNS-сервер своим клиентам и исключаете IP-адрес из пула IP-адресов. При желании можно фильтровать доступ к этому IP-адресу через модуль сопоставления политик Netfilter (см. Справочную страницу iptables-extensions ), чтобы он был доступен только через VPN.
Например, если ваш пул IP-адресов 192.168.8.0/24
(например, настроен в rightsourceip
в ipsec.conf или в разделе "пул" в swanctl.conf), вы назначаете свой сервер 192.168.8.1
(на любом интерфейсе, например, lo
), а затем измените пул на 192.168.8.2/24
(поэтому первый адрес, назначенный клиенту, будет 192.168.8.2
). Чтобы назначить 192.168.8.1
DNS-сервером, настройте его в rightdns
в ipsec.conf или в разделе пула в swanctl.conf.
Хотя вы также можете использовать общедоступный IP-адрес сервера и разрешать доступ к UDP-порту 53 только через VPN с использованием упомянутого соответствия политик, это не будет работать с клиентами Apple, поскольку они не отправляют пакеты на общедоступный IP-адрес сервера через VPN ( таким образом, вам придется сделать DNS-сервер общедоступным или динамически добавить правила брандмауэра, которые разрешают доступ к нему с общедоступного IP-адреса клиента).