Home > dns > Установка Bind (named) на CentOS

Установка Bind (named) на CentOS

September 14th, 2009

В этой заметке рассмотрим установку bind на CentOS в chroot и синхронизацию (в том числе создание/удаление зон на первом и втором ДНС-сервере).
Ставим

yum install bind-chroot

Создаем файл /var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 1.2.3.1; };
        directory       "/var/named";
        allow-query     { any; };
        recursion no;
        allow-transfer { none; };
        version "no version info";
};

include "/var/named/zone.conf";

Создаем файл /var/named/chroot/var/named/zone.conf

zone "domain1.com" IN {
        type master;
        file "domain1.com.conf";
        allow-update { none; };
};

zone "domain2.com" IN {
        type master;
        file "domain2.com.conf";
        allow-update { none; };
};

Ну и файлы зон, например, /var/named/chroot/var/named/domain.com.conf

$TTL 3600
domain.com.    IN    SOA    ns1.dnsdomain.com.    root.domain.com.    (
20010610    ; Serial
10800        ; Refresh
3600        ; Retry
604800        ; Expire
86400    )    ; Minimum TTL

@        IN    NS    ns1.dnsdomain.com.
@        IN    NS    ns2.dnsdomain.com.
@        IN    A  1.2.3.1
www      IN    CNAME  @
@        IN    MX 10  mail.domain.com.
mail     IN    A   1.2.3.1

На втором сервере делаем все точно так же.
Теперь про синхронизацию зон.

На первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown -R srv-dns-acct /var/named/chroot/var/named
chmod +x /var/named/
chmod +x/var/named/chroot/
chmod +x /var/named/chroot/var/

На первом сервере создаем файл /var/named/dnssync.sh:

#!/bin/sh
cd /var/named/chroot/var/named/
tar czvf - *.conf | ssh srv-dns-acct@ns2.domain.com tar xzf - -C /var/named/chroot/var/named/

Для добавления зон на одном сервере можно пользоваться таким скриптом:

#!/bin/sh

# first param - domain, Second - IP

# Domains base
BASE="/var/named/chroot/var/named"

sed -e "s/domain.com/$1/g" "$BASE/sample" > "$BASE/$1.db.tmp"
sed -e "s/1.2.3.4/$2/g" "$BASE/$1.db.tmp" > "$BASE/$1.conf"
echo "zone \"$1\" { type master; file \"$BASE/$1.conf\"; };" >> $BASE/zone.conf
rm "$BASE/$1.db.tmp"

service named reload

dns , ,

  1. March 22nd, 2010 at 19:33 | #1

    Не совсем понял, вот здесь
    zone “domain1.com” IN {
    type master;
    file “dlekz1.ru.conf”;
    allow-update { none; };
    };

    zone “domain2.com” IN {
    type master;
    file “dlekz2.ru.conf”;
    allow-update { none; };
    };

    так делать чтоли???

  2. admin
    March 22nd, 2010 at 19:36 | #2

    Нет, вот так:
    zone “dlekz1.ru” IN {
    type master;
    file “dlekz1.ru.conf”;
    allow-update { none; };
    };

  3. admin
    March 22nd, 2010 at 19:37 | #3

    Только обратите внимание, что тут в комментах кавычки почему то ставятся не правильные. Надо такие какие в статье.

  4. March 22nd, 2010 at 19:48 | #4

    Вот я хочу сделать чтобы мой домен dlekz.ru был NS сервером, так как мне правильно сделать???

  5. admin
    March 23rd, 2010 at 08:38 | #5

    Вам нужно сделать файл зоны примерно такого содержания:

    $TTL 3600
    domain.com.    IN    SOA    ns1.domain.com.    root.domain.com.    (
    20091227    ; Serial
    10800        ; Refresh
    3600        ; Retry
    604800        ; Expire
    86400    )    ; Minimum TTL

    @        IN    NS    ns2.domain.com.
    @        IN    NS    ns1.domain.com.
    ns1     IN      A 1.2.3.1
    ns2     IN      A 1.2.4.2

    И потом вы сможете использовать ns1.domain.com и ns2.domain.com как днс-сервера для других доменов.
    Только определитесь: вы хотите делать оба нс-а на одном сервере или на разных. Если на одном, то это снижает надежность и требует наличия на сервере двух IP-адресов из разных подсетей.

  1. No trackbacks yet.