Поиск по этому блогу

среда, 10 февраля 2010 г.

Загрузка винды по сети

Собственно, проблема загрузки виндов по сети делится на две. Первое, это драйвер, который даст виндам доступ к сетевому устройству: как минимум, он должен быть boot-capable, и соответственно должен уметь работать без поддержки user-space компонент, SMSS и так далее. Второе, это начальный загрузчик, который загружаемый комп получит по TFTP и которому предстоит эмулить доступ к тому же сетевому устройству по старому доброму int 13 - для NTLDR - имея в наличии только UNDI. Ключевое слово здесь - "к тому же самому", т.к. NTLDR грузит registry, и это должно быть именно то же самое registry, с которым потом будут работать винды - если не рассматривать вариант, когда сетевое хранилище для клиента read-only, и клиент грузится с EWF, в этом случае для начальной загрузки может быть использован другой протокол и другое хранилище. Но это не наш случай.

Способов доступа к сетевому блочному устройству в виндах в общем-то есть не так много.

iSCSI

SCSI - довольно монстроподобный протокол. Фактически это инкапсуляция SCSI в TCP, не более, с некоторыми наворотами на тему детекта, идентификации и т.п. Несмотря на накладные расходы из-за TCP, производительность впечатляет - 80 метров в секунду по гигабитке в полностью софтверном режиме и даже без jumbo frames, это довольно круто. Софтверных серверов iSCSI есть, не в ассортименте, но как минимум два есть: WinTarget и StarWind. Оба коммерческие, оба есть ломаные. StarWind не работает с линуксовым open-iscsi инициатором, поэтому отменяется. WinTarget работает прекрасно и с open-iscsi, и с виндовым официальным Microsoft iSCSI Initiator, и со StarWind'овским, называющимся StarPort. Вообще сугубо для доступа к сетевому диску - это абсолютно наилучшее решение, если отвлечься от стоимости лицензии. Но в домашних условиях пока еще можно отвлечься, так что мы не будем париться.

(iSCSI Initiator - это просто "клиент" в терминологии iSCSI, собственно как и в обычном SCSI - устройство, отсылающее запрос по шине, называется initiator, а отвечающее - target).

Но вот с загрузкой по iSCSI все не очень хорошо. Microsoft iSCSI Initiator - формально boot-capable, но только в версии для 2003 Server. Даже если предположить, что это можно обойти, то вторая проблема - начальный загрузчик - остается в полный рост, никакого официального решения не предлагается. Вернее, Microsoft предлагает воткнуть аппаратный iSCSI HBA, но - я даже не говорю, сколько они стоят, проблема в том, что здесь его еще и не купишь.

В Etherboot, который загрузчик всего и вся, загрузка по iSCSI поддерживалась, но перестала из-за legal issues с MS. Они реализовали начальную загрузку и доступ по int13, а затем через какой-то интерфейс осуществляли handoff микрософтовскому инициатору, что их и сгубило - MS решила, что этот интерфейс дюже секретный. В любом случае работало это, судя по всему, опять же только в 2003 Server.

