Рассмотрим ситуацию, когда в локальной сети есть один роутер, один сервер на Debian, который должен отвечать на запросы по определенному доменному имени как внутри сети, так и извне, и выполнять роль name-сервера, а также некоторое количество «клиентских» устройств (компьютеры под управлением Windows, планшеты, смартфоны).
Пусть:
IP адрес роутера 192.168.1.1
IP адрес сервера 192.168.1.10
Имя домена localdomain.net
Для решения данной задачи настроим сервер таким образом, чтобы при обращении по доменному имени внутри сети он отвечал по локальному адресу.
Для начала установим необходимые пакеты.
sudo apt-get -y install bind9 dnsutils
Теперь отредактируем файл /etc/bind/named.conf.options
sudo nano /etc/bind/named.conf.options
Приведём его к следующему виду:
acl mynetwork {192.168.1.0/24; 127.0.0.1; };
options {
directory "/var/cache/bind";
auth-nxdomain no;
forwarders {192.168.1.1; 8.8.8.8; };
listen-on-v6 { none; };
allow-query { mynetwork; };
};
Опция acl ограничивает адреса, которые могут запрашивать зоны с нашего сервера. В данном примере это разрешено подсети 192.168.1.0/24.
allow-query { mynetwork; }; — список тех, кто имеет право запрашивать информацию. Можно ограничить с помошью acl либо установить allow-query { any; };
forwarders {192.168.1.1; 8.8.8.8; }; — это DNS провайдера, или любые другие, у которых можно получить информацию о доменахб неизвестных Вашему серверу.
Настройка зон
Отредактируем файл /etc/bind/named.conf.local:
sudo nano /etc/bind/named.conf.local
Добавляем в него файлы наших зон (зону прямого просмотра и зону обратного просмотра):
zone "localdomain.net" {
type master;
file "/etc/bind/db.localdomain.net";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/1.168.192.in-addr.arpa.zone";
};
Зона прямого просмотра
Создадим файл для зоны прямого просмотра.
sudo nano /etc/bind/db.localdomain.net
Со следующим содержимым:
$TTL 30
$ORIGIN localdomain.net.
@ IN SOA localdomain.net. admin.localdomain.net. (
2015020301 ; Serial
1d ; Refresh
1h ; Retry
1w ; Expire
2h ; Negative Cache TTL
)
@ IN NS localdomain.net.
@ IN NS ns.provider.org.
@ IN A 192.168.1.10
Здесь:
$ORIGIN — оригинальное имя зоны
localdomain.net. — Наш DNS-сервер (точка в конце обязательна ).
admin.localdomain.net. — email администратора сервера, где вместо символа @ используется точка.
Serial — серийный номер зоны в формате ГГГГММДД и номер текущего изменения за этот день. (Важно, при каждом изменении, нужно редактировать этот номер увеличивая его в большую сторону) Пример: 2015020301 .
Refresh — период времени с которым вторичный сервер днс обращается к основному.
Retry — период с которым вторичный сервер будет повторять попытки при неудачном обновлении.
Expire — максимальное время использования данных на вторичном сервере, после которого делается обязательное обновление.
Negative Cache TTL — время актуальности данных в кэше запросов.
Далее идут записи имён хостов с ip-адресами или псевдонимами.
ns.provider.org. — вместо этой записи можете указать NS вашего регистратора либо Free DNS сервиса.
В конце этого файла нужно обязательно оставить пустую строку!
Зона обратного просмотра
Создадим файл для зоны обратного просмотра.
sudo nano /etc/bind/1.168.192.in-addr.arpa.zone
И запишем туда следующее:
1.168.192.in-addr.arpa. 10800 IN SOA localdomain.net. admin.localdomain.net. (
2015020301 ; Serial
1d ; Refresh
1h ; Retry
1w ; Expire
2h ; Negative Cache TTL
)
NS localdomain.net.
10 PTR localdomain.net.
В этом файле должны быть только записи типа PTR. В конце этого файла так же должна быть пустая строка. Число 10 — это последний октет в IP адресе нашего сервера.
Например, можно добавить, допустим, в первый файл такую строку:
router IN A 192.168.1.1
А во второй такую:
1 PTR router.localdomain.net.
Тогда по адресу router.localdomain.net в браузере будет открываться web-интерфейс роутера (эквивалентно 192.168.1.1), но только внутри локальной сети.
Проверка
Проверим файлы зон на наличие ошибок командой:
sudo named-checkconf -z
Если ошибок нет, обновим информацию о зонах:
sudo rndc reload
Теперь необходимо отредактировать resolv.conf:
sudo nano /etc/resolv.conf
Приводим его в следующий вид:
domain localdomain.net
search localdomain.net
nameserver 192.168.1.10
nameserver 192.168.1.1
Проверку можно сделать двумя командами:
nslookup localdomain.net
nslookup 192.168.1.10
Которые должны выдать cледующий результат:
Имя: localdomain.net
Address: 192.168.1.10
Последние штрихи
-
- Если DHCP у вас раздает роутер, не забудьте установить выдаваемые по умолчанию DNS сервера 192.168.1.10 и 192.168.1.1
- Проверьте корректность работы, введя в консоли Windows-машины
tracert localdomain.net
-
- Если маршрут пошел сразу на адрес 192.168.1.10, значит все работает корректно. Если нет, пропробуйте очистить кэш DNS и посторить еще раз:
ipconfig /flushdns
- Не забудьте пробросить необходимые порты на роутере.
Спасибо antizlo.blogspot.com [1] и rtfm.co.ua [2]