Настройка DNS
Итак, DNS – Domain Name System. Эта штука занимается тем, что переводит буквенные имена типа www.linux.org в циферки типа 198.182.196.56 Общая суть работы похожа на обычную пирамиду. В самом верху стоят корневые серверы , которые обслуживают домены первого уровня (.com .net .ru и так далее). Ниже стоят сервера, которые обслуживают домены 2го уровня (slackware.com linux.org irk.ru) ну а еще ниже 3его уровня, но их обычно мало. Есть 2 типа, вернее подтипа DNS серверов кэширующий и нормальный ;-))). Кэширующий занимается только тем, что кэширует проходящие через себя запросы, но сам не отвечает на запросы. Для чего это нужно ? Например Вы выходите в интернет через медленный канал связи – зачем забивать каждый раз запросами к DNS канал ? Кэширующий прокси запросит один раз , а потом будет выдавать его мгновенно. И вам хорошо, и провайдер доволен ;-))). Нормальный же ДНС в добавок к кеширующему еще и сам поддерживает какой-либо домен.
Работает все это целомудрие так.
Например, Вы запросили www.petja.pupkin.super.com. Ваш ДНС сервер роется в своих записях – не находит такого сервера. Тогда он обращается к серверу, который держит зону .com – «Адрес www.petja.pupkin.super скажи !». Тот ему в отвер – «Таких не держим, зато знаю адрес super.com – он 1.1.1.1″. Тогда ДНС лезет к так подряд ко всем серверам, постепенно уменьшая часть имени (Это нужно для того, если зоны petja.pupkin на super.com не существует, то имя все равно бы находилось). После всех запросов ДНС знает адреса сервера super.com и www.petja.pupkin.super.com (если бы все было по честному, и ДНС держались на каждом уровне, но он бы вдобавок знал бы еще адреса pupkin.super.com и petja .pupkin.super.com). Доступно ?;-)
Теперь рассмотрим в обратную сторону. Например, вам надо узнать, кому принадлежит адрес 1.1.1.1 – вернее, какое имя ему присвоено ( например для записи в логи не адреса обратившейся машины, а ее имени). Здесь не намного сложнее ситуация – есть псевдо-домен in-addr.arpa и в нем, точно так-же прописываются адреса цыферками, только наоборот. То есть для адреса 1.2.3.4 запрос получится как к 4.3.2.1.in-addr.arpa, ну и все дальше все так же, как и в вышеприведенном примере ;-), только домен in-addr.arpa неделим ;-).
Теперь посмотрим, что же и в какую сторону надо крутить в нашем любимом линуксе (фре и тд – без разницы), что бы получить кайф от использования DNS на полную катушку.
Первым делом смотрим на файл /etc/nsswitch.conf и ищем в нем строку, похожую на
hosts: files nisplus nis dns
Эта строка означает, что при поиске хостов система сначала посмотрит в /etc/hosts, потом заглянет в NIS и уж потом только полезет к ДНС серверу.
Аналогичным целям служит файл host.conf
order hosts,bind
multi on
Я оставил его таким, какой он есть – я слишком слабо себе представляю, что значит строчка multi , а читать man на этот раз лень – проще забыть, тем более и так все работает ;-)
Пока не отбежали далеко, смотрим, что же находится в /etc/hosts
127.0.0.1 localhost localhost.localdomain
10.0.0.250 multik multik
Формат простой – слева адрес, справа имена, которые присвоены этому адресу. В принципе никто не мешает мне написать
10.0.0.250 www.microsoft.com
10.0.0.250 www.playboy.com
Установить на 10.0.0.250 веб сервер , который будет откликаться на эти имена и все – все запросы пойдут на него ;-). Точно так-же можно бороться со всякими рекламными серверами ;-) только пути поправить надо будет ;-)
Ладно, отвлеклись …идем и смотрим дальше …на /etc/resolf.conf
search pc.irk.ru
nameserver 195.46.112.2
В строчке search указывается, какое доменное имя будет по умолчанию. То есть если вы запрашиваете просто www, то сразу попробуется www.pc.irk.ru. Этот случай работает для тех имен, которые без точки. Если с точкой, то все идет как обычно. Можно указывать несколько имен после search – они все попробуются по порядку.
В следующей строчке(ах) указываются адреса ДНС серверов, к которым будет обращаться ваша машина. Здесь у меня указан мой ДНС – у вас скорее всего будет тоже свой или сервер провайдера – в общем, до куда ваш канал быстрее ;-) Причем при поднятом ДНС на локальной машине никто не мешает вам использовать адрес 127.0.0.1
Итак … вроде все во всех файликах прописали все, что нужно …теперь осталось настроить сам сервер DNS. Этим занимается специальная программа – зовется она bind. Она есть в 2х версиях – 4й и 8й. Соответсвенно 4я использует старый формат файлов, а 8я поновее и покруче. Тут я буду описывать, как настроить 8ю версию – тем более, что во всех современных дистрибутивах стоит именно она. Так же она лежит на куче серверов … ищите и обрящите .. находится легко ;-)
Итак, за настройку ДНС отвечает файл /etc/named.conf. Я буду приводить по строчкам свой реальный файл и тут-же описывать, что и куда предназначается
options {
directory "/etc/named";
};
Этот кусок описывает, где по умолчанию лежат файлы, используемые bind в своей работе.
logging {
category lame-servers { null; };
category cname { null; };
};
Эти строчки отвечают за логи bind – как видно – они выключены
zone "3mil.com" in {
type master;
file "3mil.host";
};
Эти строки описывают, что bind держит зону 3mil.com, является в ней мастером (то есть другие серверы лишь синхронизируют по нему свои записи по зоне 3mil.com) и использует для описания зоны файл 3mil.host (полный путь соотвественно /etc/named/3mil.host).
zone "112.46.195.in-addr.arpa" in {
type master;
file "pc.rev";
};
Эти строки показывают, что bind так-же отвечает за обратную зону для подсети 195.46.112.* , является в ней мастером и файл описания зоны pc.rev
zone "0.0.10.in-addr.arpa" in {
notify no;
type master;
file "local10.rev";
};
Так же bind отвечает за зону 10.0.0.*, НЕ уведомляет об этих изменениях вышестоящие сервера (зачем серверу провайдера знать о вашей приватной подсетке ?), является мастером и использует файл local10.rev
zone "." in {
type hint;
file "root.cache";
};
Эти самые важне строчки ….они описывают, в каком файле лежат адреса рутовых серверов, которые отвечают за зоны 1го уровня.
Для организации кэширующего сервера вам достаточно написать первые и последние строки – и все …
Пойдем с конца …. как можно получить root.cache ? есть 2 пути
либо забрать по ftp c internic, что не есть гуд, так как не отображает реальной информации
либо дать одну команду
dig @rs.internic.net . ns >root.cache
Как эта команда работает – оставляю попытать на ваше усмотрение ;-)
ДАЛЬШЕ ИДУТ ПРИМЕРЫ РЕАЛЬНЫХ ФАЙЛОВ – ИСПОЛЬЗУЙТЕ ИХ В СВОЕЙ РАБОТЕ ТОЛЬКО КАК ОБРАЗЦЫ !!! (мне вы не повредите, а вот себе жизнь можете подпортить ;-)
Итак, рассмотрим файл 3mil.host во всей его красе
@ IN SOA ns.3mil.com. root.3mil.com. (
1999082301 ; serial number
10800 ; refresh
600 ; retry
432000 ; expire
3600 ) ; minimum TTL
Эта запись всегда идет самой первой, значок @ обозначает, что описываем сами себя. Итак по порядку – описываемая зона держится сервером с именем ns.3mil.com, отвечает за нее человек, доступный по адресу root@3mil.com (да, первая точка заменяет @), у зоны серийный номер равен 1999082301 (обычно для него используют дату последней правки ил ревизии зоны – на него опираются другие сервера, которые берут информацию с вашего), другие сервера будет обновлять информацию о вашем 10800 секунд, при неудаче попытаются через 600 секунд, полностью зона «прокиснет» на кэширующих серверах через 432000 секунд , но не менее, чем через 3600. Уффф …. вроде все правильно. Можете эти строчки , кроме первых двух, оставлять без изменения – эти числа подсказаны жизнью.
@ NS ns.3mil.com.
@ NS ns.irtel.ru.
Эти две строски показывают, что авторитетными серверами за эту зону являются ns.3mil.com и ns.irtel.ru и именно им надо рассылать обновления зоны 3mil.com
ОБРАТИТЕ ВНИМАНИЕ НА ТОЧКИ В КОНЦЕ – ОНИ ОЧЕНЬ ВАЖНЫ !
@ A 195.46.112.2
описываем сами себя( держит зону сервер по адресу 195.46.112.2 );-)
@ MX 5 mail.3mil.com.
@ MX 20 ns.irtx.irk.ru.
Эти строчки указывают пути хождения почты для этого домена … вернее не пути, а приоритеты … с приоритетом 5 почта для зоны 3mil.com пойдет на сервер mail.3mil.com, если он не доступен или еще как-то отказывает, то пойдет на ns.irtx.irk.ru, так как у нее приоритет 20 (да и некуда больше ;-). Таким образом можно создать систему из почтовых серверов, благодаря которой потеряться емайлу будет очень тяжело ;-))) Вот и все … дальше пошли строки вида
mail A 195.46.112.2
ns A 195.46.112.2
они описывают соответствие именам mail и ns в зоне 3mil.com соответствующим адресам ( ну и что, что они одинаковы – может я потом захочу разнести сервера – 5 минут работы и все ;-)))
Теперь рассмотрим файл pc.rev ;-) это файл, который отвечает за преобразование чисел ип-адреса в имена
@ IN SOA ns.3mil.com. root.3mil.com. (
1999061901 ; Serial, todays date + todays serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
не правда-ли знакомый вид ?;-)
IN NS ns.3mil.com.
IN NS ns.irtel.ru.
Аналогичные строчки про то, кто отвечает за зону ;-)
1 IN PTR router.3mil.com.
...........
Эта строчка описывает что машина с адресом 1 в зоне 195.45.112. имеет имя router.3mil.com (обратили внимание на точку ?)
в принципе никто не мешает написать мне что-то подобное типа
200 IN PTR www.microsoft.com.
и тогда все, кто приходил с адреса 195.46.112.200 у чужой машины покажутся, как зашедшие с www.microsoft.com … можно, но во первых, это не этично, а во вторых, если поймают, то могут и больно по шее надавать, а то и делегирование отобрать … так что не стоит баловаться …
Вот вроде и все про использование ДНС – здесь в принципе хватит, чтобы поднять ДНС с первой-второй попытки … если же что-то не понятно, обратитесь к DNS-HOWTO в разделе документация на linux.org.ru – Написано понятным языком, по русски, хотя и не без закидонов (хмм .. а у кого их нет ?;-)) меня вон как иногда заносит ;-))))))
Если у вас повисла текстовая консоль ( не реагирует ни на что ), попробуйте команду
stty sane </dev/tty[которая висит]



