Страница 1 из 2

BIND и резервирование каналов

Добавлено: 2010-12-22 19:56:01
Leviafan
Сразу прошу прощения - не могу светить реальные IP, я думаю это делу не помешает. :pardon:
Вообщем сейчас тружусь над подключением второго провайдера для резерва. И появился вопрос как сделать что бы при пропадании инета от первичного прова (пров А) все перелазило на прова вторичного (пров Б)

IP первый: 111.111.111.111
IP второй: 222.222.222.222
Имя домена: moy.domen.ru

Как перебросить defaultrouter я нашел скрипт, теперь думаю а как решить проблему с DNS.
Поставил я значит на регистраторе имен два DNS сервера

Код: Выделить всё

ns.moy.domen.ru    111.111.111.111
ns1.moy.domen.ru  222.222.222.222
Решил поднять все два DNS на одной тачке. Основной как всегда :smile: , вторичный в Jail.
Конфига основного: (в нем для локалки я сделал свои view)

Код: Выделить всё

acl internal { 192.168.12.0/24; 127.0.0.1/32; };
   options {
          hostname "ns.moy.domen.ru ";
          directory "/etc/namedb";
          pid-file "/var/run/named/pid";
          dump-file "/var/dump/named_dump.db";
          statistics-file "/var/stats/named.stats";
          listen-on {
         	127.0.0.1;
          	192.168.12.1;
	  	111.111.111.111;
         };
          interface-interval 10;
          forward first;
          forwarders {
          8.8.8.8;
          };
          version "DNS";
   };
   logging {
          channel syslog {
          syslog daemon;
          severity info;
          print-category yes;
          print-severity yes;
       };
   category xfer-in { syslog; };
   category xfer-out { syslog; };
   category config { syslog; };
   category default { null; };
   };

   
########################################################################################
view internal {
    match-clients { internal; };
    recursion yes;
    allow-query { internal; };
    allow-transfer { none; };
	
	zone "." {
			type hint;
			file "named.root";
	};
	zone "localhost" {
			type master;
			allow-query { 127.0.0.1; };
			file "master/localhost";
	};
	zone "0.0.127.IN-ADDR.ARPA" {
			type master;
			allow-query { 127.0.0.1; };
			file "reverse/localhost.rev";
	};
	zone "12.168.192.IN-ADDR.ARPA" {
			type master;
			allow-query {
         	        127.0.0.1;
		        192.168.12.0/24;
			};
			file "reverse/in.12.168.192.rev";
	};
	zone "moy.domen.ru" {
			type master;
			file "master/moy.domen.ru_local";
			allow-query { any; };
	};   
};
########################################################################################

########################################################################################
view external {
    match-clients { any; };
    recursion no;
    allow-query { any; };
	
		zone "." {
			type hint;
			file "named.root";
		};
		zone "moy.domen.ru" {
			type master;
			file "master/moy.domen.ru";
			allow-query { any; };
		};
};
########################################################################################
Зона moy.domen.ru

Код: Выделить всё

$TTL 320
moy.domen.ru.      IN      SOA     ns.moy.domen.ru. admin.moy.domen.ru. (
             2010122001 ; Serial
             28800      ; Refresh
             7200       ; Retry
             2419200    ; Expire
             86400)     ; Negative Cache TTL
;
             IN      NS      ns.moy.domen.ru.
             IN      NS      ns1.moy.domen.ru.
             IN      MX      10 mail.moy.domen.ru.
             IN      A       111.111.111.111

localhost    IN      A      127.0.0.1
ns           IN      A      111.111.111.111
ns1          IN      A      222.222.222.222
mail         IN      A      111.111.111.111
www          IN      CNAME   moy.domen.ru.
В rc.conf прописал

Код: Выделить всё

named_enable="YES"
named_flags="-u bind -c /etc/namedb/named.conf"
И на jail поставил второй DNS
Конфига вторичного:

Код: Выделить всё

acl internal { 192.168.12.0/24; 127.0.0.1/32; };
   options {
          hostname "ns1.moy.domen.ru ";
          directory "/etc/namedb";
          pid-file "/var/run/named/pid";
          dump-file "/var/dump/named_dump.db";
          statistics-file "/var/stats/named.stats";
          listen-on {
         	127.0.0.1;
          	192.168.12.2;
	  	222.222.222.222;
         };
          interface-interval 10;
          forward first;
          forwarders {
          8.8.8.8;
          };
          version "DNS";
   };
   logging {
          channel syslog {
          syslog daemon;
          severity info;
          print-category yes;
          print-severity yes;
       };
   category xfer-in { syslog; };
   category xfer-out { syslog; };
   category config { syslog; };
   category default { null; };
   };	
		zone "." {
			type hint;
			file "named.root";
		};
		zone "moy.domen.ru" {
			type slave;
			file "slave/moy.domen.ru";
                        masters { 192.168.12.1;};
			allow-query { any; };
		};