Вторая альтернатива - это netBoot/i, в котором загрузчик сочетается со своим инициатором, соответственно это работает в любых виндах, и у них вроде никаких legal issues нет. Но - corporate customers only, и ломаного или хотя бы просто краденого, несмотря на усиленные поиски, найти мне не удалось. Более того, на evaluation request (прикинуться corporate customer'ом всегда можно) они не отвечают, на просто мыло тоже. Сколько стоит лицензия - не очень понятно, на сайте не сказано ничего, гугл говорит - $95, но возникает опять же вопрос, как ее купить. Так что остается ждать, пока кто-нибудь украдет.

Написать самому малореально, даже взяв Etherboot за основу. iSCSI - чертовски тяжелый протокол в реализации, унаследовавший весь геморрой обычного SCSI и добавивший нового. Линуксоиды до сих пор не справились с написанием даже клиента (open-iscsi практически неработоспособен и годится только для загрузки роутеров, и то с трудом), так что увы.

ATA-over-Ethernet

Компания CoRAID решила, что вся эта айсказзевая жесть - это в большинстве случае перебор, и решила гонять по сети старый добрый IDE, он же ATA. Причем гонять прямо в raw ethernet, никаких там TCP, IP и прочих лукавых мудрствований. Вообще они все упростили донельзя, с прицелом на дешевые аппаратные реализации, но нас интересуют сотфверные.

Софтверный сервер AoE есть, называется vblade. К сожалению, он сугубо линуксовый, но судя по описаниям и отзывам, все это вполне в production stage, так что - если считать, что линуксовый комп есть - с этим, наверно, жить можно. Виндовый клиент AoE входит в StarPort, который есть ломаный, да и лицензия на него стоит недорого. Но он, к сожалению, ни разу не boot-capablе, и это единственный вариант.

Начальный загрузчик по AoE в Etherboot находится в development stage, но это не проблема - главное, что он в принципе есть, а простота реализации такова, что накосячить очень сложно. Но - факт в том, что готового работающего AoE-решения на текущий момент нет. Его, правда, можно за разумное время написать самому и это будет нормально работать, так что над этим стоит подумать. Производительность должна быть по крайней мере сопоставима с iSCSI, особенно если поддержать tagged queueing, а накладные расходы на инкапсуляцию и, как следствие, нагрузка на проц, в разы меньше.

У линуксоидов, кстати, с AoE хорошо - там и клиент есть, и тоже вполне себе production, судя по всему. Но грузить линукс по сети вообще просто кучей способов по любым протоколам, потому как монолитное ядро да initrd - фигли там не грузить, это не винды. В примитивных решениях все-таки есть своя прелесть.

Проприетарные варианты

Компания Neoware делает приблуду, гордо называемую Neoware Image Manager. Там в одном флаконе начальный загрузчик, драйвер сетевого диска и сервер. Она использует свой протокол поверх UDP, а сервер есть виндовый и линуксовый, оба полностью user-space. В общем, тоже довольно просто.

Купить ее тоже нельзя, corporate customers, 50+ licenses only, как обычно. Но в ed2k она есть - недокачанный, правда, архив, но слава InstallShield, который кладет setup.dll в конец архива. Без setup.dll пережить можно, благо, инсталлер там ничего особо и не делает. Она там не ломаная и готового патча я не нашел, так что пришлось отучить от желания читать файл с лицензиями самому - благо, защита там примитивная, как и вообще вся прога.

Работает она следующим образом. На клиенте запускается image builder, который ставит прямо на живой машине дрова этого сетевого диска, затем чохом, не мудрствуя лукаво, делает образ живого винта, и вперед, с него можно грузиться. К сожалению, все это конкретно глюкен зи махт. Во-первых, она не любит больше одной сетевухи. На чистых виндах под vmware у ней почему-то не получается поменять start type у драйвера сетевухи, приходится самому, пока она тупит, менять ей руками, а то будет inaccessible boot device. На живой машине, где винт большой, при создании образа она просто виснет наглухо, ничего не делая. Ей можно сказать, чтобы она делала образ локально на другом винте, а не на сервере - не вопрос, после этого она образ делает, но при загрузке с него виснет после старта SMSS. Может, ей не нравятся дрова

сетевухи, разбираться желания особо не было. Зато рисует красивый сплэшик при загрузке. Кг/ам.

Сопутствующий геморрой

Загрузка по сети подразумевает, как минимум, DHCP, и вот тут лежат занятные грабли фигурной формы, производства любимой компании МТУ, известные как Стрим-ТВ. Стрим-ТВ использует два дополнительных ATM VCC, которые оба должны бриджиться по 1483 в ту сеть, в которую воткнута приставка. По одному из них ходит обычный IP, а по второму какая-то шняга, которая собственно и есть видео, но я в этих видео делах не копенгаген, так что деталей не знаю. В теории, МТУ предлагает юзерам купить роутер с поддержкой VLAN, которому можно назначить отдельный физический порт на эти VCC и соответственно воткнуть туда приставку отдельным шнурком. На практике это выливается в глючный ASUS или, прости Кришна, мерзкий Huawei, который к тому же еще и фиг купишь - а у D-Link с поддержкой VLAN все плохо. Поэтому простые люди ставят обычный D-Link а-ля 5xx, который умеет несколько VCC, и фигачат эти потоки в общую сеть - ну будет он там броадкастом гадить, восемью мегабитами в гигабитке можно пожертвовать.

Проблема в таком варианте как раз с DHCP. Стримовский декодер хочет получить по DHCP себе стримовский же адрес, и вот тут проблема встает во весь рост. Чтобы все это работало, во внутренней сети DHCP быть не должно, но грузиться по сети хочется. Но в итоге на самом деле все решается просто - D-Link, как выяснилось, умеет делать bridge filter по MAC-адресу, и соответственно можно запретить форвард в определенный VCC со всех мак-адресов, кроме одного, ну и внутреннему серверу запретить давать адреса определенному хосту, после чего настает счастье. Правда, грузить по сети все равно нечего, но зато теперь работает DHCP.

Если гора не идет к Магомету

Если винды нельзя загрузить по сети, то их можно загрузить с чего-нибудь еще, что не издает шума. Естественно, приходит в голову мысль о флеше, но к сожалению, IDE флеш-драйвы делятся на две категории - дешевые и очень маленькие, и чуть побольше, но безумно дорогие. Плюс еще такой фактор, как wear out - если грузить винды с обычного флеша, ему быстро придет каюк вместе с виндами, поэтому драйв должен поддерживать wear out management. Цена вопроса такова - примерно $200 за 4 гига, и ненормальные деньги за каждый байт сверх этого. Кстати, на запись они довольно медленные.

Самый экстремальный вариант - это Gigabyte i-RAM. Это PCI-плата с четырьмя слотами под диммы, SATA-разьемом и аккумулятором. Идея, на самом деле, хотя и выглядит экстремальной, по здравому размышлению начинает казаться довольно привлекательной - как минимум, из-за производительности. Когда %SystemRoot% весь всегда лежит в памяти, это кое-что значит. Но - во-первых, максимальный поддерживаемый обьем - 4 гига, то есть запихать туда даже %SystemRoot% - в условиях нормальной рабочей винды - крайне проблематично. Во-вторых, PCI-слот, из которого она берет, кстати говоря, только питание. Лично в моем случае она займет единственный свободный, что означает, что мне придется выкинуть звуковуху, чтобы освободить слот - который нужен по делу - и извращаться с внешней. В-третьих, цена вопроса - опять $200, не считая собственно диммов.


Автор статьи 1ceheart

DNS-сервер — как всё это работает

Если посмотреть большинство более-менее популярных статей об устройстве Интернета, то про DNS там чаще всего будет сказано что-то типа "DNS-сервер обеспечивает трансляцию имен сайтов в IP адреса". В принципе, это действительно является его основной задачей, и для большинства пользователей (и даже компьютерщиков) этих знаний вполне достаточно. Но если вдруг вам придется отлаживать сеть, которой провайдер выделил какой-то блок "честных" адресов, или поднимать в локальной сети свой DNS-сервер, то очень быстро всплывут всякие страшные слова: "зона", "трансфер", "форвардер", "in-addr.arpa" и другие... Поэтому в этой заметке мы попробуем чуть более подробно поговорить о работе DNS.

Очень приблизительно можно сказать, что у каждого компьютера в Интернете есть два основных идентификатора: доменное имя (например, system-administrators.info) и IP-адрес (например, 127.0.0.1). Приблизительность заключается в том, что, во-первых, IP-адресов у компьютера может быть несколько (мало того, что у каждого интерфейса свой адрес, так еще и несколько адресов могут "висеть" на одном интерфейсе); во-вторых, имен тоже может быть несколько, причем они могут связываться как с одним, так и с несколькими IP-адресами; в-третьих, у компьютера может и не быть доменного имени... Словом, ясно, что картина уже начинает запутываться.

Как было сказано выше, основной задачей DNS-сервера является трансляция доменных имен в IP адреса и обратно. На заре становления Интернета (когда он еще был ARPANET'ом) это решалось ведением длинных списков, включающих все компьютеры сети, причем копия такого списка должна была присутствовать на каждом компьютере. Понятно, что с ростом сети эта технология перестала удовлетворять кого бы то ни было — ведь эти файлы надо было еще и синхронизировать, не говоря уж об их размере... Некоторые "пережитки" этого метода можно обнаружить и сейчас: существует файл HOSTS (и в UNIX, и в Windows), в котором можно прописывать адреса серверов, с которыми вы регулярно работаете (кстати, именно его использование лежит в основе многих "ускорителей Интернета" — такие программы просто записывают адреса серверов, к которым вы обращаетесь, в файл HOSTS и при следующем обращении берут данные из него, не тратя время на запрос к DNS-серверу).

На смену "однофайловой" схеме пришел DNS — иерархическая структура имен. Существует "корень дерева" с именем "." (точка). Так как корень един для всех доменов, то точка в конце имени обычно не ставится (но она используется в описаниях DNS — тут надо быть очень внимательным!). Ниже корня лежат домены первого уровня. Их немного — com, net, edu, org, mil, int, biz, info, gov (есть еще несколько) и домены государств, например, ru. Еще ниже находятся домены второго уровня, например, system-administrators.info. Еще ниже — третьего и т.д.

Иерархичность DNS-серверов — штука довольно интересная, если проследить прохождение запроса. При установке (точнее, при настройке) клиенту указывается как минимум один DNS-сервер (как правило, их два) — его адрес выдается провайдером. Клиент посылает запрос этому серверу. Сервер, получив запрос, либо отвечает (если ответ ему известен), либо пересылает запрос на "вышестоящий" сервер (если он известен) или на корневой (каждому DNS-серверу известны адреса корневых DNS-серверов). Так выглядит "восходящая иерархия". Затем запрос начинает спускаться вниз — корневой сервер пересылает запрос серверу первого уровня, тот — серверу второго уровня и т.д. Таким образом, каждый DNS-сервер работает как хороший компьютерщик: он всегда либо знает ответ, либо знает, у кого спросить...

Помимо "вертикальных связей", у серверов есть еще и "горизонтальные" отношения — "первичный — вторичный". Действительно, если предположить, что сервер, обслуживающий какой-то домен и работающий "без страховки" вдруг перестанет быть доступным, то все машины, расположенные в этом домене, окажутся недоступны! Именно поэтому при регистрации домена второго уровня выдвигается требование указать минимум два сервера DNS, которые будут этот домен обслуживать.

DNS-сервера бывают рекурсивные и нерекурсивные. Первые всегда возвращают клиенту ответ — они самостоятельно отслеживают отсылки к другим DNS-серверам и опрашивают их. Нерекурсивные сервера возвращают клиенту эти отсылки, так что клиент должен самостоятельно опрашивать указанный сервер. Рекурсивные сервера удобно использовать на низких уровнях, в частности, в локальных сетях. Дело в том, что они кэшируют все промежуточные ответы, и при последующих запросах ответы будут возвращаться намного быстрее. Нерекурсивные сервера обычно стоят на верхних ступенях иерархии — поскольку они получают очень много запросов, то для кэширования ответов никаких ресурсов не хватит.

Полезным свойством DNS является умение использовать "пересыльщиков" (forwarders). "Честный" DNS-сервер самостоятельно опрашивает другие сервера и находит нужный ответ, но если ваша сеть подключена к Интернету по медленной (например, dial-up) линии, то этот процесс может занимать довольно много времени. Вместо этого можно перенаправлять все запросы, скажем, на сервер провайдера, а затем принимать его ответ. Использование "пересыльщиков" может оказаться интересным и для больших компаний с несколькими сетями: в каждой сети можно поставить относительно слабый DNS-сервер, указав в качестве "пересыльщика" более мощную машину, подключенную по быстрой линии. При этом все ответы будут кэшироваться на этом мощном сервере, что ускорит разрешение имен для целой сети.

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

Элементы базы DNS часто называют RR (сокращение от Resource Record). Базовый формат записи выглядит так:

[имя] [время] [класс] тип данные

Имя может быть относительным или абсолютным (FQDN — Fully Qualified Domain Name). Если имя относительное (не заканчивается точкой — помните про корневой домен?), то к нему автоматически добавляется имя текущего домена. Например, если в домене system-administrators.info я опишу имя «www», то полное имя будет интерпретироваться как "www.system-administrators.info." Если же это имя указать как "www.system-administrators.info" (без последней точки), то оно будет считаться относительным и будет интерпретировано как "www.system-administrators.info.system-administrators.info."

Время задает интервал времени в секундах, в течение которого данные могут сохраняться в кэше сервера.

класс определяет класс сети. Практически всегда это будет IN, обозначающее INternet.

Тип может быть одним из следующих:

SOA — определяет DNS зону
NS — сервер имен для зоны
A — преобразование имени в IP-адрес
PTR — преобразование IP-адреса в имя
MX — почтовая станция
CNAME — имена машины

HINFO — описание "железа" компьютера

TXT — комментарии или какая-то другая информация

Есть также некоторые другие типы, но они намного менее распространены.

В записях можно использовать символы # и ; для комментариев, @ для обозначения текущего домена, () — скобки — для написания данных на нескольких строках. Кроме того, можно использовать метасимвол * в имени. Порядок записей не имеет значения за одним исключением: запись SOA должна идти первой. Дальнейшие записи считаются относящимися к той же зоне, пока не встретится новая запись SOA. Как правило, после записи зоны указывают записи DNS-серверов, а остальные записи располагают по алфавиту, но это не обязательно.

Теперь попробуем рассмотреть записи. Первой описываем зону:
mycompany.ru. IN SOA ns.mycompany.ru. admin.mycompany.ru. (1001 ; serial
21600 ; Refresh — 6 часов
1800 ; Retry — 30 мин
1209600 ; Expire — 2 недели
432000) ; Minimum — 5 дней

Сначала идет имя домена: mycompany.ru. (обратите внимание на точку в конце имени). Вместо имени можно было (и чаще всего так и делают) поставить знак @.
ns.mycompany.ru. — основной сервер имен
admin.mycompany.ru. — почтовый адрес администратора в формате имя(точка)машина

затем в круглых скобках идут поля, необходимые для правильного "восприятия" вашей зоны другими серверами. Первое число — serial — является "версией" файла зоны. При внесении изменений это число надо увеличить — если вторичный сервер увидит, что его версия зоны меньше, чем у первичного сервера, то он перечитает данные. Типичной ошибкой является обновление зоны без обновления этого числа. Очень удобно в качестве serial использовать текущую дату, например, 2003040401 — 4 апреля 2003 года, первое обновление.
Refresh говорит вторичным серверам, как часто они должны проверять значение serial.

Retry говорит о том, как часто вторичный сервер должен пытаться прочитать данные, если первичный сервер не отвечает.

Expire говорит вторичным серверам, в течение какого времени они должны обслуживать домен, если первичный сервер не отвечает. По истечении этого времени вторичные сервера будут считать свои данные устаревшими.

Minimum задает время жизни записей по умолчанию для данной зоны.

Теперь опишем сервера имен, обслуживающие наш домен:
mycompany.ru. IN NS ns.mycompany.ru.
mycompany.ru. IN NS ns.provider.ru.

Здесь ничего сложного нет. Так как имя зоны совпадает с указанным в поле имя записи SOA, то его можно оставить пустым.

A описывает хосты
Дальше идут записи A, описывающие ваши компьютеры и позволяющие преобразовать имена в IP-адреса.
major IN A 192.168.0.1
colonel IN A 192.168.0.2
IN HINFO "2xPIV-1.7 Win2K"
general.mycompany.ru. IN A 192.168.0.3

Здесь сложного тоже ничего нет — имена могут быть относительные или "абсолютные", можно добавить записи о конфигурации машины (пропущенное имя в записи HINFO говорит о том, что имеется в виду предыдущее имя). Не забудьте добавить записи
localhost. IN A 127.0.0.1
localhost IN CNAME localhost.
mycompany.ru. IN A 192.168.0.1

Первая отдает адрес 127.0.0.1 любой машине, запросившей имя localhost, вторая — localhost.mycompany.ru, а третья говорит, куда послать клиента, который хочет попасть на mycompany.ru

C помощью CNAME можно задавать короткие имена серверов
Записи CNAME позволяют дать машинам удобные или значащие имена. Например:
ftp IN CNAME general говорит, что ftp.mycompany.ru живет по адресу 192.168.0.3. CNAME удобно использовать, если вы меняете имя машины, но хотите оставить доступ для клиентов, которые помнят старое имя. Удобный трюк с использованием CNAME заключается в назначении коротких имен частоиспользуемым адресам. Например, прописав ls IN CNAME system-administrators.info., вы сможете заходить на system-administrators.info просто набирая ls в качестве адреса.

MX описывает пересылку почты
Записи MX нужны для того, чтобы указать, куда пересылать почту. В этих записях добавляется приоритет — чем он меньше, тем выше приоритет машины. Приоритеты нужны для того, чтобы можно было задать несколько записей и перенаправить почту на альтернативный сервер, если основной не работает. MX запись должна быть указана для домена в целом и, возможно, для каждой машины в отдельности. Сложного тут тоже ничего нет за одним исключением: очень часто встречается неправильно использование метасимвола "*". Запись "*.mycompany.ru." означает не "любая машина домена mycompany.ru", а "любая машина, которая еще не была описана". Причем, даже если использовалась не MX, а, например, A-запись, то звездочка все равно не будет работать для этой машины. Более подробно почитать об использовании метасимволов можно в RFC 1034, раздел 4.3.3 В принципе, метасимволы нужны только для того чтобы принимать почту для сети, находящейся за брандмауэром и чтобы пересылать почту в сети, не подключенные к Интернету (например, работающие через UUCP). Так как записи DNS меняются довольно редко, то имеет смысл прописать MX записи для всех машин, описанных записями A.

mycompany.ru. IN MX 10 relay
mycompany.ru. IN MX 20 mycompany.ru.
mycompany.ru. IN MX 30 mail.provider.ru.
general.mycompany.ru. IN A 192.168.0.3
IN MX 10 mycompany.ru.

Реверсная зона позволяет определить имя по адресу
На этом создание файла зоны можно считать законченным. Но остается более увлекательное занятие: описание реверсной зоны. Если предыдущий файл позволяет определить IP-адрес по имени, то теперь надо сделать так, чтобы по IP-адресу можно было "вычислить" имя. Отсутствие реверсной зоны является довольно типичной ошибкой и может приводить к самым разным ошибкам — начиная от сбоев FTP-серверов и заканчивая классификацией отправленных писем как спама.

PTR преобразовывает адрес в имя
Для обратного преобразования используются записи PTR. Но не торопитесь их вписывать — тут есть одна хитрость: они пишутся в отдельном специальном домене верхнего уровня, с названием IN-ADDR.ARPA. Домен этот был создан для того, чтобы и для прямого, и для обратного преобразований можно было использовать одни и те же программные модули. Дело в том, что "мнемонические" имена пишутся слева направо: www.system-administrators.info означает, что www находится в system-administrators.info, а system-administrators — в info. IP-адреса пишутся наоборот: 195.242.9.4 означает, что машина 4 находится в подсети 9, которая является частью 195.242 И для сохранения "единого стиля" адресов для обратного преобразования используются имена вида 4.9.242.195.IN-ADDR.ARPA (обратите внимание, что IP-адрес записан в обратном порядке).

Итак, мы создаем еще один файл зоны (для зоны, например, 0.168.192.IN-ADDR.ARPA), копируем в него запись SOA (а заодно и NS), после чего начинаем писать:
1 IN PTR major.mycompany.ru.
2 IN PTR colonel.mycompany.ru.
...

Можно задавать не только относительные, но и абсолютные имена:
3
.0.168.192.IN-ADDR.ARPA. IN PTR general.mycompany.ru.

Не забудьте еще задать обратное преобразование для 127.0.0.1.

Обратите внимание на то, что право на ведение "прямого" домена не зависит от провайдера — его выдает организация, ведающая распределением имен в нужном вам домене. А вот пул IP-адресов находится в ведении провайдера, и именно провайдер делегирует (или не делегирует) вам права на ведение реверсной зоны. В связи с тем, что зачастую клиентам выдается не целая сеть класса «C», а ее часть, то и реверсная зона находится на сервере провайдера. Так что вам придется наладить с ним взаимодействие в области обновления данных.

Настройте трансфер зоны
Напоследок — одно маленькое замечание. Исследование DNS является одним из первых этапов "изучения сети" при подготовке ее взлома. Чаще всего используется перенос зоны, при котором все записи зоны передаются на компьютер "исследователя", где он их может изучать в спокойной обстановке. Поэтому имеет смысл (помимо всего прочего) настроить брандмауэр на запрет TCP-соединений по 53 порту с несанкционированных адресов (в запросах на определение имен используется UDP, а для переноса зоны — TCP).

P.S. Для того чтобы посмотреть, что записано в DNS, используется команда nslookup (она есть и в UNIX, и в Windows).

Автор: Дмитрий Турецкий
Взято с .hostinfo

/ext4: Еще тестируется или уже работает?

В анонсе Fedora 9 в одной из первых строчек упоминается о экспериментальной поддержке файловой системы ext4. В этой статье я расскажу о том какая же польза может быть от замены файловой ext3 на ext4 и какие дополнительные риски появятся у вас, если вы решитесь на этот шаг.

Чем лучше ext4
ext4 быстрее, особенно при работе с большими файлами (очень заметно при удалении).
размер файла — до 16Т, файловой системы — до 1024Р
появились "расширенные атрибуты в inode" для SElinux, beagle, samba. В определённых ситуациях могут ускориться mkfs и fsck.
Можно просто монтировать имеющиеся разделы ext3 как ext4
Разрабатывается дефрагментатор наподобие имеющегося в XFS. Он будет уметь: собирать файл в непрерывную область, собирать файлы из одной директории вместе, собирать пустое пространство в непрерывную область. Производительность при этом должна возрастать
Как перейти с ext3 на ext4

В production-варианте ext3 можно будет смонтировать как ext4. Сейчас процедура немного сложнее.
Пускай на диск /dev/sdc1 у нас установлена ext3. С помощью blkid видим как идентифицирует файловую систему ядро.
[root@ad mnt]# blkid /dev/sdc1
/dev/sdc1: LABEL="/var/www/img" UUID="77d69541-cd2e-47d5-91fc-bdb5606aa8fb" SEC_TYPE="ext2" TYPE="ext3"

Пока у нас будет TYPE="ext3", мы не сможем подмонтировать диск под ext4. Фиксим эту проблему
[root@ad mnt]# debugfs -w /dev/sdc1
debugfs 1.40.8 (13-Mar-2008)
debugfs: set_super_value s_flags 4
debugfs: quit

проверяем:
[root@ad mnt]# blkid /dev/sdc1
/dev/sdc1: LABEL="/var/www/img" UUID="77d69541-cd2e-47d5-91fc-bdb5606aa8fb" SEC_TYPE="ext2" TYPE="ext4dev"

Тут нет ошибки, сейчас файловая система называется ext4dev.
Можно монтировать:
[root@ad mnt]# mount -t ext4dev -o extents /dev/sdc1 ./test
Как форматнуть раздел под ext4
# mke2fs -E test_fs /dev/sdc1
# tune2fs -j /dev/sdc1
Где уже сейчас разумно использовать ext4

Могу сказать точно, что не в директории /var/lib/mysql. Я уже сейчас использую ext4dev, в разделе где складывается кеш nginx, а также весь фото-контент (при отдаче статики для nginx важна скорость работы с файловой системой).
Чтоб не рисковать, я менял файловую систему путем форматирования и заливки контента на чистый диск. Во время этой процедуры случился небольшой курьёз. В ext3 все файлы занимали 97G, после перезаливки на новый отформатированый раздел ext4dev получилось 90G. Врубил сравнение папок в mc, сравнивало полдня - все Ok :). Почему произошла экономия я сейчас сказать не могу, возможно, данные на ext3 были сильно фрагментированы (там было очень много директорий с мелкии файлами).

Какие риски?

Риски очевидны, это экспериментальная поддержка - возможно все! При переходе с ext2 на ext3 в любой момент можно было отказаться от ext3 и подмонтировать ext3 как ext2, если вы уже перешли на ext4 - назад дороги нет!
Можно монтироваться с опцией -o noextents и тогда будет возможность откатить все в ext3, но эта опция отрубает практически все прелести ext4.
В случае "слета" файловой системы нужно быть готовым к применению tune2fs.

Может быть вы уже решились перевести директорию /tmp на ext4 :)?

