|
4. Простой домен.Как установить свой собственный домен
4.1 Но сначала некоторое количество сухой теорииДо того как мы в действительности начнем этот раздел, я хочу
дать вам некоторые теоретические сведения о том как работает DNS. И вы
должны читать дальше, потому что это полезно для вас. Если вы не `хотите'
делать это, то вы по крайней мере должны быстро просмотреть
его. Остановитесь, когда вы увидите указания о том, что вы должны делать с
вашим файлом
DNS -- это иерархическая система. Вершина записывается как `
При поиске машины, запрос обрабатывается рекурсивно, начиная с
корня. Если вы хотите найти адрес машины
$ nslookup Default Server: localhost Address: 127.0.0.1 Запросите корневой сервер:
> server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Установите тип запроса (Query type) в NS (записи о серверах имен):
> set q=ns Запросите его о edu:
> edu. Заключительная точка
edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4
Это дает нам информацию о том, что
> mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu mit.edu nameserver = STRAWB.mit.edu Authoritative answers can be found from: W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 STRAWB.mit.edu internet address = 18.71.0.151 Сервера
> server W20NS.mit.edu. Имена машин не зависят от регистра, но я просто использую мышь для вырезания и вставки текста, так что я получаю их такими же, как они написаны на экране.
Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU ai.mit.edu nameserver = LIFE.AI.MIT.EDU ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.37.6 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 LIFE.AI.MIT.EDU internet address = 128.52.32.80 BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22 MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11 COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22 MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36
Так что
> server MUESLI.AI.MIT.EDU Default Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7
Теперь я изменил тип запроса, поскольку мы нашли сервер имен и можем
опрашивать его том, что мы хотим знать о
> set q=any > prep.ai.mit.edu. Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp ftp telnet smtp finger prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = beet-chex.ai.mit.edu ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu ai.mit.edu nameserver = life.ai.mit.edu gnu-life.ai.mit.edu internet address = 128.52.32.60 beet-chex.ai.mit.edu internet address = 128.52.32.22 alpha-bits.ai.mit.edu internet address = 128.52.32.5 mini-wheats.ai.mit.edu internet address = 128.52.54.11 trix.ai.mit.edu internet address = 128.52.37.6 muesli.ai.mit.edu internet address = 128.52.39.7 count-chocula.ai.mit.edu internet address = 128.52.38.22 mintaka.lcs.mit.edu internet address = 18.26.0.36 life.ai.mit.edu internet address = 128.52.32.80
Так начиная от корня
Менее обсуждаемым, но все равно важным является домен
Я вам солгал. DNS не работает точно так, как я это описал. Но достаточно близко к описанному процессу.
4.2 Наш собственный доменТеперь определим наш собственный домен. Мы будем делать домен linux.bogus и определим машины в нем. Я использую полностью поддельное имя домена, для того чтобы быть уверенным, что мы не побеспокоим никого во внешнем мире.
Одно важное замечание до того как мы начнем: Не все символы разрешено
использовать в именах машин. Мы ограничимся символами английского алфавита:
a-z, цифрами: 0-9 и символом '-' (тире). Придерживайтесь сипользования этих
символов. Прописные и строчные символы не различаются DNS, так что
Мы уже начали эту часть строкой в
zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; };
Заметьте отсутствие `
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost.
Заметьте наличие символа `
Этот `файл зоны' содержит 3 `записи ресурсов (resource records)'
(
0.0.127.in-addr.arpa. IN SOA ...
NS это RR для сервера имен (Name Server). В начале строки символ '@' не указывается, это подразумевается, поскольку предыдущая строка начиналась с символа '@'. Это съэкономит нам несколько нажатий на клавиши. Так что строка NS в действительности читается как
0.0.127.in-addr.arpa. IN NS ns.linux.bogus
Эта строка сообщает DNS, что машина является сервером имен домена
И в в окончание - запись PTR гласит, что машина с адресом 1 в подсети
Запись SOA находится в преамбуле каждого из файлов зон, и она должна
первой записью в файле. Она описывает зону -- откуда она появляется
(машина, названная
Затем перезапустите ваш named (команда
$ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 мы видим, что named работает и можно получить данные о
zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; };
Заметим, что мы опять не написали завершающий символ `
В файле зоны linux.bogus мы поместим некоторые поддельные данные: ; ; Файл зоны для linux.bogus ; ; Полный файл зоны ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds ; NS ns ; Internet адрес сервера имен MX 10 mail.linux.bogus ; Основной почтовый сервер MX 20 mail.friend.bogus. ; Дополнительный почтовый сервер ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4
Необходимо упомянуть две вещи о записи SOA. ns.linux.bogus должен быть настоящей машиной с записью A. Не разрешается указывать машину с записью CNAME в записи SOA. Это имя не обязательно должно быть `ns', оно может быть любым правильным именем машины. Далее, hostmaster.linux.bogus должен читаться как hostmaster@linux.bogus, это должен быть почтовый псевдоним или почтовый ящик для человека сопровождающего DNS и читающего почту достаточно часто. Любая почта, относительно домена будет посылаться на адрес указаный здесь. Имя не обязательно должно быт `hostmaster', это может быть любой правильный адрес электронной почты, но адрес с именем `hostmaster' как ожидается будет работать.
В этом файле приведен еще один новый тип записи о ресурсах (RR) --
MX, или запись ресурса Почтовый Сервер (Mail eXchanger). Она сообщает
почтовой системе куда посылать почту адресованную
Перезапустите named с помощью команды
$ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = ns.linux.bogus mail addr = hostmaster.linux.bogus serial = 199802151 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus ns.linux.bogus internet address = 192.168.196.2 mail.linux.bogus internet address = 192.168.196.4
При внимательном тестировании вы обнаружите ошибку. Строка
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus является полностью неправильной. Она должна выглядеть следующим образом
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
Я сознательно сделал ошибку, чтобы вы смогли получить некоторый опыт --:-) Глядя в файл зоны мы обнаружим, что в строке
MX 10 mail.linux.bogus ; Основной почтовый сервер отсутствует точка. Или лишний раз написано 'linux.bogus'. Если имя машины
не заканчивается на символ точки в файле зоны, то к концу этого имени
добавляется текущее расположение (origin), вызывая в итоге дублирование
текста
MX 10 mail.linux.bogus. ; Основной почтовый сервер или
MX 10 mail ; Основной почтовый сервер является правильной. Я предпочитаю последнюю форму, поскольку надо меньше
набирать на клавиатуре. Существуют пользователи bind, которые не согласны с
этим подходом, но есть и те, которые согласны с этим. В файле зоны имя
домена должно быть написано и закачиваться на символ `
Я должен подчеркнуть, что в файле named.conf не должно быть символа
`
Так что опираясь на мою точку зрения мы напишем новый файл зоны, с некоторой дополнительной информацией.
; ; Файл зоны для linux.bogus ; ; Полный файл зоны ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds ; TXT "Linux.Bogus, your DNS consultants" NS ns ; Internet адрес сервера имен NS ns.friend.bogus. MX 10 mail.linux.bogus ; Основной почтовый сервер MX 20 mail.friend.bogus. ; Дополнительный почтовый сервер localhost A 127.0.0.1 gw A 192.168.196.1 HINFO "Cisco" "IOS" TXT "The router" ns A 192.168.196.2 MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 2.0" www CNAME ns donald A 192.168.196.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 2.0" TXT "DEK" mail A 192.168.196.4 MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.2" ftp A 192.168.196.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 2.1.86"
Здесь присутствует несколько новых записей о ресурсах (RR): запись HINFO (Информация о машине, Host INFOrmation) имеет две части, хорошей привычкой является заключение каждой из этих частей в кавычки. Первая часть -- это информация об оборудовании машины, а вторая часть описывает программное обеспечение и операционную систему данной машины. Машина, названная 'ns', имеет процессор Pentium и работает под управлением Linux 2.0. CNAME (Каноническое имя, Canonical NAME) -- это способ присвоить каждой машине несколько имен. Так, что www является алиасом для ns.
Использование записи CNAME является немного неоднозначным. Но безопасным способом будет следовать правилу, что записи MX, CNAME или SOA никогда не должны ссылаться на имя, указанное как запись CNAME, они должны ссылаться на имя определенное записью A, так что будет неправильно записать
foobar CNAME www ; NO! но вместо этого необходимо записать
foobar CNAME ns ; Yes!
Также лучше считать, что запись CNAME не является настоящим именем
машины для использования в адресе электронной почты: адрес
www A 192.168.196.2
Некоторые из разработчиков архитектуры bind (arch-bind-wizards), рекомендуют не использовать запись CNAME. Так, что ее использование надо рассматривать серьезно.
Но как вы видите, этот документ также как и множество других серверов не следуют этому правилу.
Загрузите новую базу данных выполнив команду
$ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus
Это означает, что должны быть перечислены все записи в данном домене. В результате получится следующее:
[localhost] $ORIGIN linux.bogus. @ 1D IN SOA ns hostmaster ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns 1D IN NS ns.friend.bogus. 1D IN TXT "Linux.Bogus, your DNS consultants" 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. gw 1D IN A 192.168.196.1 1D IN HINFO "Cisco" "IOS" 1D IN TXT "The router" mail 1D IN A 192.168.196.4 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "386sx" "Linux 1.0.9" localhost 1D IN A 127.0.0.1 www 1D IN CNAME ns donald 1D IN A 192.168.196.3 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "i486" "Linux 1.2" 1D IN TXT "DEK" ftp 1D IN A 192.168.196.5 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "P6" "Linux 1.3.59" ns 1D IN A 192.168.196.2 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "Pentium" "Linux 1.2" @ 1D IN SOA ns hostmaster ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum
Это хорошо. Как вы видите, это выглядит почти как сам файл зоны. Теперь проверим какой будет ответ только для машины с именем www:
> set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 192.168.196.2
Другими словами, настоящим именем для
Теперь мы находимся на середине пути.
4.3 Обратная (reverse) зонаТеперь программы могут преобразовывать имена машин в домене linux.bogus в адреса, по которым они могут связаться с этими машинами. Но также, кроме этого, требуется обратная зона, которая дает возможность DNS преобразовывать адреса в имена машин. Эти имена используются достаточным количеством серверов различного рода (FTP, IRC, WWW и другими) для того, чтобы решить, хотят ли они с вами общаться или нет, и даже иногда имя машины используется для того, чтобы решить какой приоритет вам дать. Обратная зона требуется для полного доступа к различным сервисам в Internet.
Поместите следующие строки в файл
zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; };
Эти строки похожи на описание зоны
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, todays date + todays serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR gw.linux.bogus. 2 PTR ns.linux.bogus. 3 PTR donald.linux.bogus. 4 PTR mail.linux.bogus. 5 PTR ftp.linux.bogus.
Теперь перезапустите ваш named (
> 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4
так, это выглядит нормально, теперь выдайте полный список машин в домене, для того чтобы проверить правильность информации:
> ls -d 196.168.192.in-addr.arpa [localhost] $ORIGIN 196.168.192.in-addr.arpa. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns.linux.bogus. 1 1D IN PTR gw.linux.bogus. 2 1D IN PTR ns.linux.bogus. 3 1D IN PTR donald.linux.bogus. 4 1D IN PTR mail.linux.bogus. 5 1D IN PTR ftp.linux.bogus. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum
Выглядит хорошо!
Существует несколько вещей, которые я должен добавить здесь. Сетевые
адреса, используемые здесь взяты из одного из блоков 'личных (private) сетей',
их не разрешается публично использовать в internet. Так, что их
можно спокойно использовать как пример в этом документе. Вторая вещь это
строка
И конечно, этот домен является фиктивным, также как и все адреса в нем. Для настоящего примера действующего домена смотрите следующий раздел.
|
|||||||||||||||||
With any suggestions or questions please feel free to contact us |