Разные заметки

воскресенье, 22 января 2012 г.

Home Server. Часть 2. Установка кэшируещего DNS в среде chroot.

Вводная информация:
192.168.93.1 - адрес сервера в локальной сети
srv93             - имя сервера
ДНС серверы:
213.234.192.7; 195.14.50.1; 8.8.8.8

Приступим...


1. Устанавливаем bind9 и сразу останавливааем:
$ sudo aptitude install bind9 
$ sudo /etc/init.d/bind9 stop



2. Подготавливаем окружение chroot:
$ sudo mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run,var/log,var/cache/bind/master,var/cache/bind/slave}
$ sudo chown -R bind:bind /var/chroot/bind9/var/*
$ sudo mknod /var/chroot/bind9/dev/null c 1 3
$ sudo mknod /var/chroot/bind9/dev/random c 1 8
$ sudo mv /etc/bind /var/chroot/bind9/etc
$ sudo ln -s /var/chroot/bind9/etc/bind /etc/bind
$ sudo ln -s /var/chroot/bind9/var/log /var/log/named
$ sudo ln -s /var/chroot/bind9/var/cache/bind/master /var/chroot/bind9/etc/bind/master
$ sudo ln -s /var/chroot/bind9/var/cache/bind/slave /var/chroot/bind9/etc/bind/slave

3. Создаём файл /etc/rsyslog.d/bind-chroot.conf следующего содержания:
$ sudo cat /etc/rsyslog.d/bind-chroot.conf 
$AddUnixListenSocket /var/chroot/bind9/dev/log

4. Редактируем /etc/default/bind9:
$ sudo cat /etc/default/bind9 
# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-u bind -t /var/chroot/bind9"

5. Для того, чтобы в логах сервера было указано правильное время с учётом часового пояса, а не по Гринвичу, выполняем:
$ sudo cp /etc/localtime /var/chroot/bind9/etc/

6. Теперь рестартуем rsyslog и стартуем bind9
$ sudo /etc/init.d/rsyslog restart
$ sudo /etc/init.d/bind9 start

7. Редактируем файл конфигурации /etc/bind/named.conf.options:
options {
        version "DNS? It's not DNS!";
        directory "/var/cache/bind";

        allow-recursion {"homenet";};
        allow-query {127.0.0.1;192.168.93.0/24;};

        forwarders {
        213.234.192.7;
        195.14.50.1;
        8.8.8.8;
        };

        //auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        listen-on {
                        127.0.0.1;
                        192.168.93.1;
                };

};

8. Редактируем файл конфигурации /etc/bind/named.conf:

acl homenet {
    192.168.93.0/24;
    127.0.0.1;
    213.234.192.7;
    195.14.50.1;
    8.8.8.8;
    };
include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";

controls {
    inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys {rndc-key;};
};

include "/etc/bind/named.conf.default-zones";

include "/etc/bind/myzones.conf";
logging {
        channel myfile {
                file "/var/log/named.log" versions 10 size 1m;
                severity dynamic;
                print-category yes;
                print-severity yes;
                print-time yes;
                };
        category config {
                myfile;
                };
        category default {
                myfile;
                };
        category queries {
                myfile;
                };
// Вот LAME сервера лучше сразу сбрасывать в null. Достают они ну просто
// катастрофически! (Для тех кто в танке, - это когда сервер не обслуживает
// делегированную ему зону)
        category lame-servers {
                null;
                };
};

9. Редактируем файл конфигурации /etc/bind/myzones.conf:
zone "ex." {
type master;
file "/etc/bind/db.ex"; };

10. Редактируем файл конфигурации /etc/bind/db.ex:
$TTL    86400           ; 1 day
@       IN SOA ex. root.ex. (
        2012012201      ; serial
        10800           ; refresh (3 hours)
        900             ; retry (15 minutes)
        604800          ; expire (1 week)
        86400           ; minimum (1 day)
        )

@       IN NS ns.ex.

ns      A 127.0.0.1
server  A 192.168.93.1 ; адрес вашего сервера в вашей сети

11. Редактируем файл конфигурации /etc/bind/local.rev:

$TTL    604800
@       IN SOA ex. root.ex. (
        2009031404      ; Serial
        604800          ; Refresh
        86400           ; Retry
        2419200         ; Expire
        604800 )        ; Negative Cache TTL
;
@       IN NS localhost.
1       PTR srv93.ex.

12. Редактируем файл конфигурации /etc/bind/named.conf.default-zones:

zone "." {
        type hint;
        file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

zone "93.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/local.rev";
};

13. Проверяем:
$ sudo dig ya.ru
; <<>> DiG 9.7.3 <<>> ya.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12068
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru.                         IN      A

;; ANSWER SECTION:
ya.ru.                  179     IN      A       213.180.193.3
ya.ru.                  179     IN      A       213.180.204.3
ya.ru.                  179     IN      A       77.88.21.3
ya.ru.                  179     IN      A       87.250.250.3
ya.ru.                  179     IN      A       87.250.250.203
ya.ru.                  179     IN      A       87.250.251.3
ya.ru.                  179     IN      A       93.158.134.3
ya.ru.                  179     IN      A       93.158.134.203

;; AUTHORITY SECTION:
.                       70154   IN      NS      g.root-servers.net.
.                       70154   IN      NS      l.root-servers.net.
.                       70154   IN      NS      j.root-servers.net.
.                       70154   IN      NS      f.root-servers.net.
.                       70154   IN      NS      a.root-servers.net.
.                       70154   IN      NS      i.root-servers.net.
.                       70154   IN      NS      d.root-servers.net.
.                       70154   IN      NS      k.root-servers.net.
.                       70154   IN      NS      m.root-servers.net.
.                       70154   IN      NS      e.root-servers.net.
.                       70154   IN      NS      h.root-servers.net.
.                       70154   IN      NS      c.root-servers.net.
.                       70154   IN      NS      b.root-servers.net.

;; Query time: 1 msec
;; SERVER: 192.168.93.1#53(192.168.93.1)
;; WHEN: Sun Jan 22 14:29:21 2012
;; MSG SIZE  rcvd: 362

$ sudo nslookup
> set q=any
> ya.ru
Server:         192.168.93.1
Address:        192.168.93.1#53

Non-authoritative answer:
Name:   ya.ru
Address: 93.158.134.203
Name:   ya.ru
Address: 213.180.193.3
Name:   ya.ru
Address: 213.180.204.3
Name:   ya.ru
Address: 77.88.21.3
Name:   ya.ru
Address: 87.250.250.3
Name:   ya.ru
Address: 87.250.250.203
Name:   ya.ru
Address: 87.250.251.3
Name:   ya.ru
Address: 93.158.134.3

Authoritative answers can be found from:
.       nameserver = a.root-servers.net.
.       nameserver = m.root-servers.net.
.       nameserver = d.root-servers.net.
.       nameserver = f.root-servers.net.
.       nameserver = b.root-servers.net.
.       nameserver = h.root-servers.net.
.       nameserver = e.root-servers.net.
.       nameserver = l.root-servers.net.
.       nameserver = j.root-servers.net.
.       nameserver = g.root-servers.net.
.       nameserver = c.root-servers.net.
.       nameserver = i.root-servers.net.
.       nameserver = k.root-servers.net.



У меня оказалось, что утилита nslookup и dig не установлена – пришлось поставить пакеты host и dnsutils командой

$ sudo aptitude install host dnsutils


Настройка BIND 9 в chroot для debian завершена!

Комментариев нет:

Отправить комментарий