
Я настроил свой собственный контроллер Zerotier с помощьюztncuiи это работает отлично, но есть одна часть моей настройки, которую я не могу заставить работать, а именно, чтобы клиенты использовали DNS, который я настраиваю для сети ZeroTier. DNS настроен следующим образом:
{
"domain": "",
"servers": [
"10.10.14.26"
]
}
Где 10.10.14.26
находится IP-адрес ZeroTier DNS-сервера (так же, как сервер Linux, работающий с dnsmasq, перенаправляющий на локальный маршрутизатор). Всякий раз, когда я тестирую ответы DNS-сервера непосредственно на клиенте ZeroTier, я получаю правильные результаты (например, настраивая DNS для его непосредственного использования или указывая DNS-сервер при использовании dig
), однако при выборе «Разрешить конфигурацию DNS» на клиентах они по-прежнему отказываются разрешать имена хостов, которые разрешаются при прямом запросе DNS-сервера.
Я также попробовал использовать локальный IP-адрес DNS-сервера вместо IP-адреса ZeroTier, с теми же результатами (переадресация IP-адресов настроена на том же сервере Linux, так что клиенты могут получать доступ и к локальным IP-адресам).
Что мне нужно сделать, чтобы мои клиенты ZeroTier использовали настроенный мной DNS-сервер?
Мой запасной план — просто написать различные скрипты для разных платформ, которые мне нужно поддерживать, и заставить их перезаписывать и восстанавливать глобальный DNS при подключении и отключении от моей сети ZeroTier соответственно, но тогда какой смысл в опции «Разрешить конфигурацию DNS»?
Я знаю, что функция DNS не работает для клиентов Linux, но я буду единственным клиентом Linux, так что для меня это не будет большой проблемой. Остальные клиенты будут использовать либо Windows, либо MacOS, для которых эта функциядоложили о работе:
ZeroTier управляемый DNS в настоящее время поддерживается только в Windows, MacOS, Android и iOS. Поддержка Linux ожидается, но может быть ограничена общими конфигурациями DNS-резолвера Linux, такими как те, что есть в Debian и CentOS/RHEL.
решение1
Хотя это не является правильным ответом на мой собственный вопрос, это действительно решило мои потребности. Как описано вэта почтаВ итоге мне пришлось принудительно подключать VPN-сервер с помощью дополнительных iptables
команд:
iptables -t nat -A PREROUTING -s vpn_network -p udp --dport 53 -j DNAT \
--to-destination your_DNS_server
iptables -t nat -A PREROUTING -s vpn_network -p tcp --dport 53 -j DNAT \
--to-destination your_DNS_server
Примечание: Машина с Windows 10, на которой я это тестировал, не сразу показала правильные результаты, но после сброса большинства моих экспериментальных изменений она продолжала работать правильно. Когда я затем протестировал ее на чистой машине, она сразу же заработала.