Pull to refresh

Инструктируем пользователей о смене DNS

Reading time2 min
Views810
Появилась недавно задачка — снять парочку старых 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, и в инструкцию приходится добавлять пунктик про это.
Tags:
Hubs:
Total votes 7: ↑3 and ↓4-1
Comments9

Articles