LINUX.ORG.RU

Настройка своего DNS (Bind9)

 


0

1

Здравствуйте. Помогите мне пожалуйста разобраться с тем как работает DNS сервер.

На данный момент у меня имеется следующее:

  1. Свой домен назовем его site.ru

  2. Два внешних IP:

  3. Первый IP - 1.1.1.1

  4. Второй IP - 2.2.2.2

(IP написал для примера)

  1. Свой DNS сервер на BIND9

На данный момент что бы у меня сделаны две ns записи у регистратора доменных имён на один IP

ns1.site.ru 1.1.1.1

ns2.site.ru 1.1.1.1

И такая настройка для первого IP

$TTL    1d;
;default expiration time (in seconds) of all RRs without their own TTL value
@       IN      SOA     ns1.site.ru. root.site.ru.      (
        1       ; Serial
        1d      ; Refresh
        1h      ; Retry
        1w      ; Expire
        1h ); Negative Cache TTL

;name servers - NS records
@       IN      NS      ns1.site.ru.;

;name servers - A records

@      IN      A       1.1.1.1
www    IN      A       1.1.1.1
ns1    IN      A       1.1.1.1

Сам вопрос вот какой:

Как правильно настроить запись для второго внешнего IP адреса 2.2.2.2 который я хочу присвоить для ns2?

А что мешает поменять у ns2.site.ru адрес с 1.1.1.1 на 2.2.2.2 ?

Перед этим желательно убедиться, что 2.2.2.2 отвечает на запросы к домену site.ru. Как минимум dig @2.2.2.2 site.ru. soa выдает актуальные данные.

т.к. у тебя несколько внешних адресов, то добро пожаловать в мир удивительных приключений с policy routing.

vel ★★★★★
()
Ответ на: комментарий от vel

IP адреса от разных провайдеров.

А что мешает поменять у ns2.site.ru адрес с 1.1.1.1 на 2.2.2.2 ?

IP адрес я сегодня сменил и жду когда он прибазируется это занимает до 24 часов.

Меня больше мучает вопрос какие настройки нужно сделать у меня что бы если один из провайдеров вдруг отвалился то доступ к сайту в любом случае был через другого провайдера?

Или мне для каждого ip нужно будет поднимать dns?

Mister_X
() автор топика
Последнее исправление: Mister_X (всего исправлений: 1)
Ответ на: комментарий от hbars

А вобще там много интересного :)

Это я понимаю вот и хотелось бы это интересное изучить и познать =)

Настроить policy-routing.

Пошёл читать что это за зверь такой и с чем его едят.

В dns два in a. Все остальное в cname.

А можно тут не много по подробней?

Как я это понял нужно привести к следующему виду

$TTL    1d;
;default expiration time (in seconds) of all RRs without their own TTL value
@       IN      SOA     ns1.site.ru. root.site.ru.      (
        1       ; Serial
        1d      ; Refresh
        1h      ; Retry
        1w      ; Expire
        1h ); Negative Cache TTL

;name servers - NS records
@       IN      NS      ns1.site.ru.;
@       IN      NS      ns2.site.ru.;

;name servers - A records

@      IN      A       1.1.1.1
www    IN      A       1.1.1.1
ns1    IN      A       1.1.1.1

@      IN      A       2.2.2.2
www    IN      A       2.2.2.2
ns2    IN      A       2.2.2.2

Вот тут я и потерял всяческое понимание как нужно делать дальше.

Mister_X
() автор топика
Ответ на: комментарий от Mister_X

то что ты хочешь это динамический DNS твоя зона должна быть с allow-update { localhost; };

а дальше пишешь скрип который проверяет доступность ip и через nsupdate редактирует зону на то что нужно.

просто несклько ip на одно имя тебе не даст того что ты хочешь, а будет просто рандомно отвечать round robin будет

cylon17
()
Ответ на: комментарий от Mister_X

А вобще там много интересного :)

Это я понимаю вот и хотелось бы это интересное изучить и познать =)

Настроить policy-routing.

Пошёл читать что это за зверь такой и с чем его едят.

