Смастерил я, блять, DNS failover для домена второго уровня.
Два хоста, один 66.66.66.66, другой 99.99.99.99. Находятся в разных датаценторах, ходить на них через один гетвей не алё. Захотелось обезопасится на случай уебывания метеорита в один из датаценторов.
Поставил на каждом по bind9, каждому указал выдавать A-записью свой IP, и указал их в качестве неймсерверов для этого домена. Работает. Один хост падает — IP резолвится через другой.
Но не везде, блять. DNS в моем смешном ётовском модеме категорически отказывается пользоваться неймсервером дальше первого. И все время выдает 66.66.66.66, если тот работает. Если нет, то SERVFAIL.
Ну и сколько миллионов пользователей работают через такие смешные модемы? И че делать? Ставить на третьем хосте наблюдательную собаку, которая будет неймсервера для домена менять в случае пиздеца? Так и не поможет: у этого модема еще и кеш на полдня.
А надо, чтобы оба отдавали оба адреса. Кешируется-то запись A в конечном итоге, больше к NS не обращаются. А в записи у тебя один адрес. Почему один и тот же? Потому что где-то стоит a<b, и всё работает.
И вообще, ты это всё по результатам работы воображаешь, или dig'ом проверял?
@komar Иначе, повторю, всё, что за кэшем (от локалхоста до сети провайдера) увидит только один адрес и будет работать с ним.
Два DNS-сервера тебе нужны, чтобы обеспечить отказоустойчивость и распределение нагрузки потока DNS-запросов, а не отказоустойчивость и распределение нагрузки работы сервиса. В своей программной системе можно использовать контроль доступности серверов, который будет практически мгновенно менять набор выдаваемых IP-адресов для динамического управления подключениями клиентов (то есть service discovery), но, как мы видели в предыдущих сериях, в глобальном вебе это не работает.
@komar В connect(2) нет резервирования, он либо соединяется с определённым портом на определённом адресе, либо выдаёт ошибку. Отказоустойчивость либо реализуется в программе, получающей несколько адресов (например, из DNS) и по какой-то логике с ними работающей (спалю, на всякий случай, что браузер не обязан догадываться, какой адрес из представленных выглядит живее, исходя из предыдущих попыток соединения и своего настроения), либо внешними агентами, оперативно распространяющими информацию о доступности и поддерживающими её актуальность (заменяющими по факту иерархическую, исторически совместимую и медленную систему доменных имён).
Я не фантазирую, а объясняю, как, в конечном итоге, работает то, что ты наворотил.
@komar Действительно.
@komar …и почему тупой MITM DNS в «Ёте» всё портит.
@komar Обоснованная отечественным законодательством подмена ответов от внешних серверов на свои.
@komar Долбоёбы не выкладывают вывод dig и дамп пакетов, позволяющий понять, в чём проблема, и ограничиваются фразами про блондинистый модемчик, с которым фсё ниработает.
Ты вообще понимаешь, что клиентские компьютеры к ns-серверам сами не ходят?