Как работает NAT

Если Вы читаете этот документ, то скорее всего вы подсоединены к Интернету, и используете трансляцию сетевых адресов (Network Address Translation, NAT) прямо сейчас! Интернет стал настолько огромным, чем кто-либо мог себе представить. Хотя точный размер неизвестен, текущая оценка это приблизительно 100 миллионов хостов и более чем 350 миллионов пользователей, активно работающих в Интернете. Фактически, норма роста такова, что Интернет эффективно удваивается в размере каждый год.
Введение

Для компьютера, чтобы общаться с другими компьютерами и Web-серверами в Интернете, он должен иметь IP адрес. IP адрес (IP означает Интернет Протокол) - это уникальное 32-битовое число, которое идентифицирует местоположение вашего компьютера на сети. В основном это работает точно так же как ваш уличный адрес: способ точно выяснить, где вы находитесь и доставить вам информацию. Теоретически, можно иметь 4,294,967,296 уникальных адресов (2^32). Фактическое число доступных адресов является меньшим (где-нибудь между 3.2 и 3.3 миллиарда) из-за способа, которым адреса разделены на классы и потребности отвести некоторые из адресов для мультивещания, тестирования или других определенных нужд. С увеличением домашних сетей и деловых сетей, число доступных IP адресов уже не достаточно. Очевидное решение состоит в том, чтобы перепроектировать формат адреса, чтобы учесть больше возможных адресов. Таким образом, развивается протокол IPv6, но, это развитее займет несколько лет, потому что требует модификации всей инфраструктуры Интернета.

рисунок

Вот где приходит NAT нам во спасение. В основном, Сетевая Трансляция Адресов, позволяет единственному устройству, типа маршрутизатора, действовать как агент между Интернетом (или "публичной сетю") и локальной (или "частной") сетью. Это означает, что требуется только единственный уникальный IP адрес, чтобы представлять всю группу компьютеров чему-либо вне их сети. Нехватка IP адресов - только одна причина использовать NAT. Два других серьезных основания это безопасность и администрирование

Вы узнаете о том, как можно извлечь выгоду из NAT, но сначала, давайте познакомимся с NAT чуть ближе и посмотрим, что он может делать.
Маскировка

NAT похож на секретаря большого офиса. Скажем, вы оставили инструкции секретарю, чтобы не перенаправлять вам никакие звонки, до тех пор, пока вы не попросите об этом. Позже, вы звоните потенциальному клиенту и оставляете сообщение для него, чтобы он перезвонил вам. Вы говорите секретарю, что ожидаете звонок от этого клиента и звонок нужно перевести. Клиент звонит на основной номер вашего офиса, являющийся единственным номером, который он знает. Когда клиент говорит секретарю, кого он ищет, секретарь проверяет свой список сотрудников, чтобы найти соответствие имени и его номера расширения. Секретарь знает, что вы запрашивали этот звонок, поэтому он переводит звонившего на ваш телефон.

Разработанная технология Cisco, Трансляция Сетевых Адресов используется устройством (межсетевым экраном, маршрутизатором или компьютером), которое находиться между внутренней сетью и остальной частью мира. NAT имеет много форм и может работать несколькими способами:

Статический NAT - Отображение незарегистрированного IP адреса на зарегистрированный IP адрес на основании один к одному. Особенно полезно, когда устройство должно быть доступным снаружи сети.

В статическом NAT, компьютер с адресом 192.168.32.10 будет всегда транслироваться в адрес 213.18.123.110:

рисунок

Динамический NAT - Отображает незарегистрированный IP адрес на зарегистрированный адрес от группы зарегистрированных IP адресов. Динамический NAT также устанавливает непосредственное отображение между незарегистрированным и зарегистрированным адресом, но отображение может меняться в зависимости от зарегистрированного адреса, доступного в пуле адресов, во время коммуникации.

В динамическом NAT, компьютер с адресом 192.168.32.10 транслируется в первый доступномый адрес в диапазоне от 213.18.123.100 до 213.18.123.150

рисунок

Перегрузка(Overload) - форма динамического NAT, который отображает несколько незарегистрированных адресов в единственный зарегистрированный IP адрес, используя различные порты. Известен также как PAT (Port Address Translation)

При перегрузке, каждый компьютер в частной сети транслируется в тот же самый адрес (213.18.123.100), но с различным номером порта

рисунок

ерекрытие - Когда IP адреса, используемые в вашей внутренней сети, также используются в другой сети, маршрутизатор должен держать таблицу поиска этих адресов так, чтобы он мог перехватить и заменить их зарегистрированными уникальными IP адресами. Важно отметить, что NAT маршрутизатор должен транслировать "внутренние" адреса в зарегистрированные уникальные адреса, а также должен транслировать "внешние" зарегистрированные адреса в адреса, которые являются уникальными для частной сети. Это может быть сделано либо через статический NAT, либо вы можете использовать DNS и реализовать динамический NAT.

Пример:
Внутренний диапазон IP (237.16.32.xx) является также зарегистрированный диапазоном, используемым другой сетью. Поэтому, маршрутизатор транслирует адреса, чтобы избежать потенциального конфликта . Он также будет транслировать зарегистрированные глобальные IP адреса обратно к незарегистрированным локальным адресам , когда пакеты посылаются во внутреннюю сеть

рисунок

Внутренняя сеть – это обычно LAN (Локальная сеть), чаще всего, называемая, тупиковым доменом. Тупиковый домен это LAN, которая использует внутренние IP адреса. Большинство сетевого трафика в таком домене является локальным, он не покидает пределов внутренней сети. Домен может включать как зарегистрированные так и незарегистрированные IP адреса. Конечно, любые компьютеры, которые используют незарегистрированные IP адреса, должны использовать NAT, чтобы общаться с остальной частью мира.

NAT может быть сконфигурирован различными способами. В примере ниже NAT-маршрутизатор конфигурирован так, чтобы транслировать незарегистрированные IP адреса (локальные внутренние адреса), которые постоянно находятся в приватной (внутренней) сети в зарегистрированные IP адреса. Это случается всякий раз, когда устройство на внутренней части с незарегистрированным адресом должно общаться с внешней сетью.
ISP назначает диапазон адресов IP вашей компании. Назначенный блок адресов - это уникальные зарегистрированные IP адреса и называются внутренними глобальными адресами (inside global). Незарегистрированные частные IP адреса разбиты на две группы, маленькая группа, внешние локальные адреса (outside local), будет использоваться NAT маршрутизаторами и основная, которая будет использоваться в домене, известна как внутренние локальные адреса (inside local). Внешние локальные адреса используются, чтобы транслировать уникальные IP адреса, известные как внешние глобальные адреса(outside global), устройств на общественной сети.
NAT транслирует только тот трафик, который проходит между внутренней и внешней сетью и определен для трансляции. Любой трафик, не соответствующий критериям трансляции или тот, который проходит между другими интерфейсами на маршрутизаторе, никогда не транслируется, и пересылается как есть.


IP адреса имеют различные обозначения, основанные на том, находятся ли они на частной сети (домен) или на общественной сети (Интернет) и является ли трафик входящим или исходящим:

рисунок