Вот твоя конфигурация для netplan. Может что нужно будет подправить.

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 1.1.1.1/24
      gateway4: 1.1.1.254
      nameservers:
        addresses: [127.0.0.1]
      routing-policy:
        - from: 1.1.1.1/32
          table: 100
    eth1:
      addresses:
        - 2.2.2.2/24
      gateway4: 2.2.2.254
      nameservers:
        addresses: [127.0.0.1]
      routing-policy:
        - from: 2.2.2.2/32
          table: 200
  routing-tables:
    100:
      - to: 0.0.0.0/0
        via: 1.1.1.254
    200:
      - to: 0.0.0.0/0
        via: 2.2.2.254


В dns два in a. Все остальное в cname.

А можно тут не много по подробней?

Как я это понял нужно привести к следующему виду

```
$TTL 1d;
;default expiration time (in seconds) of all RRs without their own TTL value
@ IN SOA ns1.site.ru. root.site.ru. (
1 ; Serial
1d ; Refresh
1h ; Retry
1w ; Expire
1h ); Negative Cache TTL

;name servers - NS records
@ IN NS ns1.site.ru.;
@ IN NS ns2.site.ru.;

;name servers - A records

@ IN A 1.1.1.1
www IN A 1.1.1.1
ns1 IN A 1.1.1.1

@ IN A 2.2.2.2
www IN A 2.2.2.2
ns2 IN A 2.2.2.2
```
Вот тут я и потерял всяческое понимание как нужно делать дальше.

Ну так оно работать будет.
Если второй канал нужен больше для бэкапа, то есть еще варианты.

hbars ★★★★★
()
Ответ на: комментарий от Mister_X

Меня больше мучает вопрос какие настройки нужно сделать у меня что бы если один из провайдеров вдруг отвалился то доступ к сайту в любом случае был через другого провайдера?

Такое по-нормальному только через BGP делается (которого у тебя нет и не будет). С помощью днс - только костыли, работающие кривовато.

Сразу скажу, что если ты тупо пропишешь в зону две A записи с разными айпи-адресами, то работать в качестве резервирования оно в большинстве случаев не будет. Если один из этих двух адресов отвалится а второй будет работать - посетители просто в половине случает будут получать таймауты коннекта, в другой половине - видеть сайт. Логики «если один айпи не сработал, проверяем следующую A-запись» в браузерах нет, они просто берут рандомную и коннектятся к ней.

Чуть более рабочий способ: на своих двух внешних айпи поднимаешь два днса, в каждом по одной A-записи, но у каждой свой айпи-адрес. Два днса в качестве резервирования работают (только убедись что в вышестоящих днсах оба твоих указаны с айпи-адресами а не только доменные), а так как при упавшем одном из инетов днс, который отдаёт тот адрес сайта, тоже будет недоступен, то все получат адрес от другого, где он работающий. У такой схемы минус в том, что ответы днсов обычно кешируются, и в кеше вполне может оказаться старый ответ с уже упавшим адресом. Чтобы этого избегать, придётся уменьшать длину кеша (TTL, но некоторые всё равно будут кешировать надолго и игнорировать это поле), и тем самым повышать нагрузку на днс-сервер (к нему будет больше запросов). Хотя если у тебя днс ради единственного сайта то наверно это не страшно.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Логики «если один айпи не сработал, проверяем следующую A-запись» в браузерах нет, они просто берут рандомную и коннектятся к ней.

Странно, браузеры в первую очередь должны уметь делать это.

curl/wget перебирают полученные адреса в случае ошибки.

vel ★★★★★
()

лучше схемку подробнее разрисуй, а то возможны разные варианты.
Это оно?

INET#1 >---
           \   --SINGLE-SERVER-GATE-----
            ---|eth0  WWW + BIND + etc |
            ---|eth1                   |
           /   -------------------------
INET#2 >---

Atlant ★★★★★
()
Ответ на: комментарий от vel

IMHO в этой конструкции для netplan нужно добавить в секцию «routing-tables:»

```
32767:
- to: 0.0.0.0/0
via: 1.1.1.254
```
1.1.1.254 - шлюз по умолчанию для основного канала

Ну тогда для первого интерфейса вообще выбросить routing-policy и routing-tables и сделать просто:

            routes:
            -   to: default
                via: 1.1.1.254

hbars ★★★★★
()
Ответ на: комментарий от vel

Нет! Я уже задолбался объяснять почему.

Пока netplan не сможет родить правило

```
1: from all lookup main suppress_prefixlength 0
```
для корректной работы policy routing в таблице main не должно быть dgw.

А при чем здесь suppress_prefixlength и dgw?
В этой теме не про это.

hbars ★★★★★
()