Появилась недавно задачка — снять парочку старых DNS-серверов (провайдеровские, для пользователей).
Проблема заключалась в том, что у большого количества пользователей эти DNS были прописаны статически. Так что если просто отключить эти DNS, на техподдержку свалилось бы большое количество звонков. А их нудёж над ухом ну никак не хотелось слышать.
Первый вариант, который пришел на ум — ISG Layer 4 Redirect: собрать логины пользователей, которые ходят на старые DNS, и добавить их в RADIUS-группу с L4R. Однако, пользователь не увидел бы результата изменений своих настроей сразу же, ибо L4R-группа меняется админами. Ну или пришлось бы писать кучку скриптов, которые проверяли бы, прекратились ли запросы от этого пользователя или нет и, если да, менять группу. В общем, много лишней, неинтересной работы.
Второй вариант — перенаправлять все запросы на какой-нибудь веб-сервер с инструкцией по изменению настроек DNS.
После довольно продолжительного процесса поиска (самому-то думать лень ;) ), не увенчавшегося успехом, начал думать сам, и через какое-то время решение пришло, причем простейшее: выдаем всем пользователям, идущим на этот DNS, один единственный адрес. На этом адресе поднимаем nginx, который на любой запрос будет выдавать страничку с инструкцией по смене настроек DNS.
Настройки для bind
/etc/bind/named/named.conf.local.dumb:
/etc/bind/db.dumb:
Настройки для nginx
Правда, возникает проблема — ОС и браузеры кэшируют ответы DNS, и в инструкцию приходится добавлять пунктик про это.
Проблема заключалась в том, что у большого количества пользователей эти DNS были прописаны статически. Так что если просто отключить эти DNS, на техподдержку свалилось бы большое количество звонков. А их нудёж над ухом ну никак не хотелось слышать.
Первый вариант, который пришел на ум — ISG Layer 4 Redirect: собрать логины пользователей, которые ходят на старые DNS, и добавить их в RADIUS-группу с L4R. Однако, пользователь не увидел бы результата изменений своих настроей сразу же, ибо L4R-группа меняется админами. Ну или пришлось бы писать кучку скриптов, которые проверяли бы, прекратились ли запросы от этого пользователя или нет и, если да, менять группу. В общем, много лишней, неинтересной работы.
Второй вариант — перенаправлять все запросы на какой-нибудь веб-сервер с инструкцией по изменению настроек DNS.
После довольно продолжительного процесса поиска (самому-то думать лень ;) ), не увенчавшегося успехом, начал думать сам, и через какое-то время решение пришло, причем простейшее: выдаем всем пользователям, идущим на этот DNS, один единственный адрес. На этом адресе поднимаем nginx, который на любой запрос будет выдавать страничку с инструкцией по смене настроек DNS.
Настройки для bind
/etc/bind/named/named.conf.local.dumb:
view "dumb" { match-clients { dumb-clients; }; zone "." { type master; file "/etc/bind/db.dumb"; }; };
/etc/bind/db.dumb:
$TTL 1m @ IN SOA domain.name. dnsmaster.domain.name. ( 4 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS notify.domain.name. * IN A <strong>address</strong>
Настройки для nginx
server { listen 80; server_name notify.domain.name; root /var/www/p80/; index index.html; error_page 404 /index.html; }
Правда, возникает проблема — ОС и браузеры кэшируют ответы DNS, и в инструкцию приходится добавлять пунктик про это.