########################################################################################
Зона moy.domen.ru

Код: Выделить всё

$TTL 320
moy.domen.ru.      IN      SOA     ns.moy.domen.ru. admin.moy.domen.ru. (
             2010122001 ; Serial
             28800      ; Refresh
             7200       ; Retry
             2419200    ; Expire
             86400)     ; Negative Cache TTL
;
             IN      NS      ns.moy.domen.ru.
             IN      NS      ns1.moy.domen.ru.
             IN      MX      10 mail.moy.domen.ru.
             IN      A       222.222.222.222

localhost    IN      A      127.0.0.1
ns           IN      A      111.111.111.111
ns1          IN      A      222.222.222.222
mail         IN      A     222.222.222.222
www          IN      CNAME   moy.domen.ru.
В rc.conf прописал

Код: Выделить всё

named_enable="YES"
named_chrootdir=""
named_flags="-s"

Вообщем теперь как сделать что бы при отключении инета от первого провайдера все перебрасывалось на второго?
Т.е. что бы отрубается инет, DNS1 не доступен, должен включится DNS2 и там уже доменные имена перекатят на второго прова

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 20:03:13
Гость
не занимайтесь херней
без выделеного блока PI для вас и BGP ваша задача не решается

ваши ns ns1 итд безполезны

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 20:44:51
Leviafan
Гость, может Вы не поняли что я хочу)
нужно сделать именно что бы 2 разных IP в ответах было.
Т.е. когда ложится первый пров, то ложится естестенно и DNS1, тут надо что бы вступал в действие DNS2 и выдавал на доменное имя IP второго прова.
И тут вопрос правильно ли я настроил сами DNS зоны, а именно slave зону на DNS2.

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 21:02:08
Гость
Решил поднять все два DNS на одной тачке. Основной как всегда , вторичный в Jail.
можно и не джаилить
достаточно бинд на два разных интерфеса поцепить
Вообщем теперь как сделать что бы при отключении инета от первого провайдера все перебрасывалось на второго?
Т.е. что бы отрубается инет, DNS1 не доступен, должен включится DNS2 и там уже доменные имена перекатят на второго прова
в большой теории
когда первый в списке ns не доступен, то должно смотреться по второму по списку ns итд, АВТОМАТОМ
на практике будут зарежки при открытия сайта итд

ps ну я так и понял что вы херней страдаете
какой смысл двух разных айпи?
брать нужно одну сетку с реальными айпи
подключать по BPG, и не парится с ns

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 21:11:06
Leviafan
ps ну я так и понял что вы херней страдаете
какой смысл двух разных айпи?
брать нужно одну сетку с реальными айпи
подключать по BPG, и не парится с ns
смысл 2х разных ИП что бы когда вырубается один пров входил в бой сразу второй, и задержки в почте и веб-сервисах были минимальны (а именно равны будут TTL)
Ведь тут дело в том что IP находятся в разных подсетях, и от разных провайдеров и по разным каналам идут (один по витой паре, второй по оптике)

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 21:37:59
terminus

Код: Выделить всё

$TTL 320
ТТЛ=5 минут. Такое время старые записи будут жить в кешах других серверов.
Это ответ на вопрос?

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 21:45:51
Leviafan
terminus писал(а):

Код: Выделить всё

$TTL 320
ТТЛ=5 минут. Такое время старые записи будут жить в кешах других серверов.
Это ответ на вопрос?
меня больше волнует правильно ли я настроил зону slave на втором DNS

Код: Выделить всё

$TTL 320
moy.domen.ru.      IN      SOA     ns.moy.domen.ru. admin.moy.domen.ru. (
             2010122001 ; Serial
             28800      ; Refresh
             7200       ; Retry
             2419200    ; Expire
             86400)     ; Negative Cache TTL
;
             IN      NS      ns.moy.domen.ru.
             IN      NS      ns1.moy.domen.ru.
             IN      MX      10 mail.moy.domen.ru.
             IN      A       222.222.222.222