Большинство компьютеров в домене общается друг с другом, используя внутренние локальные адреса.
Некоторые компьютеры в домене взаимодействуют с внешней сетью. Эти компьютеры имеют внутренние глобальные адреса, что означает, что они не требуют трансляции.
Когда компьютер в домене, который имеет внутренний локальный адрес, хочет взаимодействовать с внешней сетью, пакет идет в один из NAT-маршрутизаторов посредством обычной маршрутизации.
NAT- маршрутизатор проверяет таблицу маршрутизации, чтобы посмотреть, имеется ли у него запись для конечного адреса. Если адрес приемника не находится в таблице маршрутизации, пакет отбрасывается. Если запись доступна, роутер проверяет, идет ли пакет из внутренней сети во внешнюю, а также, соответствует ли пакет критериям, определенным для трансляции. Затем маршрутизатор проверяет таблицу трансляции адресов, чтобы выяснить, существует ли запись для внутреннего локального адреса и соответствующего ему внутреннего глобального адреса. Если запись найдена, он транслирует пакет, используя внутренний глобальный адрес. Если сконфигурирован только статический NAT, и никакой записи не найдено, то роутер посылает пакет без трансляции.
Используя внутренний глобальный адрес, маршрутизатор пересылает пакет его адресату.
компьютер на общественной сети посылает пакет в частную сеть. Адрес источника в пакете – это внешний глобальный адрес. Адрес приемника - внутренний глобальный адрес.
Когда пакет прибывает во внешнюю сеть, NAT-маршрутизатор смотрит в таблицу трансляций и определяет адрес приемника, отображенный на компьютер в домене.
NAT-маршрутизатор транслирует внутренний глобальный адрес пакета на внутренний локальный адрес и затем проверяет таблицу маршрутизации прежде, чем пошлет пакет конечному компьютеру. Всякий раз, когда запись не найден для адреса в таблице трансляций, пакет не транслируется и роутер продолжает поверку таблицы маршрутизации на поиск адреса приемника.

NAT-перегрузка (overloading) использует особенность стека протокола TCP/IP, такую как мультиплексирование, которое позволяет компьютеру поддерживать несколько параллельных подключений с удаленным компьютером, используя различные TCP или UDP порты. Пакет IP имеет заголовок, который содержит следующую информацию:
Исходный адрес – IP адрес компьютера источника, например, 201.3.83.132.
Исходный порт – номер TCP или UDP порта, назначенное компьютером источником для этого пакета, например, Порт 1080.
Адрес назначения – IP адрес компьютера приемника. Например, 145.51.18.223.
Порт назначения – номер TCP или UDP порта, который просит открыть компьютер источник на применике, например, порт 3021.

IP адреса определяют две машины с каждой стороны, в то время как номера портов гарантируют, что соединение между этими двумя компьютерами имеет уникальный идентификатор. Комбинация этих четырех чисел определяет единственное соединение TCP/IP. Каждый номер порта использует 16 битов, что означает, что сушествует 65 536 (2^16) возможных значения. В действительности, так как различные изготовители отображают порты немного различными способами, вы можете ожидать приблизительно 4 000 доступных портов.
Примеры динамического NAT и NAT с перегрузкой
внутренняя была установлена с адресами IP, которые не были специально отведены для этой компании IANA (Органом по надзору за присвоением адресов в Интернете), глобальное бюро, которое раздает IP адреса. Такие адреса нужно считать немаршрутизируемыми, так как они не уникальны. Это внутренние локальные адреса.
компания устанавливает маршрутизатор с NAT. Маршрутизатор имеет диапазон уникальных адресов IP, выданных компании. Это - внутренние глобальные адреса.
компьютер на LAN пытается соединиться с компьютером вне сети, типа Web-сервера.
маршрутизатор получает пакет от компьютера на LAN.
После проверки таблицы маршрутизации и процесса проверки для трансляции, маршрутизатор сохраняет немаршрутизируемый адрес компьютера в таблице трансляции адресов. Маршрутизатор заменяет немаршрутизируемый адрес компьютера отправителя первым доступным IP адресом из диапазона уникальных адресов. Таблица трансляций теперь имеет отображение немаршрутизируемого IP адреса компьютера, которому соответствует один из уникальных IP адресов.
Когда пакет возвращается от компьютера адресата, маршрутизатор проверяет адрес приемника в пакете. Затем он смотрит в таблицу трансляции адресов, чтобы найти, какому компьютеру в домене принадлежит данный пакет. Он изменяет адрес приемника на тот, что был сохранен ранее в таблице трансляции и посылает пакет нужному компьютеру. Если роутер не находит соответствие в таблице, он уничтожает пакет.
Компьютер получает пакет от маршрутизатора и весь процесс повторяется, пока компьютер общается с внешней системой.

Далее посмотрим как работает перегрузка
Внутренняя сеть была установлена с немаршрутизируемыми IP адресами, которые не были специально отведены для компании
компания устанавливает маршрутизатор с NAT. Маршрутизатор имеет уникальный IP адрес, который выдала IANA
компьютер в домене пытается соединиться с компьютером вне сети, типа Web-сервера.
маршрутизатор получает пакет от компьютера в домене .
После маршрутизации и проверки пакета для выполнения трансляции, маршрутизатор сохраняет немаршрутизируемый IP адрес компьютера и номер порта в таблице трансляции. Маршрутизатор заменяет немаршрутизируемый IP адрес компьютера отправителя IP адресом маршрутизатора. Маршрутизатор заменяет исходный порт компьютера отправителя неким случайным номером порта и сохраняет его в таблице трансляции адресов для этого отправителя. Таблица трансляций имеет отображение немаршрутизируемого IP адреса компьютера и номера порта наряду с IP адресом маршрутизатора.
Когда пакет возвращается от адресата, маршрутизатор проверяет порт применика в пакете. Он затем смотрит в таблицу трансляций, чтобы найти, какому компьютеру в домене принадлежит пакет. Далее роутер изменяет адрес приемника и порт приемника в те значения, которые были ранее сохранены в таблице трансляций и посылает пакет конечному узлу.
компьютер получает пакет от маршрутизатора и процесс повторяется
Так как NAT маршрутизатор теперь имеет исходный адрес компьютера и исходный порт, сохраненный к таблице трансляций, он продолжит использовать тот же самый номер порта для последующих подключений. Каждый раз, когда маршрутизатор обращается к записи в таблице трансляций сбрасывается таймер жизни этой записи. Если к записи не обращаются прежде, чем таймер истекает, она удаляется из таблицы

Число одновременных трансляций, которые маршрутизатор будет поддерживать, определяется главным образом количеством DRAM (Динамическая Память Произвольного доступа). Так как типичная запись в таблице трансляций занимает приблизительно 160 байт, маршрутизатор с 4 Мбайтами RAM может теоретически обработать 26214 одновременных соединений, что является более чем достаточно для большинства приложений.
Безопасность и Администрирование

Реализация динамического NAT автоматически создает межсетевую защиту между вашей внутренней сетью и внешними сетями или Интернет. Динамический NAT позволяет только подключения, которые порождаются в локальной сети. По существу, это означает, что компьютер на внешней сети не может соединиться с вашим компьютером, если ваш компьютер не начал соединение. Таким образом, вы можете работать в Интернете и соединиться с сайтом, и даже выгрузить файл. Но больше никто не может просто покуситься на ваш IP адрес и использовать его, чтобы соединиться с портом на вашем компьютере.

Статический NAT, также называемый входным мапингом (inbound mapping), позволяет подключения, инициированные внешними устройствами к компьютерам в LAN при определенных обстоятельствах. Например, вы можете отобразить внутренний глобальный адрес на определенный внутренний локальный адрес, который назначен на ваш Web-сервер.

Статический NAT позволяет компьютеру в LAN поддерживать определенный адрес, общаясь с устройствами вне

рисунок

сети:

Некоторые NAT маршрутизаторы предусматривают обширную фильтрацию и логирование трафика. Фильтрация позволяет вашей компании контролировать, какие сайты на Сети посещают работники, препятствуя им просматривать сомнительный материал. Вы можете использовать регистрацию трафика, чтобы создать журнал, какие сайты посещаются и на основании этого генерировать различные отчеты.

Иногда Сетевую Трансляцию Адресов путают с прокси-серверами, где есть определенные различия. NAT прозрачен для компьютеров источника и приемника . Никто из них не знает, что это имеет дело с третьим устройством. Но прокси сервер не прозрачен. Исходный компьютер знает, что это делает запрос на прокси. Компьютер адресата думает, что прокси сервер - это исходный компьютер и имеет дело с непосредственно ним. Кроме того, прокси-серверы обычно работают на уровне 4 (Transport) модели OSI или выше, в то время как NAT – это протокол уровня 3 (Network) . Работа на более высоких уровнях делает прокси-серверы медленнее чем NAT устройства в большинстве случаев.

Реальная выгода NAT очевидна в сетевом администрировании. Например, Вы можете переместить ваш Web-сервер или сервер FTP к другому компьютеру, не волнуясь о разорванных соединениях. Просто измените входной мапинг на новый внутренний локальный адрес в маршрутизаторе, чтобы отразить новый хост. Вы можете также делать изменения в вашей внутренней сети так как любой ваш внешний IP адрес либо принадлежит маршрутизатору либо пулу глобальных адресов.

Источник: www.ciscolab.ru

вторник, 9 февраля 2010 г.

Большие секреты маленького BIOS’а

Вот и BIOS современного компьютера, как и имя яхты, имеет прямое отношение к «плавучести» вашего кремниевого друга в бушующем океане софта. Одна ошибка в параметрах - и прекрасная ласточка превращается в неповоротливого монстра, не имеющего ничего общего со стабильностью и высокой производительностью. В этой статье я попытаюсь обобщить некоторые знания и опыт по настройке BIOS’а компьютера. Данная тема настолько обширна, что осветить все просто не представляется возможным. Однако я постараюсь обрисовать основные пункты настройки и оптимизации работы компьютера средствами Базовой Системы Ввода-Вывода.
BIOS. Общая информация

Важным элементом системной платы является BIOS (Basic Input/Output System — базовая система ввода-вывода). Так называют аппаратно встроенное в компьютер программное обеспечение, которое доступно без обращения к диску. В микросхеме BIOS содержится программный код, необходимый для управления клавиатурой, видеокартой, дисками, портами и другими компонентами. Обычно BIOS размещается в микросхеме ПЗУ (ROM, Read Only Memory), расположенной на материнской плате компьютера (этот узел часто называют ROM BIOS). Такая технология позволяет обеспечить постоянную доступность BIOS независимо от работоспособности внешних по отношению к материнской плате компонентов (например, загрузочных дисков). Поскольку доступ к RAM (оперативной памяти) осуществляется значительно быстрее, чем к ROM, многие изготовители предусматривают при включении питания автоматическое копирование BIOS из ROM в оперативную память. Задействованная при этом область памяти называется теневой (Shadow RAM). В микросхемах BIOS используют различные типы памяти для хранения программного кода. PROM (Programmable Read-Only Memory) — это тип памяти, данные в которую могут быть записаны только однократно. Отличие PROM от ROM в том, что PROM изначально производятся «чистыми», в то время как в ROM данные заносятся в процессе производства. А для записи данных в микросхемы PROM применяют устройства, называемые программаторами. EPROM (Erasable Programmable Read- Only Memory — стираемое программируемое ПЗУ) — специальный тип PROM, который может очищаться (и записываться) с использованием ультрафиолетовых лучей. Память типа EEPROM похожа на EPROM, но операции стирания-записи производятся электрическими сигналами.

В настоящее время большинство современных материнских плат комплектуется микросхемами FLASH BIOS, код в которых может перезаписываться при помощи специальной программы. Такой подход облегчает модернизацию BIOS при появлении новых компонентов, которым нужно обеспечить поддержку (например, новейших типов микросхем оперативной памяти). Так как львиная доля программного кода BIOS стандартизирована, то есть является одинаковой и обязательной для всех компьютеров PC, в принципе, менять его нет особой необходимости. Перезапись BIOS — крайне ответственная и весьма непростая задача. Браться за нее следует только в самом крайнем случае — если проблема не решается никакими другими способами. При этом надо ясно отдавать себе отчет в необходимости и последствиях каждого шага этой операции. Современные типы BIOS, выполненные по технологии Plug- and-Play, называют PnP BIOS, при этом поддержка такой архитектуры обеспечивается только микросхемами Flash ROM. Вообще полная поддержка технологии Plug-and-Play со стороны Windows возможна только в случае применения PnP BIOS. Обычно это обстоятельство служит веским основанием для принятия решения о перезаписи BIOS. Кроме вышеуказанного, в новых версиях BIOS часто исправляются мелкие ошибки и недоработки. Новые версии обычно содержат и новые возможности.
Назначение и функции BIOS

