Всем привет!
Такой вопрос:
Есть домен vasia_pupkin.ru, в этом домене есть www сервер, где пресловутый Вася рассказывает всему миру о своей нелегкой жизни, и хочется ему чтоб видны были его жизненные подвиги всем желающим 24х7х365.
У Васи есть два провайдера (X и Y) с реальными IP вида x.x.x.x и y.y.y.y соответственно.
Вася написал на своем DNS сервере две записи указывающие на один хост:
www IN A x.x.x.x
www IN A y.y.y.yПроверяет:
[ www vasia @ / ] => nslookup www.vasia_pupkin.ru
Server: dns.vasia_pupkin.ru
Address: z.z.z.z#53Non-authoritative answer:
Name: www.vasia_pupkin.ru
Address: y.y.y.y
Name: www.vasia_pupkin.ru
Address: x.x.x.xПровайдер Y у Васи жадный до безобразия и Вася намерен его использовать только в случае падения провайдера X. Вот тут то и возникает вопрос:
Как сделать так чтоб первым адресом в ответе DNS выдвался адрес x.x.x.x, соответственно клиенты лезли через провайдера X ? Нет ли чего-нибудь типа weight как у MX записей?
Простое переставление местами не помогает - порядок IP идет судя по всему в порядке возрастания первого, затем второго, ну и так далее октета.
rrset-order {
class IN type A name "www.vasia_pupkin.ru" order fixed;
order cyclic;
};fixed - Records are returned in the order they are defined in the zone file.
Note: The rrset-order statement is not yet implemented in BIND 9. BIND 9 currently supports only a "random-cyclic" ordering, where the server randomly chooses a starting point within the RRset and returns the records in order starting at that point, wrapping around the end of the RRset if necessary.
rrset-order ему не пойдет, ему нужно в зависимости от того по какой выделенке пашет, отдавать соотвествующий ip, а не гонять их по кругу или выдавать в фиксированном порядке.задача интересная и непростая.
предлагаю обсудить такой вариант:
bind 9 ой версии.
в named.conf в options пишем:
forward first и указываем ip nameservera основного прова (он типа secondary и держит зону как slave)
forwarders (ip nameservera основного прова)
то есть все запросы для нашей зоны, которые приходят на наш nameserver, отправляем на dns провайдера . В случае падения основного прова, правило first не отработает и наш nameserver должен отрезолвить запрос сам.
создаем 2 файла с описанием одной и тоже зоны, но с разными ip
создаем Аксели
acl "other" {
здесь пишем localhost, наши локальные сети , ip второго прова};
view "internal" { match-clients { "other"; };
zone "нашазона.ru" in {
type master;
allow-transfer { ip второго прова; };
file "file-зона2";
};
};view "main" {
match-clients { any; };
zone "нашазона.ru" in {
type master;
allow-transfer { ip основного прова ; };
file "file-зона1";
};
};аксели нужны, чтобы передавать разные файлы зон провайдерам
таким образом при падении основного прова, наш сервер будет
резолвить сам, можно сделать форвард на второго прова в акселе other.
может что-то упустил или конструкция неверна - пусть гуру поправят !
В ходе эксперимента установлено, что если вторую запись обзывать не A с CNAME то первой отдается A запись и только потом CNAME
В формате djbdns:
+www.vasia_pupkin.ru:x.x.x.x
Cwww.vasia_pupkin.ru:y.y.y.y[ www vasia @ / ] => nslookup www.vasia_pupkin.ru
Server: dns.vasia_pupkin.ru
Address: z.z.z.z#53Non-authoritative answer:
Name: www.vasia_pupkin.ru
Address: x.x.x.x
Name: www.vasia_pupkin.ru
Address: y.y.y.y