У меня на работе мы используем Linux как DNS-сервер. Этот раздел описывает
настройку DNS таблиц и использование пакета BIND 8.x, стандартно
поставляемого с Red Hat.
Замечание: Red Hat 5.1 и младше использует BIND 4.x, который использовал
немного другой формат файла конфигурации. BIND 8.x предлагает больше
возможностей, чем BIND 4.x, а поскольку 4.x более не развивается, лучше
обновить пакет BIND до последней версии. Просто установите пакет BIND RPM
(см. раздел Использование Red Hat Package
Manager (RPM) в главе 10), и преобразуйте ваш файл конфигурации в
новый формат.
Преобразование выполнить просто! В каталоге с документацией, который
является частью BIND (например, в ``
/usr/doc/bind-8.1.2/'' для BIND версии 8.1.2), есть файл
``named-bootconf.pl'',
который представляет собой скрипт на Perl. Если Perl у Вас установлен
(замечание переводчика: если нет, поставьте: он ОЧЕНЬ пригодится), Вы можете
использовать скрипт чтобы преобразовать ваш файл конфигурации. Чтобы сделать
это, введите от имени root:
cd /usr/doc/bind-8.1.2
./named-bootconf.pl < /etc/named.boot > /etc/named.confmv /etc/named.boot /etc/named.boot-obsolete
Вы должны теперь иметь файл
``/etc/named.conf'',
который должен работать с BIND 8.x. Ваши таблицы DNS будут работать и с
новой версией BIND, так как формат таблиц не изменился.
Конфигурация DNS под Linux включает следующие шаги:
Для включения сервиса DNS, файл
``/etc/host.conf''
должен выглядеть следующим образом:
# Lookup names via /etc/hosts first, then by DNS query
order hosts, bind
# We don't have machines with multiple addresses
multi on
# Check for IP address spoofing
nospoof on
# Warn us if someone attempts to spoof
alert on
Определение extra spoof чуть повысит производительность (хотя и
незначительный), так что если Вы не беспокоитесь, можете отключить записи
“nospool” и “alert”.
Настройте как нужно файл ``
/etc/hosts''. Обычно, он невелик, но для увеличения
производительности можно добавить в него какие угодно адреса машин, чтобы
избежать поиска их в таблицах DNS.
Файл ``/etc/named.conf'' должен быть настроен, чтобы указывать на ваши DNS таблицы согласно
примеру ниже.
(Замечание: IP-адреса приведены здесь только в качестве примера и должны
быть заменены на Ваши значения!):
options {
// DNS tables are located in the /var/named directory
directory "/var/named";
// Forward any unresolved requests to our ISP's name server
// (this is an example IP address only -- do not use!)
forwarders {
123.12.40.17;
};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
// Enable caching and load root server info
zone "named.root" {
type hint;
file "";
};
// All our DNS information is stored in /var/named/mydomain_name.db
// (eg. if mydomain.name = foobar.com then use foobar_com.db)
zone "mydomain.name" {
type master;
file "mydomain_name.db";
allow-transfer { 123.12.41.40; };
};
// Reverse lookups for 123.12.41.*, .42.*, .43.*, .44.* class C's
// (these are example Class C's only -- do not use!)
zone "12.123.IN-ADDR.ARPA" {
type master;
file "123_12.rev";
allow-transfer { 123.12.41.40; };
};
// Reverse lookups for 126.27.18.*, .19.*, .20.* class C's
// (these are example Class C's only -- do not use!)
zone "27.126.IN-ADDR.ARPA" {
type master;
file "126_27.rev";
allow-transfer { 123.12.41.40; };
};
Совет: Опцией allow-transfer мы ограничили
область распространения зональных данных DNS указанным IP-адресом. В данном
примере машина 123.12.41.40 (допустим, вторичный сервер DNS нашего домена)
может запрашивать зональные данные. Если опция не задана, узнать о Ваших
зональных данных DNS сможет любая машина в Internet, что часто используется
spammers и IP spoofers, так что я советую ограничить область распространения
вторичным DNS сервером или использовать loopback-адрес,
``127.0.0.1''.
Теперь можно задать DNS таблицы в каталоге ``var/named/'' в соответствии с настройкой в
файле ``/etc/named.conf''.
Настройка файлов базы данных DNS в первый раз очень сложно, и выходит за
рамки этого документа. Имеется несколько руководств, которые названы ниже. Я
приведу несколько примеров:
Типовой файл ``
/var/named/mydomain_name.db'' прямой файл поисковой таблицы:
; This is the Start of Authority (SOA) record. Contains contact
; & other information about the name server. The serial number
; must be changed whenever the file is updated (to inform secondary
; servers that zone information has changed).
@ IN SOA mydomain.name. postmaster.mydomain.name. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum
; List the name servers in use. Unresolved (entries in other zones)
; will go to our ISP's name server isp.domain.name.com
IN NS mydomain.name.
IN NS isp.domain.name.com.
; This is the mail-exchanger. You can list more than one (if
; applicable), with the integer field indicating priority (lowest
; being a higher priority)
IN MX mail.mydomain.name.
; Provides optional information on the machine type & operating system
; used for the server
IN HINFO Pentium/350 LINUX
; A list of machine names & addresses
spock.mydomain.name. IN A 123.12.41.40 ; OpenVMS Alpha
mail.mydomain.name. IN A 123.12.41.41 ; Linux (main server)
kirk.mydomain.name. IN A 123.12.41.42 ; Windows NT (blech!)
; Including any in our other class C's
twixel.mydomain.name. IN A 126.27.18.161 ; Linux test machine
foxone.mydomain.name. IN A 126.27.18.162 ; Linux devel. kernel
; Alias (canonical) names
gopher IN CNAME mail.mydomain.name.
ftp IN CNAME mail.mydomain.name.
www IN CNAME mail.mydomain.name.
; This is the Start of Authority record. Same as in forward lookup table.
@ IN SOA mydomain.name. postmaster.mydomain.name. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum
; Name servers listed as in forward lookup table
IN NS mail.mydomain.name.
IN NS isp.domain.name.com.
; A list of machine names & addresses, in reverse. We are mapping
; more than one class C here, so we need to list the class B portion
; as well.
40.41 IN PTR spock.mydomain.name.
41.41 IN PTR mail.mydomain.name.
42.41 IN PTR kirk.mydomain.name.
; As you can see, we can map our other class C's as long as they are
; under the 123.12.* class B addresses
24.42 IN PTR tsingtao.mydomain.name.
250.42 IN PTR redstripe.mydomain.name.
24.43 IN PTR kirin.mydomain.name.
66.44 IN PTR sapporo.mydomain.name.
; No alias (canonical) names should be listed in the reverse lookup
; file (for obvious reasons).
Любые другие обратные файлы поисковой таблицы, необходимые чтобы
отображать адреса в различные классы B (типа 126.27. *) могут быть созданы, и
будут очень похожи на данный файл, поскольку пример обращает файл поисковой
таблицы выше.
Теперь запустите демон named. Обычно он запускается из файла
``/etc/rc.d/init.d/named''
при загрузке системы. Вы также можете запускать и останавливать его ручками;
командами ``named start'' и ``
named stop'' соответственно.
При каждом изменении таблиц DNS сервер должен быть перезапущен
командой ``/etc/rc.d/init.d/named restart''. После
перезапуска можно проверить изменения командой nslookup
для запроса к машине, которая добавлена или изменена.