В современных компьютерах BIOS выполняет несколько функций:
Запуск компьютера и процедура самотестирования (Power-On Self Test — POST). Программа , расположенная в микросхеме BIOS, загружается первой после включения питания компьютера. Она детектирует и проверяет установленное оборудование, настраивает его и готовит к работе. Если обнаруживается неисправность оборудования, процедура POST останавливается с выводом соответствующего сообщения или звукового сигнала. . Настройка параметров системы с помощью программы BIOS Setup. Во время процедуры POST оборудование определяется в соответствии с параметрами BIOS, хранящимися в специальной CMOS-памяти. Изменяя эти параметры, пользователь может настроить работу отдельных устройств и системы в целом по своим потребностям. Редактируются они в специальной программе, которую также называют BIOS Setup или CMOS Setup.
Поддержка функций ввода-вывода с помощью программных прерываний BIOS. В составе системной BIOS есть встроенные функции для работы с клавиатурой, видеоадаптером, дисководами, жесткими дисками, портами ввода-вывода и др. Эти функции широко используются в операционных системах, подобных MS-DOS, и практически не применяются в современных версиях Windows.
Процедура POST

Первое устройство, которое запускается после нажатия кнопки включения компьютера — блок питания. Если все питающие напряжения окажутся в норме, вступает в работу центральный процессор, который считывает содержимое микросхемы BIOS и начинает выполнять записанную в ней процедуру самотестирования, или POST. POST решает несколько основных задач:
Инициализирует и настраивает основные системные компоненты: процессор, оперативную память, чипсет и видеоадаптер.
Проверяет контрольную сумму CMOS и состояние батареи. Если контрольная сумма CMOS ошибочная, будут загружены значения по умолчанию.
Тестирует процессор и оперативную память. Результаты обычно выводятся на экран.
Инициализирует и настраивает периферийные устройства: клавиатуру, мышь, дисководы, жесткие диски и др. Сведения об обнаруженных
накопителях также выводятся на экран.
Распределяет ресурсы между устройствами и выводит таблицу с обнаруженными устройствами и назначенными для них ресурсами.
Ищет и инициализирует устройства с собственной BIOS.
Вызывает загрузчик операционной системы.

После того, как успешно завершилась процедура POST, запускается поиск загрузочного сектора, который может находиться на жестком диске или сменном носителе. Порядок опроса устройств устанавливается с помощью параметров BIOS: First Boot Device, Second Boot Device, Third Boot Device.
Основные разработчики BIOS

Раньше — примерно в начале-середине 90-х — можно было встретить версии BIOS, целиком разработанные производителями системных (материнских) плат или ноутбуков — например Intel, IBM, Compaq, Toshiba, Dell. В результате эволюции компьютерного оборудования все лучшие наработки были воплощены в продукции таких брэндов, как Award, AMI, Phoenix, которые сейчас являются основными производителями программного кода BIOS. Поэтому версии BIOS различаются незначительно. Рассмотрим подробнее каждого производителя базовой версии BIOS.

AwardBIOS компании Award Software (phoenix.com) — наиболее известный производитель BIOS. В свое время очень популярной была версия 4.51, позже появилась версия 6.0, которая установлена на львиной доле современных материнских плат. В далеком 1998 году фирма Award была куплена компанией Phoenix, однако все последующие разработки выходят под торговой маркой AwardBIOS или Phoenix-Award BIOS.

AMIBIOS компании American Megatrends (ami.com). В настоящее время данный производитель занимает второе место по популярности среди производителей материнских плат. В основном данную версию BIOS на свою продукцию устанавливают такие компании, как ASUStec, ASRock, MSI.

PhoenixBIOS компании Phoenix Technologies (phoenix.com) чаще всего встречается на ноутбуках.
Версии BIOS

Для того, чтобы использовать все возможности чипсета, установленного на материнской плате, а также особенности работы со всем переферийным оборудованием (жесткие диски, карты расширения и пр.), необходима своя версия BIOS. Но для того, чтобы создать необходимую версию, нужно обеспечить полный цикл разработки программы. Но фирмам-производителям невыгодно содержать специальный отдел, тратить время и ресурсы. Поэтому создание BIOS обычно разделяют на два этапа:
Производитель BIOS разрабатывает базовую версию, в которой реализованы все функции, не зависящие от особенностей чипсета.
Производитель материнской платы совместно с компанией — разработчиком BIOS, так сказать, подгоняют версию под особенности платы. Со временем появляется новое периферийное оборудование, и BIOS может неоднократно изменяться после выпуска платы, получая новые функции и возможности. Новые версии BIOS выкладываются для скачивания на сайтах компаний — производителей материнских плат с точным указанием модели этой самой платы.

Таким образом, понятие «версия BIOS» можно обозначить как версию базового кода (обычно обозначается как AwardBIOS 6.0 — шестая версия BIOS компании Award) либо версию BIOS для конкретной модели материнской платы, название которой обычно состоит из сокращенного названия модели платы и номера обновления.
ход в BIOS Setup

Вход в BIOS Setup возможен только при включении компьютера. При первоначальном тестировании POST (слышен один короткий сигнал из системного динамика) необходимо нажать определенную клавишу или сочетание клавиш. Обычно на экранной заставке при тестировании отображается надпись типа «Press DEL to enter Setup» — это означает, что для входа в BIOS Setup необходимо нажать клавишу DEL. Узнать, за которой клавишей закреплен вход в BIOS, можно из инструкции к материнской плате. Если инструкции нет, а экранная заставка не отображает подсказки, можно опробовать наиболее известные варианты комбинаций:

Delete
F1, F2, F3, F10, F11, F12
Esc
Ctrl + Shift + S или Ctrl + Alt + S
Ctrl + Alt + Esc
Ctrl + Alt + Delete
Интерфейс BIOS и приемы работы с параметрами

Наиболее распространенные версии BIOS имеют схожий текстовый интерфейс, и изменение всех значений параметров осуществляется при помощи клавиатуры. При входе в BIOS Setup пользователь попадает в главное окно, где расположены все основные разделы, причем меню в списке отображается со значком «?» перед названием раздела. Внутри раздела также может быть расположен еще один раздел (подраздел). Все разделы имеют одинаковую структуру:
В верхней части окна выводится название текущего раздела или подраздела.
В левой части находится список доступных параметров выбранного раздела (либо вызывается выпадающий список при нажатии на клавишу
Enter).
Справа от названий параметров выводятся их текущие значения. Если какой-либо из параметров и его значение отображается бледным цветом — значит, либо он предназначен только для чтения и не может изменяться, либо для его редактирования необходимо изменить другой связанный с ним параметр.
В правой части окна обычно выводится краткая справка по выбранному параметру, в нижней части — подсказка по использованию
функциональных клавиш.

После входа в BIOS Setup и появления главного окна будут доступны следующие клавиши для управления:
<^v> (клавиши управления курсором) — перемещение по разделам и параметрам.
Enter — вход в выбранный раздел или выполнение команды, также в современных BIOS появляется выпадающий список доступных параметров. . Page Up/Page Down или +/- на дополнительном цифровом блоке клавиатуры — изменение значения выбранного параметра: нажимая указанные клавиши несколько раз, можно перебрать все доступные значения изменяемого параметра. Обычно по отображении последнего параметра
указатель перемещается на первое значение списка (т.н. зацикленный список).
ESC — выход из раздела в главное меню, а при нажатии в главном окне — выход из BIOS Setup с отменой всех изменений.
F1 — вызов справки по работе с BIOS Setup.
F2 — смена цветовой палитры программы BIOS Setup (доступна не во всех версиях).
F5 — восстановление предыдущих значений для выбранного раздела: будут возвращены те значения, которые были на момент входа в программу BIOS Setup, либо (в некоторых версиях) установлены значения по умолчанию.
F6 — установка для выбранного раздела значений по умолчанию (команда Load Fail-Safe Defaults); также в различных версиях могут
использоваться клавиши F5 или F9 (AMI BIOS).
F7 — установка для выбранного раздела оптимизированных значений (команда Load Optimized Defaults).
F10 — выход из BIOS Setup с сохранением всех внесенных изменений, при этом нужно подтвердить действия с помощью клавиш Y или Enter. . Y/N — Yes/No (Да/Нет) — согласиться или отказаться от выполнения команды или изменения параметра. BIOS также может предупреждать о том, что изменение параметра может повлечь нестабильную работу всей системы. Пользователь может либо согласиться и не изменять данный параметр, либо отказаться и продолжить редактировать параметр на свое усмотрение.
Безопасная работа с BIOS Setup

Работа с BIOS Setup связана с определенным риском, поскольку при неправильном или неосторожном изменении параметра система может функционировать нестабильно либо не функционировать вообще. Есть несколько простых советов, которые позволяют свести возможный риск к минимуму:
Старайтесь вообще не экспериментировать с BIOS на компьютерах, обрабатывающих или хранящих важную или объемную информацию. Перед настройкой системы с помощью BIOS позаботьтесь о резервном копировании важных данных. Главное в таких компьютерах — стабильность. Подвисший разогнанный компьютер через несколько часов обработки видео — это потеря времени и электроэнергии и результата работы. Неразогнанный справится с данной задачей гораздо эффективнее и сохранит ваши нервы.
Прежде, чем изменить важные параметры, всегда фиксируйте выставленное и измененное значение. Это позволит вам в случае нестабильной работы системы вернуть ее в рабочее состояние.
Не изменяйте значения параметров, которые вам неизвестны. Уточните их значение либо в инструкции к материнской плате, либо в сети Internet на ресурсе разработчика платы.
Не редактируйте за раз несколько важных не связанных между собой параметров. При нестабильной работе системы гораздо сложнее определить, какой параметр вызвал нестабильную работу.
Не разгоняйте компьютер без соответствующей подготовки.
Не используйте раздел Hard Disk Utility, который предназначен для низкоуровневого форматирования устаревших моделей жестких дисков и встречается в старых версиях BIOS, т.к. может вывести из строя современный жесткий диск.
Если после выставления параметров и выхода из BIOS компьютер перестает запускаться вообще, вернуть систему в рабочее состояние можно несколькими способами:
Если после перезагрузки компьютера возможно войти в BIOS Setup, нужно установить прежние значения отредактированных параметров. Некоторые версии BIOS сами осуществляют откат изменений за последнюю сессию.
Если сделанные изменения неизвестны, то лучше воспользоваться параметрами по умолчанию, использовав команду Load Fail-Safe Defaults. После этого придется настраивать систему на оптимальную работу.
Если компьютер вовсе не запускается из-за неправильных настроек BIOS, то в таком случае необходимо обнулить содержимое CMOS. При этом все значения включая дату/время будут изменены.
Основные разделы BIOS

