четверг, 17 июня 2010 г.

Настройка DNS сервера bind9 и настройка локальной зоны .lan

Когда сервер обслуживает локальную сеть офиса/предприятия, то сотрудникам в первую очередь нужен интернет и во вторую очередь удобство использования локальных ресурсов. Согласитесь, не очень удобно набирать в своем браузере http://192.168.1.1 для того, чтобы зайти на сервер, намного удобнее будет, если пользователь будет набирать http://server.lan или что-то подобное. При этом, он не привязан к ip адресу сервера и локальные ресурсы можно переносить с одного сервера на другой, не объясняя сотрудникам, что какой-то внутренний сайт был перенесен и им теперь нужно вводить в браузер другой ip адрес сервера. Да и пинговать сервер от клиентов куда удобнее как ping server.lan.









Итак имеем:
Сервер с адресом 192.168.1.1
Необходимо:
1. Поднять DNS, чтоб пользователи могли пользоваться нашим DNS сервером и не были привязана к DNS провайдера
2. Создать домен первого уровня *.lan, где хосты будут иметь адреса mysite.lan, mysite2.lan и т.д.

Для начала, устанавливаем сам сервер DNS

sudo apt-get install bind9

Затем, скопируем файл настроек по умолчанию для создания его резервной копии и отредактируем рабочий файл

sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.original
sudo nano /etc/bind/named.conf.options

Внесем необходимые изменения (синим выделены основные изменения)










#Создадим сеть, которой будет разрешено посылать запросы через наш DNS сервер
acl "mynetwork" {192.168.1.0/24; 127.0.0.1;};

options {
#рабочая директория
   directory "/var/cache/bind";
   // If there is a firewall between you and nameservers you want
   // to talk to, you may need to fix the firewall to allow multiple
   // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
   // If your ISP provided one or more IP addresses for stable 
   // nameservers, you probably want to use them as forwarders.  
   // Uncomment the following block, and insert the addresses replacing 
   // the all-0's placeholder.
 
#можно указать ip адреса DNS провайдера
#forward first; 
#forwarders {
# 1.1.1.1;
# 2.2.2.2;
#};

   #можно явно указать на каком интерфейсе обслуживать DNS запросы
   listen-on port 53 {
   127.0.0.0;
   192.168.1.1;
   };

   auth-nxdomain no;    # conform to RFC1035

#отключаем использование ipv6 за ненадобностью
   listen-on-v6 { none; };

   #разрешаем отправлять запросы только с сети mynetwork
  allow-query {"mynetwork";};

#разрешаем отправлять рекурсивные запросы с сети mynetwork я отключаю
   #recursion yes;
   #allow-recursion { mynetwork; };

   #можно задать максимальное число соединений с сервером
   #tcp-clients 32;
   #};

   #можно указать название версии DNS сервера, чтоб ввести в заблуждение
   #любого, кто попытается узнать на каком пакете основан наш DNS сервер
   #version "DNS serer v.1.0";
];

С настройками сервера закончили. DNS сервер можно уже смело запускать т.к. он полностью рабочий, но если хочется создать локальную зону, то для этого отредактируем следующий файл, предварительно сохранив его копию (синим выделены изменения)

sudo cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.default-zones.original
sudo nano /etc/bind/named.conf.default-zones

// prime the server with knowledge of the root servers
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 "lan" {
  type master;
  file "/etc/bind/db.lan";
};

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

После создаем файлы db.lan и db.lan.rev, которые мы указали для создания нашей зоны

sudo touch /etc/bind/db.lan
sudo touch /etc/bind/db.lan.rev

Отредактируем файл db.lan

sudo nano /etc/bind/db.lan

;
; BIND data file for broadcast zone
;
$TTL 604800
@ IN SOA lan. root.lan. (
     1 ; Serial
604800 ; Refresh
 86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.lan.
ns A 127.0.0.1
server A 192.168.1.1

Теперь отредактируем файл db.lan.rev

sudo nano /etc/bind/db.lan.rev

;
; BIND reverse data file for broadcast zone
;
$TTL 604800
@ IN SOA lan. root.lan. (
     1 ; Serial
604800 ; Refresh
 86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1 PTR server.lan

Последний штрих

sudo nano /etc/resolv.conf

search lan
nameserver 127.0.0.1
#если не указывали в поле forward в файле #/etc/bind/named.conf.options
#DNS адреса своего провайдера, то тогда необходимо указать его #здесь
nameserver 1.1.1.1

Теперь можно перезапустить службу DNS

sudo service bind9 restart

Проверяем

host server

Видим

server.lan has address 192.168.1.1

И последняя проверка

host 192.168.1.1

Видим

1.1.168.192.in-addr.arpa domain name pointer server.lan.1.1.168.192.in-addr.arpa.

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


Если у вас уже установлен сервер DHCP, то тогда в его файле настроек /etc/dhcp3/dhcpd.conf необходимо добавить следующую строку


option domain-name-servers 192.168.1.1;

Если нет, то пропишем у каждого клиента наш DNS сервер 192.168.1.1.
Я, все-таки, порекомендовал бы вам поставить DHCP сервер, чтоб не делать изменения по всем вашим пользователям.

И не забываем включить форвардинг между сетевыми картам в файле /etc/sysctl.conf. А именно net.ipv4.ip_forward=1

Теперь мы можем создавать виртуальные хосты для наших серверов. Но об этом позднее

1 комментарий:

Анонимный комментирует...

Спасибо большое за гайды Про ДашСиПи и ДНС ОднаКо Нашел Ошибку которая корала мой не выспанный мозг
sudo gedit /etc/bind/named.conf.options

В последней строке Скобка квадратная, а не фигурная Файлило

а вот тут Хотелось бы поподробнее

#можно указать ip адреса DNS провайдера
#forward first;
#forwarders {
# 1.1.1.1;
# 2.2.2.2;
#};

Типо того ?

forward first;
forwarders {
82.117.XXX.XXX;
82.117.XXX.XXX;
};

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