localhost    IN      A      127.0.0.1
ns           IN      A      111.111.111.111
ns1          IN      A      222.222.222.222
mail         IN      A     222.222.222.222
www          IN      CNAME   moy.domen.ru.

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 22:18:05
Гость
Leviafan писал(а):
ps ну я так и понял что вы херней страдаете
какой смысл двух разных айпи?
брать нужно одну сетку с реальными айпи
подключать по BPG, и не парится с ns
смысл 2х разных ИП что бы когда вырубается один пров входил в бой сразу второй, и задержки в почте и веб-сервисах были минимальны (а именно равны будут TTL)
Ведь тут дело в том что IP находятся в разных подсетях, и от разных провайдеров и по разным каналам идут (один по витой паре, второй по оптике)
вот для этого и придумали BGP
а учитывая что Ipv4 уже через месяц закончатся(если верить хабру)
то можно смело уже заказывать ipv6
и не заморачиватся над тем чем вы сечас страдаете

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 22:43:14
Leviafan
тут появилась вторая проблема!
второй DNS перетягивает на себя одеяло! Т.е. работает себе спокойненько DNS1, выдает IP 111.111.111.111, включаю DNS2 и переключается домен на 222.222.222.222, останавливаю DNS2 и через TTL переключается на DNS1 =111.111.111.111
Может там где выше сериал в описании зоны там и берется... ниче не пойму. Вроде по уму надо сначало опрашивать ns.moy.domen.ru, затем если он не отвечает переходить на опрос ns1.moy.domen.ru, у меня получается что сразу ns1.moy.domen.ru опрашивает 0_O

я уже и зону на DNS2 сделал master и всеравно не помогает

Re: BIND и резервирование каналов

Добавлено: 2010-12-22 22:55:32
Leviafan
и вот только что запустил DNS1 проверил - все идет через 111.111.111.111, запустил DNS2 проверил - опять все идет через 111.111.111.111, сделал на DNS2 rndc reload -> moy.domen.ru остался на 111.111.111.111, а mail.moy.domen.ru перешел на 222.222.222.222
Чето не могу понять логику.
При этом на DNS1 serial был выше чем на DNS2

Re: BIND и резервирование каналов

Добавлено: 2010-12-23 0:22:09
terminus
Вы в курсе как работает связка Мастер-Слейв? Слейв переодически тянет данные с Мастера.
Запускайте себе два мастера, а при редактировании зоны надо будет вносить изменения в оба.

Re: BIND и резервирование каналов

Добавлено: 2010-12-23 0:27:55
Leviafan
terminus писал(а):Вы в курсе как работает связка Мастер-Слейв? Слейв переодически тянет данные с Мастера.
Запускайте себе два мастера, а при редактировании зоны надо будет вносить изменения в оба.
кажется проблемы с самой интерпретацией в связке с jail...
потому что когда я хочу отредактировать (сидя не в jail) файл типа /usr/local/jail/first/etc/namedb/named.conf (first - имя клетки) мне попадает файл который находится в /etc/namedb/named.conf (т.е на реальной машине).
А вот в самой клетке если сидеть и отредактировать /etc/namedb/named.conf то показывает уже то что надо, т.е. то что я изначально делал для клетки.
Вообщем я запутался уже.

Поставил уже обратно в клетке slave... всеравно тянет то mail перекинет на второго прова, то ориджин на второго прова, а mail на первого... Конфликт chroot какой то.

Re: BIND и резервирование каналов

Добавлено: 2010-12-25 22:17:34
Leviafan
Спрошу проще.
Как реализовать?
Повторюсь:
на iname.ua поставил два ns

Код: Выделить всё

ns.moy.domen.ru    111.111.111.111
ns1.moy.domen.ru  222.222.222.222
Сделал ttl на зоне равным 60
Содрал скрипт по перекидке defaultrouter, переброска инета работает.
Как делают умельцы манипуляции по быстрому переводу домена с одно IP на другой?


Я пробовал делать это с помощью вышеупомянутого скрипта с добавлением строк по замене файла зоны с дефаулт IPS на второго IPS и команду rndc reload.
Проверил это с помощью host на сервере и вижу что все меняется (ну конечно, я же использую свой DNS сервер), а вот на внешних машинах творится полный кавардак. Сейчас получилось опять так что ориджин висит на одном IP, mail висит на другом IP. И так смотрю ttl уже давным давно прошел раз 30 и проверил зону и сервер перезагружал и конфигу перечитывал всеравно какая то каша.

Re: BIND и резервирование каналов

Добавлено: 2010-12-25 22:59:55
Гость
Как делают умельцы манипуляции по быстрому переводу домена с одно IP на другой?
домена? - никак
DNS записи очень медленно расползаются по всем серверам
а дергать туда и сюда, это глупо

Re: BIND и резервирование каналов