В большинстве случаев производители BIOS используют классический вид первой страницы BIOS Setup размещения основных разделов и команд в два столбца. Как было оговорено ранее, каждая материнская плата имеет свои особенности, названия основных разделов BIOS, как правило, не меняются. Рассмотрим кратко названия основных разделов, дабы легче ориентироваться в местонахождении требуемого параметра.
Standard CMOS Features (Standard CMOS Setup) — здесь собраны стандартные настройки компьютера, к которым относятся параметры дисковых накопителей, настройки даты, времени. Здесь также можно узнать о количестве установленной оперативной памяти и другие сведения о
системе.
Advanced BIOS Features (BIOS Features Setup) — «расширенные настройки BIOS», к которым относятся параметры загрузки, параметры работы компьютера, чипсета, периферии и кэш-памяти.
Advanced Chipset Features (Chipset features Setup) — настройки работы чипсета материнской платы — в частности, настройка северного моста (определяющих работу оперативной памяти, процессора, видеосистемы, шин AGP, PCI-Express и других устройств).
Integrated Peripherals — настройка параметров интегрированных периферийных устройств, которые поддерживаются южным мостом — таких, как гибкие и жесткие диски, адаптеры, порты и др.
Power Management Setup — установка параметров электропитания и режимов энергосбережения, а также параметров изменения рабочего
состояния при наступлении определенного события.
PnP/PCI Configurations — управление способом распределения ресурсов между периферийными устройствами. Обычно данной функцией не
пользуются, оставляя по умолчанию автоматическое распределение ресурсов.
PC Health Status или H/W Monitor — отображение текущего значения, получаемого со встроенных датчиков, температур, напряжений и
скорости вращения вентиляторов, а также установка значений для срабатывания защиты от перегрева.
Frequency/Voltage Control — установка рабочих частот и напряжений для процессора, чипсета, оперативной памяти, видеоадаптера и других значений.
Load Fail-Safe Defaults (Load BIOS Setup Defaults) — команда, сбрасывающая все настройки BIOS до значения по умолчанию, при этом
устанавливаются безопасные значения всех параметров, частот и напряжений.
Load Optimized Defaults (Load High Performance) — команда устанавливает настройки BIOS, которые обеспечивают оптимальную
производительность системы, сохраняя ее стабильность. Ускоряется процедура POST, режимы работы оперативной памяти, шин и другие
параметры.
Set Supervisor Password, Set User Password — команды для установки административного и пользовательского пароля на вход в BIOS Setup или загрузку компьютера.
Диагностические средства BIOS

Чтобы выдать сообщение пользователю, BIOS имеет возможность подать звуковой сигнал либо сообщить в текстовом виде на экране монитора. Первоначальное тестирование компьютера сопровождается подачей одного короткого звукового сигнала, что свидетельствует об успешном завершении процедуры POST и готовности к загрузке операционной системы. Если при прохождении POST обнаружена серьезная ошибка, работа системы будет остановлена с выдачей звуковых сигналов и/или текстового сообщения на экран монитора. Рассмотрим список основных значений звуковых сигналов для AMI и Award BIOS — следует заметить, что производители могут добавлять или изменять эти значения. Уточнить их можно либо в инструкции к материнской плате, либо на сайте ее изготовителя.

Таблица 1. Звуковые сигналы AMI BIOS

|Сигнал |Значение |
|1 короткий |Ошибок не обнаружено, загрузка системы продолжается |
|2 коротких |Ошибка четности оперативной памяти |
|3 коротких |Неисправны первые 64 Кб оперативной памяти |
|4 коротких |Неисправен системный таймер |
|5 коротких |Неисправен процессор |
|6 коротких |Неисправен контроллер клавиатуры |
|7 коротких |Неисправна системная плата |
|8 коротких |Ошибка видеопамяти |
|9 коротких |Неправильная контрольная сумма BIOS |
|10 коротких |Ошибка записи в CMOS-память |
|11 коротких |Ошибка кэш-памяти |
|1 длинный 2 коротких |Неисправен видеоадаптер |
|1 длинный 3 коротких | |
|2 длинных 2 коротких |Ошибка контроллера гибких дисков |
|Сигналы отсутствуют |Неисправен блок питания или системная плата |

Таблица 2. Звуковые сигналы Award BIOS

|Сигнал |Значение |
|1 короткий |Ошибок не обнаружено, загрузка системы продолжается |
|Непрерывный или короткий повторяющийся |Неисправен блок питания или замыкание в цепях питания |
|1 длинный или длинный повторяющийся |Ошибка оперативной памяти |
|1 длинный 2 коротких |Видеоадаптер не обнаружен или ошибка видеопамяти |
|1 длинный 3 коротких |Ошибка видеоадаптера или ошибка клавиатуры |
|3 длинных |Ошибка контроллера клавиатуры |
|1 длинный 9 коротких |Ошибка чтения BIOS или неисправна микросхема BIOS |
|2 коротких |Обнаружена некритическая ошибка. Этот сигнал обычно сопровождается сообщением на экране с более |
| |конкретным описанием ошибки. Пользователь может продолжить загрузку после нажатия F1 или войти в |
| |BIOS Setup с помощью клавиши входа. |
|Сигналы отсутствуют |Неисправен блок питания или системная плата |

Если компьютер не загружается с выдачей определенного звукового сигнала или без него и при этом изображение на экране не появляется, можно воспользоваться следующими советами:
Перезагрузить компьютер с помощью кнопки RESET на системном блоке. Возможно, придется полностью обесточить компьютер на некоторое время.
Проверьте правильность и надежность подключения всех разъемов и устройств.
Если до этого были изменены параметры BIOS, необходимо сбросить все настройки BIOS по умолчанию.
Попытайтесь заменить подозрительное устройство, ориентируясь по звуковым сигналам.
Попытайтесь запустить систему с минимально необходимыми устройствами, отключив все накопители, платы расширения и периферийные устройства.
В случае старта подключите какой-нибудь накопитель (дисковод, жесткий диск) и загрузите операционную систему. Далее, подключая по очереди платы расширения и остальные периферийные устройства, определите проблемное устройство.
Обновление BIOS

Практически во всех современных материнских платах код BIOS записан в энергонезависимую микросхему Flash-памяти, что делает процедуру обновления BIOS достаточно простой. Тем не менее, перезапись BIOS — операция достаточно ответственная, и выполнять ее необходимо лишь в том случае, если другими средствами устранить какую-либо проблему не представляется возможным либо если возникает одна из перечисленных причин:
В материнскую плану нужно установить новый процессор, поддержка которого появилась лишь в новой версии BIOS.
К материнской плате необходимо подключить жесткий диск большего объема, чем предусматривает имеющаяся версия BIOS.
Активация дополнительных функций, реализованных в чипсете, но недоступная в более ранних версиях BIOS.
Если компьютер работает нестабильно (хотя на стабильность влияет и множество других параметров) либо версия BIOS повреждена.

Следует принять во внимание, что, если веских причин для обновления BIOS’а нет, то лучше отказаться от этой процедуры. Ведь после перезаписи придется заново редактировать все настройки BIOS, а также операционной системы, и даже переустанавливать ее. Если все-таки было принято решение об обновлении BIOS, то необходимо выполнить несколько подготовительных действий:
Изучить производителя и модель материнской платы — это можно сделать либо просто осмотрев материнскую плату, либо посмотрев ее название и модель в инструкции, а можно использовать одну из диагностических утилит (SiSoftware Sandra, sisoftware.co.uk либо EVEREST, lavales.com).
Скачать с сайта производителя материнской платы новую версию BIOS для вашей модели (обычно файл с расширением *.bin) и программу- прошивальщик, а также инструкцию к программе-прошивальщику и изучить все ключи и команды либо распечатать, дабы при неудачной прошивке иметь возможность воспользоваться всеми ее возможностями.
Создать загрузочную дискету с программой-прошивальщиком и новой версией BIOS.
Обязательно сделать резервную копию работающего BIOS вашей материнской платы, чтобы иметь возможность выполнить откат.
Позаботится о стабильности системы на время прошивки BIOS, отключив дополнительную периферию и оставив необходимый минимум устройств для загрузки системы.

При несоблюдении описанных выше основных правил обновления код BIOS может быть поврежден, вследствие чего компьютер может не загружаться. Однако признаки жизни компьютер все же подает: загорается индикатор питания, запускаются вентиляторы, мигают индикаторы дисков и на клавиатуре. В таком случае прежде, чем приступать к процедуре восстановления BIOS, нужно отключить на некоторое время компьютер от сети, обнулить CMOS при помощи перемычки на компьютере и попытаться включить его снова.
Разгон компьютера средствами BIOS

На страницах бумажных изданий и в интернете давно ведется спор: а стоит ли разгонять компьютер? Все общество спорящих разбилось на два лагеря: одни считают, что разгон полезен для пользователя, другие считают, что он вреден для оборудования. И те, и другие правы. Но в конечном итоге выбирать пользователю. Мы можем лишь указать степень риска и возможные последствия разгона. Итак, дадим определение процессу разгона. Скорость работы таких компонентов, как процессор, оперативная память, видеоадаптер и чипсет, зависит от установленных тактовых частот, интервалов и рабочих напряжений. Изменяя эти параметры, можно заставить систему работать на повышенной или пониженной частоте. Превышение рабочих частот по сравнению со значениями, заданными производителем устройства, называется разгоном. Так, при работе на повышенной частоте/напряжении срок службы микросхемы снижается вдвое при сроке службы, заявленном производителем примерно 15-20 лет. Вот теперь представьте ваш домашний компьютер без апгрейда хотя бы 5-7 лет. Часто ли можно встретить в домашней системе видеоадаптер или процессор пятилетней давности? В конечном итоге решение принимать пользователю.

Почему же вообще возможен разгон? Производители всегда оставляют так называемый запас прочности для своего оборудования, что необходимо для его надежности в течение всего срока эксплуатации. Для процессора, оперативной памяти, видеоадаптера, чипсета и других компонентов рабочие частоты устанавливаются с помощью тактового генератора на материнской плате. Во многих материнских платах предусмотрено изменение частоты в BIOS, разгон выполняется простым изменением нескольких параметров. Вместе с тем, при разгоне могут проявиться отрицательные эффекты:
нестабильная работа компьютера, сбои или зависания, связанные с повышенными частотами разогнанных компонентов;
невозможность включить компьютер или загрузить операционную систему из-за слишком высоких рабочих частот;
сокращение срока службы компонентов;
выход из строя процессора, оперативной памяти, материнской платы или видеоадаптера при чрезмерном завышении питающих напряжений или по другим причинам.

К процессу разгона компонентов следует подходить очень ответственно: будучи повреждены из-за разгона, гарантийному обмену они не подлежат. Существует два основных способа разгона компьютера. Разгон с помощью специализированных утилит — на компакт-дисках с драйверами к материнской плате часто поставляется специализированная утилита для разгона непосредственно из операционной системы. Разгон с помощью BIOS — используются специализированные настройки BIOS. Разгон с помощью BIOS предполагает установку рабочих частот и напряжений пользователем. Следует сразу же заметить, что неосторожное изменение рабочих частот и напряжений может привести к тому, что система может самостоятельно перезагружаться или не загружаться вовсе, а в самом пессимистичном случае даже выходят из строя отдельные компоненты. Данный способ довольно трудоемок по сравнению со способом использования утилит, но позволяет достичь выдающихся результатов. Традиционно раздел для рабочих частот и напряжений называется frequency/Voltage Control, но производители материнских плат стремятся дать этому разделу свое уникальное и броское название. Вот несколько примеров: MB Intelligent Tweaker (M.I.T.) — Gigabyte, Cell Menu — MSI, Genie BIOS Setting — DFI. Названия и местоположение некоторых параметров может изменяться даже в продукции одного производителя. Некоторые производители материнских плат пытаются скрыть критичные для разгона характеристики — данное решение позволяет уменьшить число звонков в службу технической поддержки при неумелом разгоне. Например, Gigabyte в BIOS Setup открывает некоторые настройки только при нажатии на Ctrl+F1. Однако встречаются так называемые бюджетные варианты материнских плат, в которых возможности разгона напрочь отсутствуют. Этим производитель добивается стабильной работы, удешевления проектирования, разработки и производства и как результат низкой цены конечного продукта. Тем не менее, следует очень ответственно подходить к изменению известных настроек и еще более тщательно изучать неизвестные.

Автор: Сергей Лянцев
Источник: www.nestor.minsk.by

Теория и настройка DNS сервера (bind) на FreeBSD

Демон BIND (процесс named) позволяет поднять на FreeBSD свой DNS сервер.

В этой статье приводится настройка DNS сервера и создание зоны для домена.
Теория

DNS (Domain Name System — система доменных имён) — распределённая система (распределённая база данных), способная по запросу, содержащему доменное имя хоста (компьютера или другого сетевого устройства), сообщить IP адрес или (в зависимости от запроса) другую информацию. DNS работает в сетях TCP/IP. Как частный случай, DNS может хранить и обрабатывать и обратные запросы, определения имени хоста по его IP адресу: IP адрес по определённому правилу преобразуется в доменное имя, и посылается запрос на информацию типа “PTR“.

