Мы проводим исследовательский проект с сотнями (которые становятся тысячами) удаленных хостов. На каждом хосте работает OpenVPN, поэтому мы можем найти их независимо от их «назначенного» IP-адреса. Мы использовали DynDNS для управления этим, но у нас возникают некоторые проблемы с ними (API слабый / несуществующий, ограничения по размеру и т. Д.).
Я собираюсь настроить домен только для внутреннего использования (например, «our.stuff», так что хост будет «site1.our.stuff» или «site3.net4.our.stuff»), который я могу настроить с помощью информации из OpenVPN сервер.
Поскольку нам нужно было бы указать наш внутренний DNS на этом компьютере, он также должен иметь возможность маршрутизировать / кэшировать запросы для «внешних» машин. Я пытался прочитать о «внутреннем DNS», «частном», «немаршрутизируемом», но у меня нет особого успеха.
Резюме: нужна информация о внутреннем кеширующем DNS-сервере. Что-то с открытым исходным кодом было бы идеально. Если нет, я могу записать изменения в .conf и т. Д.
Я бы использовал привязку с открытым исходным кодом, которая поддерживает корневые серверы DNS и проверенную безопасность (я бы сказал, каждую неделю).
Настройте простой сервер с рекурсией и простой внутренний домен (вы можете называть его как хотите), который будет обслуживаться этим доменом. Рекурсия может быть разрешена только для некоторых IP-адресов, и это хорошая практика, даже если ваш DNS-сервер не будет доступен в Интернете:
acl recurseallow { x.x.x.x; x.x.x.x; x.x.x.x; };
options {
<some other options you have already>
allow-recursion { recurseallow; };
};
Bind также поддерживает dynamic dns
обновления, и вы можете использовать nsupdate
инструмент, позволяющий клиентам openvpn обновлять сервер имен своими именами. Он использует криптографические ключи, чтобы делать все безопасно, и творит чудеса. Вот краткое руководство о nsupdate и еще о Динамический DNS.
При подключении клиента OpenVPN можно было бы динамически создавать записи DNS, которые могут быть запрошены вами локально или клиентом через туннель VPN.
Одним из таких подходов может быть настройка DNS-сервера с помощью LDAP.
http://freshmeat.net/projects/ldap2dns/
Затем вы можете использовать сценарии перед публикацией в OpenVPN для добавления или изменения записей DNS. Посмотрите что-то вроде этого, чтобы увидеть, как работают предварительные / пост-скрипты, взаимодействующие с LDAP.
В противном случае вы можете использовать MySQL, что может быть немного проще, используя аналогичный подход.
Вам нужен DNS-сервер, который может выполнять как «рекурсивные запросы», так и быть авторитетным для этого домена, который вы хотите настроить. Я бы рекомендовал игнорировать идею «внутреннего DNS», просто считая его обычным DNS-сервером с авторитетными и рекурсивными возможностями. Он «внутренний» в том смысле, что вы разрешаете доступ к нему только из ваших сетей, скажем, помещая его за ваш брандмауэр или ограничивая доступ к нему, что на самом деле не влияет на конфигурацию.
Я бы, вероятно, выбрал «BIND», который является широко доступным и открытым исходным кодом, в основном потому, что я знаком с ним. Но почти все, что не является сервером только для кеширования, будет работать. Например, вы можете использовать «PowerDNS», но не его вариант «pdns-recursor», предназначенный только для кэширования.
В BIND вам нужно установить «allow-recursion» для списка ваших IP-адресов, к которым вы хотите иметь доступ, а затем настроить зону для IP-адресов OpenVPN. Вы можете либо использовать инструмент динамического обновления DNS для изменения зоны (убедитесь, что файл зоны и каталог, в котором он находится, доступны для записи DNS-сервером - это проблема №1, с которой сталкиваются пользователи в этой конфигурации), либо использовать оболочку скрипт или что-то еще, обновите файл зоны напрямую.