Добавлено: 2010-12-25 23:36:37
Leviafan
ну так какой вменяемый выход из ситуации?
Я думал что если ns лежит, то все должны ломонуться к ns1 и оттуда брать уже инфу.

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 0:35:07
Гость
ну в принципе так и есть
но вы же еще пытаетесь на разных nsах держать и разные данные
а они таковыми не могут быть
они должны быть синхронизированы

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 11:50:31
Leviafan
Гость писал(а):ну в принципе так и есть
но вы же еще пытаетесь на разных nsах держать и разные данные
а они таковыми не могут быть
они должны быть синхронизированы
выхода нет?

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 13:23:58
Гость
Leviafan писал(а):
Гость писал(а):ну в принципе так и есть
но вы же еще пытаетесь на разных nsах держать и разные данные
а они таковыми не могут быть
они должны быть синхронизированы
выхода нет?
Вам же написали: что данные на обоих днс серверах, должны быть синхронизированными (т.е. одинаковыми)! Вам осталось только правильно соединить два конфига в один и использовать его на обоих серверах.

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 13:28:17
Гость
в том то и проблема
что ему нужно что бы конфиги разные были)) он их динамически подменять хочет в зависимости от того какой канал упал

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 16:18:05
Leviafan
Вот именно, тут вопрос стоит не в том что бы сделать резерв на DNS2 в случае падения DNS1 сервера, а в случае падения канала провайдера и перейти побыстренькому на другой IP.

Re: BIND и резервирование каналов

Добавлено: 2010-12-26 16:26:11
Гость
проблема как раз таки не в ns
а в сайте который должен переписываться в DNS в зависимости от того какой канал падает

вообщем кроме как BGP это не решается
тогда в DNS только один ваш реальный айпи
а BGP само направляет маршруты в зависимости от того какой канал доступен
а если доступны оба
то либо балансирует нагрузку поровну, либо смотрит на преференс

Re: BIND и резервирование каналов

Добавлено: 2010-12-30 13:07:56
EARL
Лучше всего настроить один dns сервер и привязать его к обоим интерфейсам, а дальше отслеживаем падение основного канала и редактируем (или просто копируем заранее подготовленный) файл зоны таким образом, чтобы A запись нужного нам домена указывала на резервный IP. Допустим у нас
111.111.111.111 - основной канал (№1)
222.222.222.222 - резервный канал (№2)
Наш файл исходный файл зоны

Код: Выделить всё

$TTL 320
moy.domen.ru.      IN      SOA     ns.moy.domen.ru. admin.moy.domen.ru. (
             2010122001 ; Serial
             28800      ; Refresh
             7200       ; Retry
             2419200    ; Expire
             86400)     ; Negative Cache TTL
;
             IN      NS      ns.moy.domen.ru.
             IN      NS      ns1.moy.domen.ru.
             IN      MX      10 mail.moy.domen.ru.
             IN      A       111.111.111.111

localhost    IN      A      127.0.0.1
ns           IN      A      111.111.111.111
ns1          IN      A      222.222.222.222
mail         IN      A     222.222.222.222
www          IN      CNAME   moy.domen.ru.
Т.е. сейчас у нас резолв адреса moy.domen.ru выдает 111.111.111.111.
Теперь мы обнаружили, что у нас пропала связь по каналу №1 и мы переключились на канал №2.
Напишем скрипт для редактирования файла зоны:

Код: Выделить всё

#!/bin/sh

zone="moy.domen.ru"

awk '$3 ~ "Serial" { print "\t",$1+1," ; Serial"; } $2 ~ "A" { print "\tIN\tA\t222.222.222.222"; } $2 !~ "A" && $3 !~ "Serial" { print $0; }' $zone > $zone.tmp
mv $zone.tmp $zone
rndc $zone
Здесь мы увеличиваем serial на единичку и изменяем адрес домена moy.domen.ru на 222.222.222.222
Через время, указанное в $TTL домен станет доступен по новому адресу.

ps можно просто заготовить файлы зон для разных случаев и подсовывать их dns серверу.

Re: BIND и резервирование каналов

Добавлено: 2010-12-30 13:55:54
Гость
это все ерунда
потому что зона для одного домена иногда расходится по интернету несколько суток
какой бы там TTL или сериал небыл установлен
а представим теперь у вас канал каждые 15 минут или какждый час дергается
вот тотоже

Re: BIND и резервирование каналов

Добавлено: 2010-12-30 14:34:44
EARL
Гость писал(а):это все ерунда
потому что зона для одного домена иногда расходится по интернету несколько суток
какой бы там TTL или сериал небыл установлен
а представим теперь у вас канал каждые 15 минут или какждый час дергается
вот тотоже
Иногда бюджет сильно ограничен и покупка отдельного блока PI адресов + регистрация AS никак туда не вписываются, а приведенная схема выше спасает хоть как-то. В остальном же безуслонов у этого метода есть куча минусов по сравнению со своей AS + PI блок адресов

Re: BIND и резервирование каналов

Добавлено: 2010-12-30 14:42:52
Гость
когда бюджет ограничен
используют другие варианты
благо ipv6 уже на халяву раздают
и тема подобного характера уже была на форуме, просто никто нехочет уже искать похожие решения
всем хочется общения