Вы зарегистрировали/купили свой домен в зоне ru (net, com, org, su, и т.д.), что дальше ? Теперь Вам нужен DNS сервер который будет отвечать за зону Вашего домена.

У Вас два варианта:
использовать чужой DNS сервер, например: nic.ru предоставляет услугу поддержки DNS или разместить зону Вашего домена на DNS серверах Вашего провайдера
Поднять собственный DNS сервер (при условии наличия внешнего IP-адреса)

Зона - файл в котором описано соответствие хостов домена и их IP-адресов.

В файле зоны могут быть описаны следущие типы:
SOA
NS
MX
A
PTR

В SOA входит:

Origin - доменное имя определенной оператором zone в named.conf. Это доменное имя является ключем к сокращениям в файле зоны и является суффиксом по умолчанию для всей информации в файле зоны. Суффикс по умолчанию добавляется ко всем именам в файле зоны, которые не зканчиваются точкой, и поскольку каждый файл описывает отдельную зону, суффиксы по умолчанию в разных файлах различны.
mail addr - Тут записан email адрес ответственного за зону.
Serial - Серийный номер версии файла зоны; должен увеличиваться при каждом изменении в зоне - по нему вторичный сервер обнаруживает, что надо обновить информацию (заново скачать копию файла зоны). Обычно пишется в виде <год><месяц><число><номер изменения>.
Refresh - Временной интервал в секундах, через который вторичный сервер будет проверять необходимость обновления информации.
Retry - Временной интервал в секундах, через который вторичный сервер будет повторять обращения при неудаче.
Expire - Временной интервал в секундах, через который вторичный сервер будет считать имеющуюся у него информацию устаревшей.
Minimum - Значение времени жизни информации на кэширующих серверах ((ttl) в последующих записях ресурсов).

Пример SOA:
$TTL 3600

@ IN SOA ns.subnets.ru. root.subnets.ru. (

2008071001; Serial

3600 ; Refresh

900 ; Retry

360000 ; Expire

3600 ) ; Minimum

Где @, в начале SOA, является сокращением, т.к. доменное имя совпадает с суффиксом по умолчанию, без сокращения SOA был бы вида:
subnets.ru. IN SOA ns.subnets.ru. root.subnets.ru. (

ns.subnets.ru - это имя первичного мастер-сервера DNS зоны subnets.ru

root.subnets.ru - mail address человека отвечающего за зону (символ “@”, в mail адресе, в файле зоны опускается).

Далее идут:

NS - Сервер Имен, описывает DNS-сервера содержащие (отвечающие за) данную зону.
A - Адрес, содержит адрес указанного имени.
CNAME (Canonical Name) - Каноническое имя, указывает псевдоним для официального имени хоста
MX (Mail Exchange) - Почтовый Сервер, такие записи используются для обозначения списка хостов, которые сконфигурированы для приема почты посланной на это доменное имя. Помимо адреса почтового сервера содержат числовое значение обозначающее приоритет, т.е. более низкие числа показывают более высокий приоритет, а приоритеты одинаковые отправители должны использовать в произвольном порядке хосты MX для равномерного распределения нагрузки.
TXT - Текст, содержит текстовые данные любого вида. Применяется редко и специфичным образом.
HINFO - Информация о Хосте, содержит некоторую информацию о машине, обычно - тип процессора и операционной системы, крайне редко используется.
PTR - Pointer - указатель, служит для выполнения обратного преобразования IP-адресов в имена хостов.

Пример зоны прямого просмотра:
$TTL 3600

@ IN SOA ns.subnets.ru. root.subnets.ru. (

2008071001; Serial

3600 ; Refresh

900 ; Retry

360000 ; Expire

3600 ) ; Minimum
IN NS ns.subnets.ru.

IN NS ns2.subnets.ru.

IN MX 10 maillocalhost IN A 127.0.0.1

subnets.ru. IN A 217.172.16.77

HINFO "INTEL P4" "FreeBSD"

ns IN A 217.172.16.77

ns2 IN A 217.172.16.1

mail IN A 217.172.16.77

www IN A 217.172.16.77


Вы можете заметить, что у некоторых записей в конце стоит символ “.” (точка). Точка в конце имени означает, что к этому имени не будет дописываться имя домена указанного в этой зоне.

Например:

Запись ns.subnets.ru (без точки) будет и интерпретироваться DNS сервером как ns.subnets.ru.subnets.ru, но если в конце поставить точку (ns.subnets.ru.), то сервер уже не будет дописывать имя домена subnets.ru в конец имени. Таким образом запись www (в примере выше) “превращается” в www.subnets.ru, т.к. символа точки после www нет.
Важное замечаниеЛюбой файл зоны должен оканчиваться пустой строкой ! Иначе в логах вы будете видеть подобное:master/zone-name.ru:30: file does not end with newlineИ данная зона обслуживаться DNS сервером не будет.
Так же отметим два понятия:

Зоны прямого просмотра
Зоны обратного просмотра

Зона прямого просмотра - когда на основе имени выдается IP-адрес, пример:

Воспользуемся командой: nslookup subnets.ru

Server: XXX.XXX.XXX.XXX
Address: XXX.XXX.XXX.XXX#53

Non-authoritative answer:
Name: subnets.ru
Address: 217.172.16.77

Зона обратного просмотра - когда на основе IP-адреса выдается имя, пример:

Воспользуемся командой: nslookup 217.172.16.77

Server: XXX.XXX.XXX.XXX
Address: XXX.XXX.XXX.XXX#53

Non-authoritative answer:
77.16.172.217.in-addr.arpa name = mega-net.ru.

Обращаю ваше внимание на тот факт, что имя прямого и обратного просмотра могут отличаться.

Пример зоны обратного просмотра (reverse):
$TTL 3600

@ IN SOA ns.mydomain.ru. root.domain.ru. (

2008071001; Serial

3600 ; Refresh

900 ; Retry

360000 ; Expire

3600 ) ; Minimum
IN NS ns.mydomain.ru.

IN NS ns2.mydomain.ru.



77 IN PTR subnets.ru.

;Если вся остальная зона состоит и примерно одинаковых имен, то можно также воспользоваться директивой $GENERATE

$GENERATE 1-76 $.16.172.217.in-addr.arpa. PTR host-217-172-17-$.mydomain.ru.

$GENERATE 78-254 $.16.172.217.in-addr.arpa. PTR host-217-172-17-$.mydomain.ru.

При этом в сама зона 16.172.217.in-addr.arpa почти не отличается от зон прямого просмотра, также будет присутствовать запись SOA, перечисление NS, а далее PTR записи, например:

1 IN PTR myname

или на примере 217.172.16.77:

77 IN PTR mega-net.ru.

Если вы хотите сделать почти идентичные записи по хостам в зоне обратного просмотра и вам лень описывать каждый хост самому, то можно воспользоваться возможностями BIND и сделать это такой строкой, на примере зоны 16.172.217.in-addr.arpa:

$GENERATE 1-254 $.16.172.217.in-addr.arpa. PTR host-217-172-16-$.mydomain.ru.

Из чего будет следовать, что обратный посмотр для IP адресов из диапазона 217.172.16.1 - 217.172.16.254 будет выглядеть как:

host-217-172-16-XXX.mydomain.ru

Где XXX это последний октет IP-адреса.

DNS работает на порту udp 53 - обслуживает запросы и на порту tcp 53 - обменивается зонами с другими DNS серверами.

DNS сервера (применительно к зонам) бывают двух типов:
master
slave

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

Пример секции конфига (named.conf) для master DNS зоны mydomain.ru:
zone "mydomain.ru" {

type master;

file "master/madomain.ru.zone";

};

slave - вторичный DNS сервер отвечающий за зону. Зону скачивает с первичного DNS сервера и сохраняет у себя копию.

Пример секции конфига (named.conf) для slave DNS зоны mydomain.ru:
zone "mydomain.ru" {

type slave;

file "slave/madomain.ru.zone";

masters{IP-ADDRESS-MASTER-DNS;};

};

Где IP-ADDRESS-MASTER-DNS это IP-адрес первичного (master) DNS сервера для зоны mydomain.ru.

Пример секции конфига (named.conf) для master DNS обратной зоны 16.172.217.in-addr.arpa:
zone "16.172.217.in-addr.arpa" {

type master;

file "master/217.172.16.rev";

};

Секция конфига (named.conf) для slave DNS сервера обратной зоны ничем не отличается от прямой:
zone "16.172.217.in-addr.arpa" {

type slave;

file "slave/217.172.16.rev";

masters{IP-ADDRESS-MASTER-DNS;};

};

Зоны обратного просмотра (IP-адрес в DNS имя) обычно находятся на DNS серверах вашего провайдера, т.е. у того кому принадлежат данные IP-адреса. Вы сможете исправить “обратное” имя попросив своего провайдера сделать это или если, провайдер делегировал вам эту возможность, сделать этот самим. “По умолчанию” действует первый вариант.

Резолв (resolve) - преобразование из имени в IP-адрес и наборот.

Технология Round robin в DNS:

Когда на одно доменное имя может выдаваться несколько IP-адресов. Для этого в файле зоны
необходимо на одно имя указать несколько IP-адресов, например:


mycoolsite IN A 192.168.1.15

mycoolsite IN A 172.16.18.6


В этом случае первому обратившемуся за резолвом имени mycoolsite будет дан IP 192.168.1.15, следующему 172.16.18.6, следующему 192.168.1.15 и так по кругу. Можно указать 3-ий и 4-ый и т.д. IP-адреса, все они будут выдаваться по кругу.

Многие называют это “балансировкой нагрузки”, но это не совсем верно, т.к. раные клиенты могут давать разную нагрузку. Как говорится: “Клиент клиенту рознь”.

Так же DNS служба ничего не знает о доступности указанных адресов, т.е. если один из IP-адресов перестанет отвечать (упадет) это не означает, что DNS служба перестанет выдавать IP-адрес упавшего хоста, он по прежнему будет выдаваться клиентам на их DNS запросы.
Практика

Поднимаем не кеширующий DNS сервер.

И опять два варианта:
Вопользоваться уже имеющимся в системе демоном (/usr/sbin/named)
Установить из портов более свежую версию

Выбрать можно любой вариант основываясь на версиях. Выполните команду, чтобы узнать версию:

/usr/sbin/named -v

Для тех кто все же решил установить bind из портов:

cd /usr/ports/dns/bind9
make rmconfig
make install clean

При установке ставим галочку “REPLACE_BASE Replace base BIND with this version“, что бы заменить уже имеющимся в системе версию той, что мы устанавливаем.

Если вылезла ошибка:

make: don’t know how to make /usr/ports/dns/bind9/work/.build_done.bind9._usr_local. Stop
*** Error code 2

Не пугайтесь, просто запускайте make install clean ещё раз.

Текущая, на момент написания статьи, версия в портах bind-9.3.5-P1

Приступаем к настройке.

По умолчанию директория bind это /var/named/etc/namedb/ или /etc/namedb/ которая является симлинком (символической ссылкой) на первую (далее я буду использовать /etc/namedb/).

Итак, переходим в директорию /etc/namedb/. Основной конфигурационный файл это named.conf.

Простейший пример файла named.conf:
options {

directory "/etc/namedb";

pid-file "/var/run/named/pid";

dump-file "/var/dump/named_dump.db";

statistics-file "/var/stats/named.stats";

listen-on {

127.0.0.1;

194.87.0.50;

};

allow-recursion{

127.0.0.1;

192.168.0.0/16;

};

recursive-clients 30000;

};acl "trusted-dns"{

127.0.0.1;

194.58.241.26;

};logging {

category lame-servers { null; };

};

zone "." {

type hint;

file "named.root";

};

zone "0.0.127.IN-ADDR.ARPA" {

type master;

file "master/localhost.rev";

};

// RFC 3152

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {

type master;

file "master/localhost-v6.rev";

};

zone "mydomain.ru" {

type master;

file "master/madomain.ru.zone";

allow-transfer { trusted-dns;};

};


Как мы видим файл состоит из блоков/секций. Блоки:
options
listen-on
allow-recursion
acl
logging
zone

Разберем некоторые:

listen-on - IP-адреса интерфейсов сервера на котором будет запущена служба named.

allow-recursion - список IP-адресов и/или подсетей которым разрешена рекурсия. По умолчанию DNS сервер обслуживает запросы любых клиентов для любых доменов, но если вы не хотите, чтобы кто то использовал Ваш DNS сервер (бережете трафик или ресурсы машины) необходимо использовать эту директиву, которая “скажет” DNS серверу о том, что для IP-адресов которых нет в списке allow-recursion отвечать только на запросы касаемые зон которые прописаны на данном DNS сервере.

Пример поведения без allow-recursion:

Клиент “А” (IP-адрес 192.168.15.9) запрашивает IP-адрес для имени www.ya.ru. Сервер ему ответит:

www.ya.ru canonical name = ya.ru.
Name: ya.ru
Address: 213.180.204.8

Что означает что www.ya.ru ссылается* на имя ya.ru, а оно уже имеет IP-адрес 213.180.204.8

* при такой ситуации запись CNAME в конфиге зоны для домена ya.ru будет выглядеть примерно так:
ya.ru. IN A 213.180.204.8

www IN CNAME ya.ru.


Клиент “Б” (IP-адрес 10.4.15.45) запрашивает IP-адрес для имени www.ya.ru. Сервер ему ответит то же самое, что ответил клиенту “А” с IP-адресом 192.168.15.9

Пример поведения с allow-recursion:

Как мы видим из примера файла named.conf в секции allow-recursion описан хост 127.0.0.1 (localhost) и подсеть 192.168.0.0/16 (которая означает диапазон адресов)

Итак опять же берем двух клиентов “А” и “Б”. Для клиента “А” нечего не изменится, т.к. его IP-адрес входит в подсеть 192.168.0.0/16 которая описана в секции allow-recursion, а вот для клиента “Б” возникнет ситуация когда сервер на его запрос ответит:

*** Can’t find www.ru: No answer

потому что рекурсия для хоста 10.4.15.45 (или подсети 10.0.0.0/8) не разрешена. Но при этом если клиент “Б” обратится с запросом о имени mydomain.ru он получит ответ о IP-адресе данного имени, т.к. DNS сервер всегда будет отвечать на запросы о тех доменах которые прописаны в его конфигурации (named.conf), те домены за которые он как первичный или вторичный DNS сервер отвечает.

recursive-clients - максимальное кол-во одновременно обслуживаемых рекурсивных запросов от клиентов

acl - секция позволяющая создать access control list из IP-адресов, дабы потом не перечеслять их каждый раз в других секциях. acl “trusted-dns” в данном случае описывает IP-адреса доверительных DNS серверов которым позволено скачивать зоны полностью с нашего DNS сервера, т.к. по умолчанию скачать копию вашей зоны с вашего master DNS сервера сможет любой желающий указав с своем конфиге IP-адрес вашего master DNS сервера как первичного для вашей зоны. Если вы собираетесь вводить ограничения не скачивание файла зоны, то не забудьте в acl указать IP-адрес(а) вторичного(ных) DNS сервера(ов).

zone - собственно секция отвечающая за поддержку нашего тестового домена mydomain.ru данный сервер является мастером (master) для данной зоны. Внутри секции zone идет “ссылка” на “trusted-dns”, это, как вы должны помнить, acl смысл которого описан чуть выше. Секция zone обязательно должна описывать: тип (type) зоны (master или slave), путь до файла (file) зоны. В случаее если это тип slave доавляется обязательный параметр masters:

masters { IP-ADDRESS; };

где IP-ADDRESS это адрес первичного DNS сервера для данной зоны.

зона “0.0.127.IN-ADDR.ARPA” это зона обратного просмотра для localhost. Если в папке master у вас нет файлов localhost.rev и localhost-v6.rev, то в /etc/namedb есть файл make-localhost и выполнив команду:

sh make-localhost

эти два файла будут созданы автоматически.

Для начала с named.conf закончили. Теперь создадим файл зоны для нашего домена.

Переходим в папку /etc/namedb/master. Создаем файл madomain.ru.zone (зона прямого просмотра) следущего содержания:
$TTL 3600

@ IN SOA ns.mydomain.ru. root.mydomain.ru. (

2008071001; Serial

3600 ; Refresh

900 ; Retry

360000 ; Expire

3600 ) ; Minimum IN NS ns.mydomain.ru.

IN NS ns2.mydomain.ru.

IN MX 10 mail

localhost IN A 127.0.0.1

mydomain.ru. IN A 194.87.0.51

HINFO "INTEL P4" "FreeBSD"

ns IN A 194.87.0.50

ns2 IN A 194.58.241.26

mail IN A 194.87.0.51

www IN A 194.87.0.51

Сохраняем файл зоны. Получили:
Первичный DNS сервер зоны mydomain.ru это ns.mydomain.ru и он имеет IP-адрес 194.87.0.50
Вторичный DNS сервер ns2.mydomain.ru имеет IP-адрес 194.58.241.26
Mail сервер домена располагается по имени mail.mydomain.ru и имеет IP-адрес 194.87.0.51
WWW сервер по имени www.mydomain.ru имеет IP-адрес 194.87.0.51
“Корень домена” - имя mydomain.ru.** располагается за адресом 194.87.0.51

** Обратите внимание на точку в конце имени, если вы забыли что она означает - вернитесь назад

!!! Не забываем, что Serial - Серийный номер версии файла зоны; должен увеличиваться при КАЖДОМ изменении в файле зоны, по нему ваш вторичный (slave) DNS сервер обнаруживает, что надо обновить информацию (заново скачать копию файла зоны). Обычно пишется в виде <год><месяц><число><номер изменения>.

На первый взгяд все. Named мы настроили, файл зоны создали, но давайте позаботимся о собственном удобстве.

RNDC

Утилита позволяющая управлять демоном named. Проста в установке. Запустим команду

rndc-confgen

На экран будет выведен текст (который будет нужен для двух файлов):
# Start of rndc.conf

key "rndc-key" {

algorithm hmac-md5;

secret "328Sa3UFyO+MbLriage+Cw==";

};options {

default-key "rndc-key";

default-server 127.0.0.1;

default-port 953;

};

# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndc-key" {

# algorithm hmac-md5;

# secret "328Sa3UFyO+MbLriage+Cw==";

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { "rndc-key"; };

# };

# End of named.conf


То что между # Start of rndc.conf и # End of rndc.conf кладем в созданный файл rndc.conf (он располагается в той же директории, что и named.conf)

То что между # Use with the following in named.conf… и # End of named.conf дописываем в наш файл named.conf, но символ комментария “#” убираем, вот что в итоге дописываем в самый конец файла named.conf:
key "rndc-key" {

algorithm hmac-md5;

secret "328Sa3UFyO+MbLriage+Cw==";

};controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { "rndc-key"; };

};


