Один из способов сделать это - назначить 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-адреса клиента).