Благодаря этому нам станут доступны команды (но только с этого сервера, т.к. прописан 127.0.0.1 в кач-ве разрешенного IP адреса, секция controls):
rndc

Usage: rndc [-c config] [-s server] [-p port]

[-k key-file ] [-y key] [-V] commandcommand is one of the following:

reload Reload configuration file and zones.

reload zone [class [view]]

Reload a single zone.

refresh zone [class [view]]

Schedule immediate maintenance for a zone.

retransfer zone [class [view]]

Retransfer a single zone without checking serial number.

freeze zone [class [view]]

Suspend updates to a dynamic zone.

thaw zone [class [view]]

Enable updates to a frozen dynamic zone and reload it.

reconfig Reload configuration file and new zones only.

stats Write server statistics to the statistics file.

querylog Toggle query logging.

dumpdb [-all|-cache|-zones] [view ...]

Dump cache(s) to the dump file (named_dump.db).

stop Save pending updates to master files and stop the server.

stop -p Save pending updates to master files and stop the server

reporting process id.

halt Stop the server without saving pending updates.

halt -p Stop the server without saving pending updates reporting

process id.

trace Increment debugging level by one.

trace level Change the debugging level.

notrace Set debugging level to 0.

flush Flushes all of the server's caches.

flush [view] Flushes the server's cache for a view.

flushname name [view]

Flush the given name from the server's cache(s)

status Display status of the server.

recursing Dump the queries that are currently recursing (named.recursing)

*restart Restart the server.

* == not yet implemented

Version: 9.3.4-P1


Т.е. перезапуск named можно произвести легким

rndc reload

или получить статистику

rndc status

number of zones: 3
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/30000
tcp clients: 0/100
server is up and running

Дамп кеша в файл (debug проблем резолва какого либо домена в интернете)

rndc dumpdb

Полный сброс кеша вашего DNS сервера:

rndc flush
Подготовка к запуску

Открываем файл /etc/rc.conf (для автозапуска после ребута) и дописываем в него:

named_enable=”YES”
named_program=”/usr/sbin/named”
named_flags=”-u bind -c /etc/namedb/named.conf”

Откроем файл /etc/syslog.conf (логи, куда же без них) и допишем в него:

!named
*.* /var/log/named.log

Создадим пустой файл /var/log/named.log

touch /var/log/named.log

выставим на этот файл права

chown bind:bind /var/log/named.log

Перезапустим процесс syslogd для того чтобы он перечитал конфиг

/etc/rc.d/syslogd restart
Запускаемся

Выполняем команду
/usr/sbin/named -t /var/named -u bind -c /etc/namedb/named.conf

смотрим, что у нас в логах

tail -F /var/log/named.log

Если мы видим сообщение:

loading configuration from ‘/etc/namedb/named.conf’
zone mydomain.ru/IN: loaded serial 2008071001
zone mydomain.ru/IN: sending notifies (serial 2008071001)

То значит вы нигде не ошиблись и named успешно запущен и зона mydomain.ru загружена.

Если вы видите сообщение:

config: none:0: open: /etc/namedb/named.conf: permission denied
general: reloading configuration failed: permission denied

Это означает что named (из-за отсутствия прав) не может прочесть конфиг. Исправим это:

cd /var
chown -R bind:bind named

тем самым изменили права на папку named установив владельца (owner) bind, группу (group) bind

Проверить наличие владельца с именем bind можно

команда
результат

Проверяем наличие в системе пользователя bind:

id -P bind
bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin

Проверяем наличе в системе группы bind:

cat /etc/group | grep bind
bind:*:53:

Или узнаем и то и то одной командой:

id bind
uid=53(bind) gid=53(bind) groups=53(bind)

Точно убедиться что named запущен:

ps -ax | grep named
/usr/sbin/named -t /var/named -u bind -c /etc/namedb/named.conf

sockstat | grep :53
bind named 67664 20 udp4 194.87.0.50:53 *:*
bind named 67664 21 tcp4 194.87.0.50:53 *:*
bind named 67664 22 udp4 127.0.0.1:53 *:*
bind named 67664 23 tcp4 127.0.0.1:53 *:*

Проверить наличие резолва можно командой:

nslookup mydomain.ru
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: mydomain.ru
Address: 194.87.0.51

Если IP-адрес выдается, то вы все сделали правильно.

Командой nslookup можно проверять любые домены, эта команда есть даже в Windows.

Прочтите man nslookup

Named не стартует и в логах тишина…. Что делать ?

Воспользоваться debug режимом. Для этого нужно запустить named с ключами -g -d9
/usr/sbin/named -t /var/named -u bind -c /etc/namedb/named.conf -g -d9

Иерархия DNS:

Практически повсеместно корневой домен (root) обозначают символом “.”, на самом деле точка - разделитель компонентов доменного имени, а т. к. у корневого домена нет обозначения, то полное доменное имя кончается точкой. Тем не менее, это обозначение достаточно прочно закрепилось в литературе в качестве обозначения корневого домена. Далее по иерархии идут домены верхнего уровня (TLD, Top Level Domain), за ними домены второго уровня, далее третьего и т. д., друг от друга они отделяются точками. Общая структура представлена на рисунках:

рисунок

рисунок

рисунок

На мой взгляд это очень подробная и отличная статья по настройке BIND.

Автор: Николаев Дмитрий.

Оригинал тут