Linux network инструкция администратора

         

Адреса Email Для электронной почты


Способ интерпретации машинного имени зависит от сети, к которой Вы подключены.



Альтернативы (Alternates)


Иногда желательно иметь несколько описаний для входа в одну систему, например, если система может быть доступна на различных модемных линиях. С Taylor UUCP Вы можете делать это, определив так называемую альтернативу (alternate).


Альтернативы (Alternates)

Иногда желательно иметь несколько описаний для входа в одну систему, например, если система может быть доступна на различных модемных линиях. С Taylor UUCP Вы можете делать это, определив так называемую альтернативу (alternate).

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

Чтобы использовать два номера телефона для pablo , Вы должны изменить файл sys следующим образом:

system pablo phone 123-456 .. entries as above ... alternate phone 123-455

При вызове pablo,

uucico теперь сначала наберет 123-456 и, если ничего не получается, попробует альтернативу. Альтернативный вход сохраняет все установки из основного входа системы и изменяет только номер телефона.



Анонимный UUCP


Если Вы хотите обеспечивать анонимный UUCP-доступ к системе, Вы сначала должны саздать специальное имя для него (см. выше). Общей практикой является дать ему имя входа в систему и пароль uucp.


Анонимный UUCP

Если Вы хотите обеспечивать анонимный UUCP-доступ к системе, Вы сначала должны саздать специальное имя для него (см. выше). Общей практикой является дать ему имя входа в систему и пароль uucp.

Кроме того, Вы должны установить несколько опций защиты для неизвестных систем. Например, Вы можете запретить им выполнение любых команд на Вашей системе. Однако, Вы не можете задать эти параметры в файле sys, потому что команда требует имени system, которое Вы не знаете. Taylor UUCP решает эту проблему через команду unknown. Команда unknown может использоваться в файле config, чтобы определить любую команду, которая может обычно появляться в записи системы:



unknown remote-receive /incoming unknown remote-send /pub unknown max-remote-debug none unknown command-path /usr/lib/uucp/anon-bin unknown commands rmail

Это ограничит неизвестные системы скачиванием файлов из подкаталогов pub и закачиванием файлов в каталог incoming ниже

/var/spool/uucppublic. Следующая строка говорит

uucico игнорировать любые запросы из удаленной системы, чтобы включить отладку локально. Последние две строки разрешают неизвестным системам выполнять rmail, но путь команды разрешает uucico искать команду rmail в частном каталоге, с именем anon-bin. Это позволяет Вам обеспечить некоторый специальный rmail, который, например, может передавать всю почту суперпользователю для исследования. Это разрешает анонимным пользователям писать администратору системы, но в то же время предотвращает отправление любой почты в другие места.

Чтобы включить анонимный UUCP, Вы должны определить по крайней мере один параметр unknown в файле config. Иначе uucico

отклонит неизвестные системы.



Appendix


Linux Network Administrators Guide Назад Вперед

Автоопределение Ethernet


Многие из драйверов Linux Ethernet достаточно интеллектуальны, чтобы знать, как искать расположение Вашей платы Ethernet. Это избавляет от необходимости сообщать такие данные ядру вручную. Ethernet HOWTO перечисляет, использует ли специфический драйвер автопоиск, и в каком порядке он ищет адрес ввода-вывода платы.


Автоопределение Ethernet

Многие из драйверов Linux Ethernet достаточно интеллектуальны, чтобы знать, как искать расположение Вашей платы Ethernet. Это избавляет от необходимости сообщать такие данные ядру вручную. Ethernet HOWTO перечисляет, использует ли специфический драйвер автопоиск, и в каком порядке он ищет адрес ввода-вывода платы.

Имеются три ограничения на автопоиск. Во-первых, это не может распознавать все платы правильно. Это особенно верно для некоторых дешевых аналогов популярных плат. Во-вторых, ядро не будет искать больше, чем одну плату, если оно определенно не проинструктировано об этом. Это было сознательным решением проекта, поскольку считается что Вы захотите иметь контроль над тем, какая плата какому интерфейсу назначена. Самый лучший способ делать это надежно: вручную конфигурировать платы Ethernet. В-третьих, драйвер избегает некоторых адресов, чтобы не конфликтовать с другим оборудованием. Так что еще не факт, что адрес платы вообще будет проверен.

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

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

Если Вы используете lilo для загрузки, параметры можно передать, указав их через аргумент append в файле lilo.conf. Например, можно передать ядру следующие параметры, чтобы проинструктировать его о плате Ethernet:

ether=irq, base_addr, [param1,][param2,] name

<




/p>

Первые четыре параметра задают числа, последний задает имя устройства. Параметры irq, base_addr и name обязательны, но два param опциональны. Числовые значения могут быть установлены в ноль, в этом случае ядро будет их искать, исходя из имеющейся информации.

Первый параметр задает IRQ. По умолчанию, ядро попробует его найти само. Например, драйвер 3c503 имеет специальное свойство, которое выбирает свободный IRQ из 5, 9, 3, 4 и настраивает плату, чтобы использовать эту линию. Параметр base_addr задает адрес ввода-вывода карты, значение 0 сообщает, чтобы ядро исследовало возможные адреса карты.

Различные драйверы используют следующие два параметра по разному. Для карт с разделением памяти (shared-memory cards), подобных WD80x3, они определяют первый и последний адреса разделяемой памяти. Другие платы обычно используют param1, чтобы установить уровень выдачи отладочной информации. Значения от 1 до 7 задают повышенные уровни отладки, 8 выключает ее, 0 выдает нормальное число сообщений. Драйвер 3c503 использует param2, чтобы выбрать между своим трансивером (по умолчанию) и внешним (значение 1). Аргументы param не должны быть включены вообще, если нет ничего особо нуждающегося в настройке.

Первый нечисловой параметр интерпретируется ядром как имя устройства. Вы должны определить имя устройства для каждой платы Ethernet.

Если у Вас две платы Ethernet cards, можно поручить определение первой ядру, а самому настроить вторую через lilo. Можно и вручную конфигурировать обе платы. Если Вы решите поручить ядру поиск первой платы, надо выяснить, какую плату считаете первой Вы, а какую ядро. Ваши мнения совпадут не всегда. Решить проблему позволяет опция lilo reserve, которая однозначно запретит ядру поиск в адресном пространстве первой карты. Например, чтобы Linux нашла вторую карту Ethernet на адресе 0x300 с именем eth1

задайте параметры ядра:

reserve=0x300,32 ether=0,0x300,eth1

Опция reserve запрещает какому-либо драйверу обращаться в указанное адресное пространство. Вы можете также использовать ядерные параметры, чтобы отменить автопоиск для eth0 :



reserve=0x340,32 ether=0,0x340,eth0

Автопоиск можно и вовсе запретить (допустим, Вы временно сняли одну из плат Ethernet). Чтобы запретить автопоиск задайте аргумент base_addr как –1:

ether=0,-1,eth0

Для передачи этих параметров ядру при загрузке Вы их вводите в ответ на приглашение lilo "boot:". Чтобы lilo выдал запрос "boot:", надо при загрузке держать нажатой одну из клавиш Control, Alt или Shift. Если в ответ на приглашение нажать Tab, будет выведен список ядер, которые можно загрузить. Для загрузки ядра с параметрами введите его имя, пробел и все нужные параметры. Затем нажмите клавишу Enter, и lilo загрузит заданное ядро с заданными параметрами.

Чтобы параметры воспринимались при каждой перезагрузке автоматически, внесите их в /etc/lilo.conf, используя ключевое слово append=. Например:

boot=/dev/hda root=/dev/hda2 install=/boot/boot.b map=/boot/map vga=normal delay=20 append="ether=10,300,eth0"

image=/boot/vmlinuz-2.2.14 label=2.2.14 read-only

После правки lilo.conf, выполните команду lilo для активизации изменений.


Авторизация NNTP Демон nntpd предоставляет


Процедура авторизации выполнена посредством новой команды NNTP AUTHINFO. При использовании этой команды, пользователь передает username (имя пользователя) и его пароль на NNTP-сервер. nntpd проверяет их по файлу

/etc/passwd. Проверяется также принадлежность пользователя к группе nntp.

Текущая реализация NNTP-авторизации только экспериментальная и не была выполнена очень универсальной. Результат этого в том, что авторизация работает только с базами данных паролей с простым стилем; теневые пароли не распознаются. Если Вы компилируете пакет из исходных текстов и имеете установленный пакет PAM, проверка пароля довольно проста, чтобы изменить ее.



База данных DNS


Мы видели, что DNS имеет дело не только с IP-адресами хостов, но также обменивается информацией относительно серверов имен. В базе данных DNS фактически имеется целая куча различных типов записей.

База данных DNS

Мы видели, что DNS имеет дело не только с IP-адресами хостов, но также обменивается информацией относительно серверов имен. В базе данных DNS фактически имеется целая куча различных типов записей.

Единица информации в базе данных DNS названа записью ресурса (resource record) или RR. Каждая запись имеет свой тип, описывающий тип данных, которые в ней записаны, и определяющий тип сети, к которой она применяется. Последний используется при определении схемы адресации, вроде IP-адресов (IN класс), или адресов в Hesiod-сетях (используемые в MIT). Основной записью ресурсов является запись, которая связывает полное имя домена с IP-адресом.

Конечно, хост может иметь больше, чем одно имя. Например, сервер предоставляющий сервисы FTP и World Wide Web может иметь имена ftp.machine.org и www.machine.org. Однако, одно из этих имен должно быть определено как официальное или каноническое (canonical) имя хоста в то время, как остальные просто псевдонимы. Различие между ними в том, что каноническое имя хоста связано с А-записью в то время, как другие только с записью типа CNAME, которая указывает на каноническое имя хоста.

Я не буду приводить здесь все типы записей, а сделаю это позже, в другой главе, здесь же ограничусь кратким примером. Пример 6-4 показывает часть базы данных домена, которая загружена на сервере имен для зоны physics.groucho.edu.



Будьте бдительны: проверки последовательности обращения


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


Будьте бдительны: проверки последовательности обращения

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

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

Но проверки последовательности обращения делают для Вас еще больше: даже если некоторый очень умный человек обнаружит Ваш порядковый номер обращения также, как Ваш пароль, Вы заметите это. Когда нападавший вызывает Вашу передачу UUCP и захватывает почту, это увеличит порядковый номер обращения на один. Когда в следующий раз Вы вызываете Вашу передачу и пробуете регистрироваться, удаленный uucico откажется от Вас, потому что числа не соответствуют!

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

uucico поместит в регистрационный файл сообщение, говорящее что-нибудь вроде "Out of sequence call rejected". Если Ваша система не допущена, потому что порядковые номера находятся вне синхронизации, в регистрационном файле будет примерно следующее "Handshake failed (RBADSEQ)".




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

# enable call sequence checks sequence true

Еще Вы должны создать файл, содержащий порядковый номер. Taylor UUCP хранит порядковый номер в файле .Sequence в каталоге spool удаленной системы. Он должен

принадлежать uucp и иметь режим доступа 600 (то есть, чтение и запись разрешены только самому uucp). Самое лучшее инициализировать этот файл произвольным согласованным начальным значением. Иначе нападающий может подобрать номер, пробуя все значения меньше, скажем, 60. Простой пример создания файла:

# cd /var/spool/uucp/pablo

# echo 94316 > .Sequence

# chmod 600 .Sequence

# chown uucp.uucp .Sequence

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


C-News и NFS Простой способ распределять


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

C-News обрабатывает эту конфигурацию прозрачно для пользователя. Когда Вы регистрируете статью, Ваш пакет работы с новостями обычно вызывает inews, чтобы ввести статью в систему новостей. Эта команда выполняет ряд проверок статьи, заполняет ее заголовок и проверяет файл server в /etc/news. Если этот файл существует и содержит имя, отличное от имени локального компьютера, inews вызывается на удаленном компьютере через rsh. Так как скрипт inews

использует ряд исполняемых модулей и файлов поддержки из C-News, Вы должны иметь C-News на локальной машине или монтировать программное обеспечение новостей по сети.

Для того, чтобы rsh мог работать правильно, каждый пользователь, регистрирующий новости, должен иметь эквивалентное имя на сервере, то есть, иметь возможность зайти на сервер без запроса пароля.

Удостоверьтесь, что имя сервера в server

буквально соответствует выводу команды hostname на сервере. Иначе C-News зациклится навсегда при попытке доставить статью. NFS подробно обсуждется в главе 14.



Cables


Linux Network Administrators Guide

Что нужно знать UUCP


Работа программ Linux слегка напоминает работу разведки: никто не должен знать лишнего.

Прежде, чем Вы начинаете писать файлы конфигурации UUCP, Вы должны выяснить некоторую необходимую информацию. Сначала Вы должны выяснить, к какому последовательному порту присоединен модем. Обычно порты DOS COM1-COM4 отображаются на специальные файлы устройств с /dev/ttyS0 по /dev/ttyS3. Большинство дистрибутивов, например, Slackware, создают файл /dev/modem как ссылку на соответствующий файл устройства ttyS* и конфигурируют коммуникационные программы kermit, seyon, чтобы они использовали этот обобщенный файл. В этом случае Вы должны также использовать /dev/modem в Вашей конфигурации UUCP.


Что нужно знать UUCP

Работа программ Linux слегка напоминает работу разведки: никто не должен знать лишнего.

Прежде, чем Вы начинаете писать файлы конфигурации UUCP, Вы должны выяснить некоторую необходимую информацию. Сначала Вы должны выяснить, к какому последовательному порту присоединен модем. Обычно порты DOS COM1-COM4 отображаются на специальные файлы устройств с /dev/ttyS0 по /dev/ttyS3. Большинство дистрибутивов, например, Slackware, создают файл /dev/modem как ссылку на соответствующий файл устройства ttyS* и конфигурируют коммуникационные программы kermit, seyon, чтобы они использовали этот обобщенный файл. В этом случае Вы должны также использовать /dev/modem в Вашей конфигурации UUCP.

Причина этого в том, что все программы используют так называемые файлы блокировки (lock files), чтобы сообщить, когда последовательный порт используется. Имена этих файлов блокировки являются конкатенацией строки LCK.. и имени файла устройства, например, LCK..ttyS1. Если программы используют различные имена для одного устройства, они будут не в состоянии распознавать чужие файлы блокировки. Как следствие, они прервут чужие сеансы связи. Это не такое уж маловероятное событие, если Вы планируете, чтобы UUCP использовал crontab. Подробности настройки последовательных портов описаны в главе 4.

Затем Вы должны выяснить, с какой скоростью модем и Linux могут связываться, и установить максимальную эффективную скорость передачи. Эффективная скорость передачи может быть намного выше, чем физическая скорость модема. Например, много модемов посылают и получают данные на скорости 56 kbps. Использование протоколов сжатия (например, V.42bis) позволяет установить фактическую скорость передачи более, чем в 100 kbps.

Конечно, если Вы хотите, чтобы UUCP cделал что-нибудь, Вам нужен номер телефона системы для вызова. Также Вам нужен идентификатор для входа в систему и, возможно, пароль для удаленной машины.

Также надо знать порядок входа в систему. Следует ли нажать клавишу Enter перед появлением приглашения для входа? Что будет отображено: login: или user:? Это необходимо для создания сценария дружеской беседы (chat script), который описывает uucico как регистрироваться. Если у Вас возникают затруднения, попробуйте вызывать систему программой терминала kermit или minicom и записать точно, что Вы делаете.



Что такое firewall? Firewall это


Firewall выполняет фильтрацию сетевого трафика на уровне протоколов обмена пакетами. Он пропускает пакеты, удовлетворяющие определенным критериям из внешней сети во внутреннюю и наоборот. Критерии задаются правилами фильтрации, которые могут быть очень сложными. Фильтр пакетов также отбрасывает пакеты, которые не соответствуют заданным критериям. При этом на машину-отправитель может быть (а может и не быть, зависит от настройки) послано сообщение об ошибке.

Таким образом, firewall скрывает внутреннюю организацию сети от внешнего мира и повышает надежность ее работы. Сеть оказывается защищена от атак хакеров. К сожалению, полной защиты такой подход не гарантирует: всегда найдется умный хакер, который даже firewall обойдет. Но все же firewall резко осложняет жизнь хакерам.

Ядро Linux предоставляет встроенные функции IP firewall. Сетевой код ядра реализует IP filtering несколькими способами и предоставляет интерфейс для управлния правилами фильтрации. Кроме того, Linux firewall имеет еще две полезные функции, не связанные напрямую с фильтрацией пакетов. Они будут рассмотрены позже, пока я просто назову их. Это IP Accounting (глава 10) и IP masquerade (глава 11).

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



Что такое IP Filtering? IP filtering


Номера портов (для TCP/UPD)

Типы пакетов: SYN/ACK, data, ICMP Echo Request и т.д.

Откуда пришел пакет

Куда идет пакет

Важно понять, что IP-фильтрация является средством сетевого уровня. Это означает, что она не понимает ничего относительно прикладной программы, использующей сетевые подключения, а понимает только что-то непосредственно относительно подключений. Например, Вы можете отвергать доступ пользователей к Вашей внутренней сети через telnet-порт, но если Вы полагаетесь ТОЛЬКО на IP-фильтрацию, Вы не сможете запретить использование программы telnet с портом, с которого Вы позволяете передавать пакеты через Ваш firewall. Вы можете предотвращать эти проблемы, используя прокси-сервер для каждого сервиса, проходящего через firewall. Прокси-серверы понимают прикладную программу, под которую они были разработаны, и предотвращают злоупотребления типа использования программы telnet, чтобы обойти firewall через порт для World Wide Web. Если Ваш firewall поддерживает прокси для World Wide Web, telnet будет всегда соединяться только с ним, и проходить будут только HTTP-запросы. Есть много прокси-серверов, как коммерческих, так и свободных. Они хорошо рассмотрены в Firewall-HOWTO.

Набор правил IP-фильтрации задает много правил. Например, допустим, что Вы позволяете пользователям World Wide Web в сети Virtual Brewery network обращаться только к другим web-серверам в Internet. Настройте Ваш firewall на пропуск пакетов:

С исходными адресами сети Virtual Brewery network, любым сайтом назначения и портом назначения 80 (WWW)

С адресом назначения в сети Virtual Brewery network и портом назначения 80 (WWW) с любого исходного адреса.

Здесь использованы два правила фильтрации. Мы должны позволить нашим данным выходить, но также должны позволить возвращаться ответам на запросы. На деле Linux упрощает это и позволяет нам определять эти правила в одной команде.



Что такое почтовое сообщение?


Эта административно-управленческая информация относится к двум категориям: во-первых, любые данные, которые являются специфическими для транспортной среды, подобно адресам отправителя и получателя. Это называется конвертом или оболочкой. Эти данные могут быть преобразованы транспортным программным обеспечением при передаче сообщения.

Во-вторых, данные необходимые для обработки сообщения почты, которые не являются частью транспортного механизма, типа темы сообщения, списка всех получателей и даты. Во многих сетях стало стандартным добавлять эти данные к сообщению, формируя так называемый заголовок почты (mail header). Эта информация отделена от собственно письма (mail body) пустой строкой.

Большая часть программного обеспечения для транспортировки почты в мире Unix использует формат заголовка, определенный в RFC-822. Его первоначальная цель: определить стандарт для использования в ARPANET. Позже он был адаптирован к разным сетям, включая UUCP-сети.

RFC-822 задает только самые общие данные. Более современные стандарты были задуманы, чтобы справиться с возрастанием потребностей как, например, шифрование данных, поддержка наборов национальных символов и мультимедиа расширений почты (MIME), которые подробно описаны в RFC-1341 и других RFC.

Во всех этих стандартах заголовки состоят из отдельных строк, отделяемых символами перевода строки. Имя поля начинается с первого символа строки. Поля заголовка могут занимать несколько строк. В этом случае все строки, кроме первой, начинаются с символа табуляции. Имена и семантика полей очень отличаются. Поля могут располагаться в любом порядке.

Типичный заголовок выглядит примерно так:

Return-Path: Received: ursa.cus.cam.ac.uk (cusexim@ursa.cus.cam.ac.uk [131.111.8.6]) by al.animats.net (8.9.3/8.9.3/Debian 8.9.3-6) with ESMTP id WAA04654 for ; Sun, 30 Jan 2000 22:30:01 +1100 Received: from ph10 (helo=localhost) by ursa.cus.cam.ac.uk with local-smtp (Exim 3.13 #1) id 12EsYC-0001eF-00; Sun, 30 Jan 2000 11:29:52 +0000 Date: Sun, 30 Jan 2000 11:29:52 +0000 (GMT) From: Philip Hazel Reply-To: Philip Hazel To: Terry Dawson , Andy Oram Subject: Electronic mail chapter In-Reply-To: Message-ID:

<




/p>

Обычно, все необходимые поля заголовка генерируются Вашим mailer`ом (программой для работы с электронной почтой), например elm , pine, mush или mailx. Некоторые поля необязательны и могут быть добавлены пользователем. Например, elm позволяет редактировать часть заголовка сообщения. Ниже приведен список наиболее часто используемых полей с пояснением их значения:

From:

Содержит email-адрес отправителя и, возможно, его "реальное имя".

To:

email-адрес получателя. Может быть несколько адресов, они разделяются запятыми.

Cc:

Кому послать копии. Может быть несколько адресов, они разделяются запятыми.

Bcc:

Кому послать невидимые копии. Может быть несколько адресов, они разделяются запятыми. Разница между "Cc:" и "Bcc:" в том, что "Bcc:"-получатели не увидят имен и адресов других получателей, а "Cc:"-получатели их увидят.

Subject:

Тема сообщения в нескольких словах.

Date:

Дата посылки почты.

Reply-To:

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

Organization:

Организация, которая обладает машиной, с который послана почта. Это поле необязательно и не упоминается ни в одном RFC.

Message-ID:

Строка, сгенерированная транспортировщиком почты. Она уникальна для этого сообщения.

Received:

Каждый пункт, через который проходит почта (включая машины отправителя и получателя), вставляет такое поле в заголовок, указывая имя пункта, идентичность сообщения, время и дату получения сообщения, из какого пункта оно происходит, и какое транспортное программное обеспечение использовалось. Это сделано, чтобы Вы могли проследить путь сообщения. Так можно доказать, что какое-то письмо, которое приписывают Вам, было послано не с Вашей машины и является фальшивкой.

X-anything:

Почтовые программы не должны жаловаться на заголовки, которые начинаются с X-. Они используются, чтобы воплотить дополнительные возможности, которые еще не реализованы в RFC. Например, один из крупных серверов списков рассылки по Linux указывает имя списка в поле X-Mn-Key:.

Одно исключение в этой структуре: самая первая строка. Она начинается с ключевого слова From, которое сопровождается пробелом вместо двоеточия. Она содержит маршрут, время и дату, когда письмо было получено последней машиной, обрабатывавшей его, и необязательную часть, определяющую, от какой системы оно было получено.


Доставка новостей Статьи могут


Для каждой статьи команда relaynews проверяет, была ли статья уже замечена на локальной машине, для чего ищет id сообщения в файле хронологии (history). Копии статьи будут пропущены. Затем relaynews рассматривает строку заголовка Newsgroups:, чтобы выяснить, запрашивает ли локальная машина статьи из любой из этих групп. Если она это делает, и группа новостей перечислена в файле active, relaynews пробует сохранить статью в соответствующем каталоге в области хранения новостей. Если этот каталог не существует, он будет создан. Id сообщения статьи будет зарегистрирован в файле history. В противном случае

relaynews пропускает статью.

Если relaynews будет не в состоянии сохранить входящую статью, потому что группа, в которой она была зарегистрирована, не перечислена в вашем файле active, статья будет перемещаться в группу junk. relaynews также проверит старые или статьи без дат и уничтожит их. Входящие пакеты, которые терпят неудачу по любой другой причине, перемещаются в /var/spool/news/in.coming/bad , и регистрируется сообщение об ошибках.

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

C-News обычно используется, чтобы передавать новости между UUCP-машинами, хотя можно использовать его и в NNTP-среде. Чтобы доставить новости на удаленную UUCP-машину делается следующее: используется uux для вызова на удаленной машине команды rnews с последующей перекачкой статьи или набора статей на эту машину. Подробно UUCP рассматривается в главе 16.

Когда удаленный сайт поддерживает пакетирование, C-News не рассылает статьи поштучно, а добавляет имена их файлов в некий файл, обычно out.going/site/togo. Периодически из crontab вызывается программа пакетирования, которая записывает статьи в файл, сжимает их, если это задано, и отправляет rnews на удаленной машине.



Доставка писем на локальные адреса


Обычно локальный адрес задает только имя входа пользователя в систему, тогда сообщение будет доставлено в почтовый ящик пользователя, /var/spool/mail/

user-name. Другие случаи включают псевдонимы, имена списков рассылки и пересылку почты. В этих случаях локальный адрес расширяется до нового списка адресов, которые могут быть локальными или удаленными.

Доставка писем на локальные адреса

Обычно локальный адрес задает только имя входа пользователя в систему, тогда сообщение будет доставлено в почтовый ящик пользователя, /var/spool/mail/

user-name. Другие случаи включают псевдонимы, имена списков рассылки и пересылку почты. В этих случаях локальный адрес расширяется до нового списка адресов, которые могут быть локальными или удаленными.

Кроме этих "нормальных" адресов Exim может обрабатывать другие типы локальных адресатов сообщения, подобные командам канала и именам файла. При доставке в файл Exim добавит в него сообщение, создавая файл в случае необходимости. Файл и адресаты канала не являются адресами в обычном смысле, так что Вы не можете посылать почту, скажем, на /etc/passwd@vbrew.com и перезаписывать файл пароля; доставка в специфический файл имеет силу только, если она исходит из файлов псевдонима или из команды пересылки. Обратите внимание, что адрес /etc/passwd@vbrew.com синтаксически имеет силу, но если Exim получил такой адрес, он обычно будет искать пользователя, чье имя входа в систему /etc/passwd, что приведет к сбою и сообщению об ошибке.

В списке псевдонима или файле пересылки имя файла начинается со слэша (/?), если оно не является полным адресом почты. Например, /tmp/junk в файле пересылки или псевдонимов интерпретируется как имя файла, но /tmp/junk@vbrew.com будет воспринят как адрес email, хотя это вряд ли будет очень полезным. Однако имеющий силу адрес этого типа замечен при посылке почты через шлюзы X.400, потому что в X.400 адреса начинаются с наклонной черты вправо. В общем, маршрутизация почты всегда была сложной.

Командой канала (pipe command) может быть любая команда Unix, которой предшествует символ канала (|), если строка не является полным адресом email с указанием домена. Если Вы не изменили конфигурацию, Exim не использует оболочку, чтобы выполнить команду; вместо этого он разделяет ее на команду и параметры, сам и выполняет непосредственно. Сообщение будет подано команде на стандартном вводе.

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



Драйверы PPP и SLIP Point-to-Point


Для запуска PPP или SLIP не нужно никаких изменений оборудования: Вы можете использовать любой последовательный порт. Так как конфигурация последовательного порта не специфическая для работы с сетями TCP/IP, она рассмотрена в отдельной главе. Подробности есть в главе 4. PPP детально рассмотрен в главе 8, а SLIP в главе 7.



Другие полезные инструменты


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


Другие полезные инструменты

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

Программа hostcvt помогает Вам построить конфигурацию с нуля, преобразуя файл /etc/hosts в главные файлы для named. Она генерирует прямой (A) и обратный (PTR) коды отображения и заботится о псевдонимах. Конечно, она не сделает всю работу за Вас, поскольку Вам все еще нужно настраивать значения времени ожидания в записи SOA или добавить MX-записи. Утилита hostcvt входит в пакет BIND, но доступна и отдельно с нескольких Linux FTP-серверов.

После установки сервера имен Вы должны проверить его конфигурацию. Некоторые хорошие инструментальные средства делают эту работу проще. Во-первых, это dnswalk, основанный на Perl. Во-вторых, nslint. Они оба обходят базу данных DNS, ищут общие ошибки и проверяют, что информация является непротиворечивой. Два других полезных инструментальных средства, host и dig, являются универсальными средствами для запроса базы данных DNS. Вы можете использовать эти инструментальные средства, чтобы вручную осматривать и диагностировать записи базы данных DNS.

Скорей всего, все эти средства доступны в откомпилированном виде. Утилиты dnswalk и nslint доступны в исходниках с http://www.visi.com/~barr/dnswalk и ftp://ftp.ee.lbl.gov/nslint.tar.Z. Утилиты host и dig доступны в исходниках с ftp://ftp.nikhef.nl/pub/network и ftp://ftp.is.co.za/networking/ip/dns/dig.



Два формата почтовых адресов


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

Два формата почтовых адресов

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

Основная проблема: смшивание UUCP стиля bang-path и формата RFC-822. Эти два типа адресации соединить не так-то просто. Допустим, есть адрес domainA!user@domainB. Неизвестно, что важнее: знак @ или путь. Другими словами: мы должны послать сообщение на domainB, который отправляет его на domainA!user, или письмо надо послать domainA, который отошлет его user@domainB?

Адреса, в которых операторы адресации смешаны, называются гибридными (hybrid addresses). В только что приведенном примере считается, что знак @ важнее пути. Запись domainA!user@domainB означает послать сообщение сначала на domainB.

Имеется способ определить маршруты RFC822-совместимыми способами: обозначает адрес пользователя user в домене domainC, где domainC должен быть достигнут через domainA и domainB (именно в этом порядке!). Этот тип адресов часто называется адресом, направленным источником (source routed). Положиться на это поведение не очень хорошая идея, поскольку изменения в RFC, описывающие маршрутизацию почты, рекомендуют, чтобы маршрутизация источника в адресе почты игнорировалась, а взамен должна быть сделана попытка доставить письмо непосредственно удаленному адресату.

Когда имеется оператор адреса % (например, user%domainB@domainA), письмо будет сначала послано domainA, который превратит знак процента в знак @. Теперь адрес user@domainB, и почтовая программа передаст Ваше сообщение на domainB, который перешлет его пользователю user. Этот тип адреса иногда упоминается как "Ye Olde ARPAnet Kludge" и его использование не приветствуется. Однако, много средств транспортировки почты генерируют этот тип адреса.

Но лучше всего использовать адрес именно в виде абсолютного адреса RFC-822 user@host.domain, если это позволяет Ваша система.



Файл active Файл active расположен


newsgroup, конечно, имя группы. low и high

задают предельное число статей, доступных в настоящее время. Если ни одна не является доступной в настоящее время, low =high+1.

По крайней мере предполагается, что поле low это хранит. Но, из соображений эффективности, C-News не модифицирует это поле. Это не было бы большой потерей, если бы не имелось программ чтения новостей, которые зависят от этого поля. Например, trn проверяет это поле, чтобы видеть, может ли он очистить свою базу данных статей. Для обновления поля

low надо регулярно выполнять команду updatemin (или в более ранних версиях C-News скрипт upact).

perm представляет собой параметр, детализирующий доступ пользователей в зависимости от группы. Он принимает одно из следующих значений:

y

Пользователям разрешают отправлять статьи в эту группу.

n

Пользователям не разрешают отправлять статьи в эту группу. Однако группа может читаться.

x

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

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

m

Это обозначает модерируемую группу. Когда пользователь пробует отправлять статью в эту группу, интеллектуальный newsreader сообщит, какая она, и пошлет статью модератору. Адрес модератора берется из файла moderators в /var/lib/news .

=real-group

Это отмечает newsgroup как локальный псевдоним для другой группы, а именно real-group. Все статьи, зарегистрированные в newsgroup, будут переназначены в real-группу.

В C-News, Вы вообще не должны обращаться к этому файлу непосредственно. Группы могут быть добавлены или удалены, используя

addgroup и delgroup (см. ниже ). Когда группы добавляются или удаляются для всего Usenet, это обычно делается, посылая сообщение управления newgroup или rmgroup соответственно. Никогда не посылайте такое сообщение самостоятельно!

О том, как создавать newsgroup, читайте ежемесячник в news.announce.newusers.

Файл, близко связанный с active, active.times. Всякий раз, когда группа создается, C-News пишет в этот файл сообщение, содержащее имя созданной группы, дату ее создания, было ли это выполнено в соответствии c сообщением управления newgroup или локально, и кто сделал это. Это сделано для удобства программ чтения новостей, которые могут сообщать пользователю о любой недавно созданной группе. Это также используется командой NEWGROUPS протокола NNTP.



Файл exports Рассмотрим, как настроить


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

# exports file for vlager /home vale(rw) vstout(rw) vlight(rw) /usr/X11R6 vale(ro) vstout(ro) vlight(ro) /usr/TeX vale(ro) vstout(ro) vlight(ro) / vale(rw,no_root_squash) /home/ftp (ro)

Каждая строка определяет каталог и хост, которому можно монтировать его. Имя хоста обычно задает его полное доменное имя, но может содержать универсальные символы * и ?, которые действуют аналогично их действию в оболочке Bourne. Например, lab*.foo.com

соответствует lab01.foo.com также, как и laboratory.foo.com. Если имя хоста не задано, как с каталогом /home/ftp в примере выше, то любому хосту позволено монтировать этот каталог. Хост может быть также задан его IP-адресом в форме address/ netmask.

При проверке клиентского хоста по файлу exports, rpc.mountd будет искать имя клиента, используя вызов gethostbyaddr. С DNS этот вызов возвращает каноническое имя машины клиента, так что Вы должны удостовериться в том, не используются ли псевдонимы в exports. Без использования DNS, возвращенное имя будет первым подходящим именем, найденным в файле hosts, которое соответствует адресу клиента.

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

secure

Запрос должен прийти с одного из зарезервированных портов, то есть с порта, номер которого меньше 1024. Задан по умолчанию.

insecure

Задает действие, обратное действию параметра

secure.

ro

Монтировать каталог NFS только для чтения. Задан по умолчанию.

rw

Монтировать каталог NFS для чтения и записи.

root_squash

Все обращения по NFS выполнять от имени пользователя nobody (uid 65534) на сервере независимо от того, пользователь с каким uid послал запрос с клиента.

no_root_squash




Не отображать uid 0 на uid 65534. Задан по умолчанию.

link_relative

Преобразовывает абсолютные символьные связи (где имя объекта назначения начинается с наклонной черты вправо) в относительные связи, вводя необходимое число ../, чтобы добраться из каталога, содержащего связь, до корневого каталога на сервере. Этот параметр имеет смысл только тогда, когда монтируется целая файловая система хоста, иначе некоторые связи будут указывать в пустоту. Задан по умолчанию.

link_absolute

Оставляет все символьные связи такими, какими они и были (нормальное поведение для Sun NFS серверов).

map_identity

Клиентские uids и gids соответствуют серверным. Задан по умолчанию.

map_daemon

Клиент и сервер не разделяют пространство uid/gid.

rpc.nfsd построит карту отображений ID клиента и сервера, запрашивая на клиенте демон rpc.ugidd.

map_static

Этот параметр позволяет Вам определять имя файла, который содержит статическую карту uids и gids. Например,

map_static=/etc/nfs/vlight.map определит файл

/etc/nfs/vlight.map как карту uid/gid. Синтаксис файла карты описан на man-странице exports(5).

map_nis

Предписывает NIS-серверу выполнять работу по отображению uid и gid.

anonuid и anongid

Эти параметры позволяют Вам определять uid и gid анонимного пользователя. Это полезно, если Вы имеете том, экспортируемый для монтирования всеми желающими.

Все ошибки при обработке файла exports будут переданы syslogd daemon на уровне notice при запуске rpc.nfsd или rpc.mountd.

Заметьте, что имена хостов будут получены из IP-адресов клиентов обратным поиском, так что Вы должны иметь правильно сконфигурированный сервер имен. Если Вы используете BIND, то Вы должны включить контроль спуфинга в Вашем файле host.conf. Подробно это рассмотрено в главе 6.


имеет много новых свойств,


BIND Version 8 имеет много новых свойств, а с ними пришел и новый синтаксис файла конфигурации. Старый named.boot

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

named.conf с синтаксисом, аналогичным gated, похожий на C-синтаксис.

Файл host.conf в BIND 8

BIND Version 8 имеет много новых свойств, а с ними пришел и новый синтаксис файла конфигурации. Старый named.boot

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

named.conf с синтаксисом, аналогичным gated, похожий на C-синтаксис.

Новый синтаксис более сложен, но есть инструмент, который автоматизирует преобразование старого синтаксиса в новый. В пакете исходников BIND 8 есть perl-программа named-bootconf.pl , которая занимается этим преобразованием. Чтобы использовать этот инструмент, Вы должны иметь установленный интерпретатор

perl.

Вы должны использовать скрипт так:
Назад
Вперед
# cd /etc

# named-bootconf.pl named.conf

Скрипт изготовит named.conf, похожий на приведенный в примере 6-9.


Файл named.boot


Файл конфигурации BIND до Version 8 был очень прост. BIND Version 8 имеет совсем другую структуру файла настройки, чтобы использовать новые свойства. Имя файла настройки сменилось с /etc/named.boot на /etc/named.conf. Мы сосредоточимся на конфигурировании старой версии, потому что многие дистрибутивы ее еще используют, но рассмотрим и отличия. К тому же мы рассмотрим, как преобразовать старый файл named.conf в новый.


Файл named.boot

Файл конфигурации BIND до Version 8 был очень прост. BIND Version 8 имеет совсем другую структуру файла настройки, чтобы использовать новые свойства. Имя файла настройки сменилось с /etc/named.boot на /etc/named.conf. Мы сосредоточимся на конфигурировании старой версии, потому что многие дистрибутивы ее еще используют, но рассмотрим и отличия. К тому же мы рассмотрим, как преобразовать старый файл named.conf в новый.

Файл named.boot вообще маленький и содержит мало данных, но указывает на главные файлы, содержащие зональную информацию и хранит указатели на другие серверы имен. Комментарии в файле начинаются с символов # или ; и заканчиваются в конце строки. Прежде чем мы обсудим формат named.boot более подробно, рассмотрим типовой файл для vlager в примере 6-8.



Файлы базы данных DNS


Главные (Master) файлы, поставляемые с named, подобно named.hosts, всегда имеют домен, связанный с ними, называемый origin. Это имя домена, указанное с параметрами cache и primary. Внутри главного файла Вы можете определить домен и связанные с ним имена файлов. Имя, заданное в файле конфигурации, рассматривается абсолютно (absolute), если оно заканчивается одной точкой, иначе оно рассматривается относительно origin. Можно и прямо сослаться на origin знаком (@).


Файлы базы данных DNS

Главные (Master) файлы, поставляемые с named, подобно named.hosts, всегда имеют домен, связанный с ними, называемый origin. Это имя домена, указанное с параметрами cache и primary. Внутри главного файла Вы можете определить домен и связанные с ним имена файлов. Имя, заданное в файле конфигурации, рассматривается абсолютно (absolute), если оно заканчивается одной точкой, иначе оно рассматривается относительно origin. Можно и прямо сослаться на origin знаком (@).

Данные, содержащиеся в главном файле, разделены на записи ресурсов (resource records, RRs). RRs самые маленькие модули информации, доступные через DNS. Каждая запись ресурса имеет тип. Например, A-записи отображают имя хоста на IP-адрес, а CNAME-записи связывают псевдоним для хоста с его официальным именем. Пример 6-11 показывает главный файл named.hosts для Virtual Brewery.

Записи ресурсов в главных файлах совместно используют общий формат:

[domain] [ttl] [class] type rdata

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

domain

Задает имя домена, к которому относится запись. Если никакое имя не задано, RR применяется к домену предыдущей RR.

ttl

Чтобы сервер имен обновлял информацию, RR ограничен по времени работы (ttl). Это поле определяет время в секундах, которое информация имеет силу после того, как была получена с сервера. Это десятичное число из восьми цифр.




Если значение ttl не дано, ему присваивается значение поля minimum предыдущей SOA-записи.

class

Класс адреса, например, IN для адресов IP или HS для объектов в Hesiod-классе. Для TCP/IP Вы должны определить IN.

Если никакое поле класса не задано, берется класс предшествующей RR.

type

Описывает тип RR. Наиболее часто встречаются типы A, SOA, PTR и NS. Следующие разделы описывают различные типы RR.

rdata

Хранит данные, связанные с RR. Формат этого поля зависит от типа RR. Дальше это будет описано для каждого RR отдельно.

Дальше приведен частичный список RR, которые нужно использовать в файлах DNS.

SOA

Описывает зону авторитета (SOA или "Start of Authority"). Эта запись сообщает о том, что записи после SOA RR содержат авторитетную информацию для домена. Каждый главный файл, включенный в инструкцию primary, должен содержать SOA-запись для этой зоны. Данные ресурса содержат следующие поля:

origin

Это каноническое имя хоста основного сервера для этого домена. Обычно задается как абсолютное имя.

contact

Это e-mail адрес человека, ответственного за поддержание домена, со знаком "@" замененным на точки. Например, если ответственный в Virtual Brewery janet, это поле содержит janet.vbrew.com.

serial

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

Серийный номер используется вторичными серверами, чтобы распознать, когда зональная информация была изменена. Чтобы оставаться на уровне современных требований, вторичные серверы запрашивают SOA-запись первичного сервера в определенные промежутки времени и сравнивают порядковый номер с кэшируемой SOA-записью. Если номер изменился, то вторичные серверы перенесут целую зону баз данных из основного сервера.

refresh

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

retry



Это число определяет интервалы, за которые вторичный сервер должен повторить соединение с основным сервером, если запрос или зональная регенерация терпит неудачу. Он не должен быть слишком маленьким, потому что даже временный отказ сервера или сетевая проблема могут потратить впустую все сетевые ресурсы. Один час или, возможно, полчаса оптимальное значение.

expire

Определяет время в секундах, после которого сервер должен отбросить все зональные данные, если невозможно было войти в контакт с основным сервером. Этот промежуток времени должен быть очень большим. Craig Hunt рекомендует 42 дня.

minimum

Задает по умолчанию значение ttl для исходных записей, которые точно не определяют его. Требует другого сервера, чтобы отбросить RR при проверки после определенного времени.

Ничего нельзя сделать со временем, после которого вторичный сервер попробует модифицировать зональную информацию. Значение minimum должно быть большим, особенно для LAN, где сетевая топология почти никогда не меняется. В случае, когда единственные RR могут часто изменяться, Вы можете приписывать им различные ttl.

A

Ассоциирует IP-адрес с именем. Содержит адрес в dotted quad notation. Для каждого хоста должна быть только одна запись. Hostname, используемый в этой А-записи, считается служебным или каноническим hostname. Все другие hostname расцениваются как псевдонимы и должны быть отображены на канонический (canonical) hostname, используя запись CNAME. Если каноническое имя нашего хоста vlager, его и надо вписать в A-запись с его IP-адресом. Если мы связываем с этим адресом другое имя, например news, надо использовать запись CNAME, которая свяжет его с альтернативным именем.

NS

Указывает на главный (primary) сервер подчиненной зоны. Содержит hostname сервера.

Вы встретите записи NS в двух ситуациях: Когда Вы делегируете авторитет зависимой зоне.

Внутри главной зональной базы данных зависимой зоны.

Наборы серверов в родительских и делегированных зонах должны соответствовать друг другу, иначе опознание имен работать не будет.



Запись NS определяет имена первичного и вторичного серверов для зоны. Эти имена должны быть разрешимы к используемому адресу. Иногда серверы не принадлежат к обслуживаемому домену, что порождает проблему: нельзя обратиться к серверу, пока не получен его адрес, но получить адрес нельзя, пока не обратимся к серверу (неоткуда). Можно конфигурировать специальные записи непосредственно на сервере имен родительской зоны. Они позволяют серверу из родительской области преобразовывать IP-адрес делегированного зонального сервера. Эти записи обычно названы приклеенными записями (glue records), поскольку они "склеивают" делегированную зону с родительской.

CNAME

Ассоциирует псевдоним хоста с его каноническим hostname. Каноническиий hostname указан в файле, который обеспечивает А-запись, а псевдонимы просто связаны с этим именем CNAME-записью, но не имеют собственных записей.

PTR

Этот тип записи используется, для того, чтобы соединить имена домена in-addr.arpa с именами хостов (hostnames). Это используется для обратного отображения IP-адресов к hostnames. Данное имя должно быть каноническим.

MX

Эта RR объявляет преобразователь почты (mail exchanger) для домена. Для чего надо иметь преобразователи почты, рассказано в главе 17 . Синтаксис MX-записи следующий:

[domain] [ttl] [class] MX preference host

Имя host объявляет преобразователь почты для домена domain. Каждый преобразователь почты имеет целое число preference , связанное с ним. Агент транспортировки почты, желающий доставить почту в домен, будет перебирать все хосты, не имеющие MX-записей в этом домене, пока все не пройдет успешно. Сначала будет проверяться тот хост, у которого самое низкое число, а затем все хосты по возрастанию числа.

HINFO

Эта запись предоставляет информацию относительно аппаратных средств системы и программного обеспечения. Синтаксис этой записи:

[domain] [ttl] [class] HINFO hardware software

Поле hardware идентифицирует аппаратные средства, используемые этим хостом. Имеются специальные соглашения, чтобы точно определить их. Список подходящих имен дан в "Assigned Numbers" (RFС 1340). Если область содержит пробелы, то ее содержимое надо заключить в двойные кавычки. Имена областей

software используются операционной системой. Подходящее имя может быть выбрано из "Assigned Numbers" RFC.

Запись HINFO для Intel Linux-машин может выглядеть примерно так:
tao 36500 IN HINFO IBM-PC LINUX2.2

А для Linux-машины на процессоре Motorola 68000 так:
cevad 36500 IN HINFO ATARI-104ST LINUX2.0 jedd 36500 IN HINFO AMIGA-3000 LINUX2.0


Файлы настройки Taylor


Теперь мы вернемся к файлам конфигурации. Taylor UUCP получает информацию из следующих файлов:

config

Это основной файл конфигурации. Вы можете определить Ваше имя UUCP именно в нем.


Файлы настройки Taylor

Теперь мы вернемся к файлам конфигурации. Taylor UUCP получает информацию из следующих файлов:

config

Это основной файл конфигурации. Вы можете определить Ваше имя UUCP именно в нем.

sys

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

port

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

dial

Описывает программы номера, используемые, чтобы установить телефонное соединение.

dialcode

Содержит расширения для символьных номеров (dialcodes).

call

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

passwd

Содержит имена входов в систему и пароли, используемые при регистрации. Этот файл используется только, когда uucico делает собственную проверку пароля.

Файлы конфигурации Taylor состоят из строк, содержащих пары "ключевое слово=значение". Знак hash (#) представляет собой комментарий, действующий до конца строки. Чтобы использовать знак # просто так, Вы можете ввести его с наклонной чертой влево \#.

Есть очень много опций, которые Вы можете изменять в этих файлах конфигурации. С их помощью вы сможете сконфигурировать модемную связь UUCP. Дополнительные разделы описывают изменения, необходимые, если Вы хотите использовать UUCP поверх TCP/IP или поверх последовательного соединения. Полное описание дается в Texinfo-документах, которые распространяются вместе с исходным текстом Taylor UUCP.

Если Вы думаете, что сконфигурировали вашу систему UUCP полностью, можете проверить конфигурацию, используя uuchk

(находится в /usr/lib/uucp).

uuchk читает ваши файлы конфигурации и печатает детализированный отчет о значениях, используемых для каждой системы.



Файлы псевдонимов


Exim способен обработать файлы псевдонимов, совместимые с файлами псевдонимов Berkeley's sendmail. Записи в файле псевдонима могут иметь следующую форму:

alias: recipients


Файлы псевдонимов

Exim способен обработать файлы псевдонимов, совместимые с файлами псевдонимов Berkeley's sendmail. Записи в файле псевдонима могут иметь следующую форму:

alias: recipients



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

Специальное свойство позволяет Exim обрабатывать списки адресатов, которые хранятся в отдельном файле псевдонимов: если Вы определяете :include: filename

как получателя, Exim читает этот файл и рассматривает его содержимое как список получателей. Обработка списков рассылки будет показана в этой главе ниже, в разделе списки рассылки .

Главный файл псевдонимов /etc/aliases. Если Вы сделаете этот файл доступным на запись для группы или прочих пользователей, Exim откажется использовать его и задержит локальные доставки. Вы можете управлять проверкой прав доступа, задавая modemask

в редиректоре system_aliases.

Пример файла aliases:

# vbrew.com /etc/aliases file hostmaster: janet postmaster: janet usenet: phil # The development mailing list. development: joe, sue, mark, biff, /var/mail/log/development owner-development: joe # Announcements of general interest are mailed to all # of the staff announce: :include: /etc/Exim/staff, /var/mail/log/announce owner-announce: root # gate the ppp mailing list to a local newsgroup ppp-list: "|/usr/local/bin/gateit local.lists.ppp"

Когда имеются имена файла и команды канала в файле псевдонима, как здесь, Exim должен знать, от имени какого пользователя ему выполнять доставку. Опция user (и, возможно, group) должна быть установлена в файле конфигурации Exim для редиректора, который обрабатывает псевдонимы, или на транспорте, который доставляет эти письма.

Если ошибка происходит при доставке на адрес, сгенерированный из файла псевдонимов, Exim пошлет сообщение отправителю, но этого может быть мало. Опция errors_to может использоваться для определения, что сообщения об ошибке должны быть посланы в другое место, например, на локальный адрес postmaster.



Форматы почтовых адресов


В оригинале среды UUCP распространенная форма была path!host!user (путь!машина назначения! пользователь), где path описывал последовательность машин для достижения машины адресата (host). Эта конструкция называется записью bang path, потому что метка восклицания называется "bang". Сегодня много uucp-подобных сетей приняли стандарт RFC-822 и понимают этот тип адреса.

Форматы почтовых адресов

В оригинале среды UUCP распространенная форма была path!host!user (путь!машина назначения! пользователь), где path описывал последовательность машин для достижения машины адресата (host). Эта конструкция называется записью bang path, потому что метка восклицания называется "bang". Сегодня много uucp-подобных сетей приняли стандарт RFC-822 и понимают этот тип адреса.

Другие сети имеют различные способы адресации. Decnet-сети, например, используют два двоеточия как разделитель адресов, производя адрес так: host::user. Стандарт X.400 использует совсем другую схему, описывая получателя (без связи с машиной!) набором пар свойств, например, страна и организация.

В сети FidoNet каждый пользователь идентифицирован кодом, подобным 2:320/204.9, состоящим из четырех чисел, обозначающих: зону (2 для Европы), сеть (320 для Парижа), узел и указатель (машину индивидуального пользователя). Fidonet-адреса могут быть отображены на RFC-822; вышеупомянутое написали бы как Thomas.Quinot@p9.f204.n320.z2.fidonet.org.



Linux network инструкция администратора


Subnetting не только организационное деление, но часто и естественное следствие границ аппаратных средств. Знания хостов о строении данной физической сети, типа Ethernet, являются очень ограниченными: единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateway (шлюз). Gateway, это хост, который связан с двумя или больше физическими сетями одновременно и конфигурирован так, чтобы перекачивать пакеты между ними.


Gateways

Subnetting не только организационное деление, но часто и естественное следствие границ аппаратных средств. Знания хостов о строении данной физической сети, типа Ethernet, являются очень ограниченными: единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateway (шлюз). Gateway, это хост, который связан с двумя или больше физическими сетями одновременно и конфигурирован так, чтобы перекачивать пакеты между ними.

IP достаточно легко распознать, находится ли хост в местной физической сети: различные физические сети должны принадлежать различным IP-сетям. Например, сетевой адрес 149.76.4.0 зарезервирован для хостов в локальной сети математиков. При посылке пакетов машине quark сетевое программное обеспечение на машине erdos немедленно увидит по IP-адресу 149.76.12.4, что хост места назначения находится в другой физической сети, и поэтому может быть достигнут только через gateway (допустим, машину sophus ).

Машина sophus непосредственно связана с двумя подсетями: отделом математики и университетской магистралью. Они доступы через различные интерфейсы (eth0 и fddi0 соответственно). Но какой IP-адрес мы ей назначаем? 149.76.1.0 или 149.76.4.0?

Ответ: оба. При работе с сервером в локальной сети математиков машина sophus использует IP-адрес 149.76.1.1, а при работе с хостом на магистрали она должна использовать 149.76.1.0 . Таким образом, gateway получает по одному IP-адресу на каждую сеть, к которой подключен. Эти адреса (вместе с netmask) привязаны к интерфейсу, через который обращаются подсети. Значит, интерфейсы и адреса sophus связаны так:

Интерфейс

Адрес

Маска подсети

Последняя запись определяет loopback интерфейс lo .

Вообще, вы можете не обращать внимание на различия между адресами хоста и интерфейса. Относитесь к адресу хоста, который находится только в одной сети, как к адресу того и другого, хотя строго говоря, это Ethernet-интерфейс имеет IP-адрес. Однако, это различие ощутимо только, когда вы работаете с gateway.



Введение в сети Локальное



Немного истории

Идея сетей также стара, как и вообще идея телекоммуникаций. Рассмотрим людей, живших в каменном веке, когда для обмена сообщениями между людьми использовались барабаны. Предположим пещерный человек А хочет пригласить пещерного человека Б поиграть, но тот живет слишком далеко и не может услышать барабан, в который бьет А. Каковы же могут быть действия А? Он может пешком добраться до Б, взять барабан побольше или попросить В, живущего на полпути между А и Б, передать сообщение. Позже это стали называть сетями.

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

Я опишу три типа сетей в этом руководстве. Мы с вами сосредоточимся на сетях TCP/IP, потому что это наиболее популярный набор протоколов в локальных (Local Area Networks, LAN) и глобальных сетях (Wide Area Networks, WAN), типа Internet. Мы будем также изучать сети UUCP и IPX. Протокол UUCP раньше обычно использовался для транспортировки новостей и сообщений почты по dialup телефонным подключениям. Это менее распространено сегодня, но все еще полезно в ряде ситуаций. Протокол используется обычно IPX в Novell NetWare, и я опишу как использовать его, чтобы подключить вашу Linux-машину к Novell-сети. Все это протоколы работы с сетями, которые используются, чтобы передавать данные между компьютерами. Мы обсудим, как они используются и их основные принципы.

Мы определяем сеть как совокупность компьютеров (хостов, от hosts), которые могут связаться друг с другом, часто полагаясь на услуги ряда выделенных компьютеров, передающих данные между участниками. Хостом может являться не обязательно полноценный компьютер, им вполне может быть X-терминал или интеллектуальный принтер. Маленькие скопления компьютеров также называют сайтами (sites).

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



На английском языке есть прекрасная


На английском языке есть прекрасная книга (трехтомник) о TCP/IP Internetworking with TCP/IP, автор Douglas R. Comer (издательство Prentice Hall). Более подробно сети a TCP/IP рассмотрены в книге TCP/IP Network Administration, автор Craig Hunt (издательство O'Reilly).

Настройка сетевого оборудования


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

Для того чтобы использовать Ethernet-карту, необходимы специальные функции, расположенные в ядре Linux, которые знают, как работать с этим устройством. Это так называемые драйверы устройств. Например, Linux имеет драйверы устройства для нескольких марок плат Ethernet, которые очень похожи по выполняемым функциям. Они известны как "Becker Series Drivers", и называются так по имени их автора, Donald Becker. Другой пример: драйвер D-link, который работает с адаптером пакетов D-link, присоединяемым к параллельному порту. Linux имет драйверы для разных интерфейсов сетевых карт: ISA, PCI, MCA, EISA, Parallel port, PCMCIA, не так давно появились и адаптеры на USB.

Но что мы подразумиваем, когда говорим, что драйвер управляет устройством? Давайте вернемся к плате Ethernet, которую мы уже упоминали. Драйвер должен быть способен работать с переферией этой платы: он должен посылать команды и данные плате, в то время как плата должна передавать полученные данные драйверу.

В PC-компьютерах эта связь устанавливается через область памяти ввода-вывода, которая является отображением регистров платы и т.п. Все команды и данные, которые ядро посылает плате, проходят через эти регистры. Память ввода-вывода описывается указанием начального адреса (base address). Типичные основные адреса для Ethernet-плат 0x280 или 0x300. Сетевые карты на интерфейсе PCI обычно получают адрес ввода-вывода автоматически.

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

(автопоиск), который означает, что ядро во время загрузки считывает несколько участков памяти и сравнивает считанные данные с теми, которые должны быть получены, если установлена плата Ethernet. Однако, существуют Ethernet-платы, которые ядро не может автоматически обнаружить. Это часто случается с дешевыми картами Ethernet.




Другой параметр, который Вы могли бы сообщить ядру, interrupt request channel (канал запроса прерывания). Компоненты аппаратных средств обычно прерывают ядро, когда они нуждаются во внимании, например, когда прибыли данные или произошли другие события. В PC прерывание может происходить на одном из каналов (0, 1, 3 и до 15). Номер прерывания, назначенный компоненту аппаратных средств называется interrupt request number или IRQ.
Как описано в главе 2, ядро обращается к устройствам через так называемый интерфейс. Интерфейсы предлагают абстрактный набор функций, которые являются стандартными для всех типов аппаратных средств, типа посылки или получения пакетов данных.
Интерфейсы идентифицируются посредством имен. Эти имена определены внутри ядра, это файлы устройств в каталоге /dev. Если ввести команду ls -las /dev/, Вы увидите много файлов. В колонке прав доступа Вы увидите, что первым символом прав доступа здесь является не такой символ, как для обычных имен файлов. Он показывает тип интерфейса. Символ b задает блочное (block) устройство. Символ c
задает символьное (character) устройство, которое обрабатывает данные посимвольно, а не блоками. В поле длины файла Вы увидите два числа, которые называются старшим и младшим номерами устройства.
Каждый драйвер имеет уникальный старший номер в ядре. Каждая копия драйвера (по одной на устройство) имеет свой младший номер. Интерфейсы tty с именами /dev/tty* являются символьными, и имеют первый символ в правах доступа c”, все они имеют общий старший номер 4, но младшие номера у каждого свои: /dev/tty1 имеет младший номер 1 и /dev/tty2 имеет 2.
Наиболее типичные имена перечислены в разделе
"Обзор сетевых устройств в Linux". Типичные имена для интерфейсов Ethernet: eth0, eth1 и т.д. Назначение интерфейсов для определенных устройств обычно зависит от способа, которым устройства сконфигурированы. Например, первая установленная Ethernet-плата станет eth0, следующая eth1 и так далее. Исключение из этого правила: интерфейсы SLIP, которые назначаются динамически, То есть: всякий раз, когда устанавливается SLIP-связь, последовательному порту назначается интерфейс.


При загрузке ядро показывает, какие интерфейсы установлены и устройства найдены. Вот образец типичного сообщения при загрузке:
eth0
149.76.4.1 255.255.255.0
fddi0
149.76.1.1 255.255.255.0
lo
127.0.0.1 255.0.0.0

. . This processor honors the WP bit even when in supervisor mode./ Good. Swansea University Computer Society NET3.035 for Linux 2.0 NET3: Unix domain sockets 0.13 for Linux NET3.035. Swansea University Computer Society TCP/IP for NET3.034 IP Protocols: IGMP,ICMP, UDP, TCP Swansea University Computer Society IPX 0.34 for NET3.035 IPX Portions Copyright (c) 1995 Caldera, Inc. Serial driver version 4.13 with no serial options enabled tty00 at 0x03f8 (irq = 4) is a 16550A tty01 at 0x02f8 (irq = 3) is a 16550A CSLIP: code copyright 1989 Regents of the University of California PPP: Version 2.2.0 (dynamic channel allocation) PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. PPP line discipline registered. eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 a0 24 0e e4 e0,/ IRQ 10. 3c509.c:1.12 6/4/97 becker@cesdis.gsfc.nasa.gov Linux Version 2.0.32 (root@perf) (gcc Version 2.7.2.1) #1 Tue Oct 21 15:30:44 EST 1997 . .
Этот пример показывает, что ядро построено с поддержкой сетевого протокола TCP/IP и включает драйверы для SLIP, CSLIP и PPP. Третья строка снизу говорит об обнаружении платы 3C509 Ethernet и установке ее интерфейса eth0. Если у Вас другой тип сетевой карты, будет выведена соответствующая строка, обычно с ее названием. Например, для адаптера D-Link используется имя dl0. А вот если сетевая карта есть, а сообщения о ней нет, тогда плохо дело. Ядро не нашло карту при загрузке. Эта ситуация будет рассмотрена позже.

Настройка сети TCP/IP


Большинство работ, охваченных этой главой, Вы должны сделать только один раз. Впоследствии, Вы будете изменять конфигурационные файлы только в случае добавления новой системы к сети, или когда Вы повторно полностью переконфигурируете систему. Некоторые из команд конфигурирования TCP/IP, однако, должны выполнятся каждый раз, когда загружается система. Это обычно делают скрипты /etc/rc*.

Обычно специфическая сетевая часть загрузки системы содержится в скрипте rc.net или rc.inet. Иногда Вы увидете два скрипта rc.inet1 и rc.inet2. В таких случаях вышеупомянутый скрипт инициализирует сетевую часть ядра в то время, как последние запускают основные сетевые приложения. Дальше я буду твердо придерживаться этой концепции. В новых дистрибутивах скрипты семейства rc структурированы иначе: они лежат в каталоге

/etc/init.d/ (или /etc/rc.d/init.d/).



TCP/IP Firewall Локальное


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

Самый безопасный способ избежать такого широко распространенного явления состоит в том, чтобы предотвратить получение несанкционированного сетевого доступа к машине. Именно этим занимается firewall.

Построение безопасного firewall является искусством. Это включает хорошее понимание технологии, но одинаково важно понимание философии проектов firewall. Я при всем желании не смогу изложить в этой книге все по этому вопросу: он слишком велик. Возможно, когда-нибудь я посвящу ему отдельную книгу. Я настоятельно рекомендую ознакомиться с дополнительной литературой по этому вопросу.

Увы, на русском языке такой литературы до обидного мало. Есть очень хорошие книги на английском и, возможно, они со временем выйдут и на русском. Назову основные:

Building Internet Firewalls

Авторы: D. Chapman и E. Zwicky (издательство O'Reilly). Это полная энциклопедия по созданию и использованию firewall для Unix, Linux и даже Windows NT. Рассмотрены также вопросы о том, как настроить службы Internet для работы через firewall.

Firewalls and Internet Security

Авторы: W. Cheswick и S. Bellovin (издательство Addison Wesley). Книга скорее о философии построения firewall, чем о конкретных программах, но в ней есть немало ценного по реализации этой философии.

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



IP Accounting Локальное


Имеются другие применения для сетевого учета, которые не имеют никакого отношения к долларам и счетам. Если Вы управляете сервером, который предлагает ряд различных типов сетевых услуг, для Вас иногда полезно знать точно, сколько данных генерируется каждым типом услуг. Эта информация могла бы помочь Вам в принятии решений, какие аппаратные средства покупать, или сколько серверов выполнить.

Ядро Linux обеспечивает средство, которое позволяет Вам собирать все типы полезной информации относительно сетевого трафика. Это средство названо IP accounting.



IP Masquerade и Network


Одной из частей этого сервиса является сетевая трансляция адресов (Network Address Translation, NAT). NAT описывает процесс изменения сетевых адресов, содержащихся в заголовках пакетов. Этот подход является идеальным для решения проблемы. Таким образом, ВСЯ сеть может реально работать с Internet через ОДИН IP-адрес!

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

Мы имеем маленькую сеть Ethernet на частных адресах, которые не могут использоваться в Internet. Сеть имеет Linux-маршрутизатор, обеспечивающий доступ к Internet. Одно из автоматизированных рабочих мест в сети (192.168.1.3) пожелало установить подключение к удаленному компьютеру 209.1.106.178 через порт 8888. Автоматизированное рабочее место направляет пакет маршрутизатору, который идентифицирует этот запрос подключения как требование услуг masquerade. Он принимает пакет, выделяет для него порт 1035, заменяет адрес и номер порта в пакете и передает пакет в сеть. Компьютер адресата полагает, что получил подключения из Linux-компьютера, который обеспечивает masquerade, и посылает ответ. Маршрутизатор после получения этого ответа находит связь в таблице masquerade и производит обратную замену адреса и порта. Локальный компьютер полагает, что он работает непосредственно с удаленным компьютером. Удаленный главный компьютер не знает ничего относительно локального компьютера вообще и полагает, что получил подключение с Linux-компьютера, обеспечивающего masquerade.

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



я не могу описать все


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

Сетевая информационная


Поэтому фирма Sun разработала Network Information System (NIS). NIS обеспечивает универсальные средства доступа к базе данных, которая может использоваться, например, чтобы распределять информацию, содержащуюся в файлах passwd и groups на все компьютеры в Вашей сети. Точно так же Вы можете использовать NIS, чтобы распределить информацию о hostname из файла /etc/hosts на все машины в сети.

NIS основан на RPC, включает сервер, клиентскую библиотеку и несколько административных инструментальных средств. Первоначально NIS был назван желтыми страницами или YP (Yellow Pages), это название все еще используется, чтобы обратиться к нему. К сожалению, это имя является маркой компании British Telecom, которая требовала, чтобы Sun отказалась от его использования. Тем не менее, YP остался префиксом в именах команд, относящихся к NIS таких, как ypserv и ypbind.

Сегодня NIS доступен фактически для всех Unix, и имеются свободные реализации. BSD Net-2 был основан на публичной версии, выпущенной Sun. Код клиентской библиотеки из этого релиза долго присутствовал в Linux libc, а административные программы были перенесены в Linux Swen ThЭmmler. Сервер NIS в публичной версии отсутствовал.

Peter Eriksson разработал новую версию под именем NYS. Она поддерживает как NIS, так и Sun NIS+. NYS не только обеспечивает набор инструментальных средств NIS и сервер, но также добавляет целый набор новых библиотечных функций, которые должны компилироваться в libc, если Вы желаете использовать этот пакет. Это включает новую схему конфигурации преобразования имен, которая заменяет текущую схему, использующую host.conf.

GNU libc, известная как libc6, в сообществе Linux, включает модифицированную версию традиционной поддержки NIS, разработанную Thorsten Kukuk. Она поддерживает все библиотечные функции NYS и также использует расширенную схему конфигурации NYS. Вам все еще нужны инструментальные средства и сервер, но использование GNU libc избавляет от проблем с библиотеками.

Эта глава в основном рассматривает поддержку NIS в GNU libc. Для двух других пакетов приведенные здесь инструкции тоже могут пригодиться. Подробнее о вопросе можно узнать в NIS-HOWTO, кроме того на английском языке есть книга Managing NFS and NIS (автор Hal Stern, издательство O'Reilly).



Сетевая файловая система


NFS предлагает ряд преимуществ:

Данные, к которым обращаются все пользователи, могут быть сохранены на центральном хосте, клиенты будут монтировать этот каталог при начальной загрузке. Например, Вы можете сохранить все логины пользователей на одном хосте, настроить все хосты Вашей сети на монтирование каталога /home с этого хоста. Если все это установлено в паре с NIS, то пользователи смогут войти в любую систему и работать на одном множестве файлов.

Данные, потребляющие большие количества дискового пространства, могут быть сохранены на единственном хосте. Например, все файлы и программы, относящиеся к LaTeX и METAFONT могут быть сохранены и поддерживаться в одном месте. Мало того, что удобно ими управлять, так еще и место экономится.

Административно-управленческая информация может быть сохранена на одном хосте. Нет нужды использовать rcp для того, чтобы установить один и тот же файл на 20 различных машинах.

Linux NFS в значительной степени работа Rick Sladkey, написавшего код NFS kernel и большие части NFS-сервера. Последний был создан из unfsd, NFS-сервер уровня пользователя, первоначально написанного Mark Shand, и hnfs Harris NFS-сервера, написанного Donald Becker.

Давайте теперь посмотрим, как NFS работает: клиент может запросить смонтировать каталог с удаленного хоста в локальный каталоге тем же способом, как он может установить физическое устройство. Однако, синтаксис, используемый для этого, несколько иной. Например, чтобы смонтировать каталог /home с хоста vlager в каталог /users на машине vale, администратор использовал бы следующую команду на vale:

# mount -t nfs vlager:/home /users

Команда mount попробует соединиться с rpc.mountd, daemon монтирования на vlager через RPC. Сервер проверит, разрешается ли vale смонтировать каталог, и если все нормально, вернет file handle. Этот handle будет использоваться во всех последовательных запросах к подкаталогам /users.

Когда кто-то обращается к файлу по NFS, kernel RPC-сайта вызовет rpc.nfsd (NFS daemon) на машине сервера. Это обращение берет handle файла, имя файла, к которому обращаются, идентификаторы группы и пользователя как параметры. Они используются в определении прав доступа к точно определенному файлу. Чтобы защититься от несанкционированного чтения или модифицирования файла, идентификаторы пользователя и группы должны быть одними и теми же на обоих хостах.




В большинстве реализаций Unix, функциональные возможности NFS клиента и сервера выполнены как демоны kernel-уровня, которые запускаются из пространства пользователя при начальной загрузке системы. Это NFS Daemon (rpc.nfsd) на хосте сервера и Block I/O Daemon
(biod) на клиентском хосте. Чтобы улучшить производительность, biod выполняет асинхронный ввод-вывод, используя упреждающее чтение и отложенную запись. К тому же, несколько демонов rpc.nfsd обычно запускаются совместно.
Реализация NFS в Linux немного отличается в клиентском коде: она объединена с файловой системой VFS на уровне ядра и не требует дополнительного управления. Обычно код сервера запускается полностью в пространстве пользователя, так что управление несколькими копиями затруднено. Текущая реализация rpc.nfsd предлагает экспериментальную ограниченную поддержку нескольких серверов. Olaf Kirch разработал NFS-сервер уровня ядра, который появился в ядрах Linux 2.2 и выше. Эффективность заметно выросла. Позже мы поговорим об этом отдельно.

IPX и файловая система


Linux поддерживает не только протоколы TCP/IP, но также и набор протоколов, используемых операционной системой Novell Corporation's NetWare. Эти протоколы дальние родственники TCP/IP, и хотя они делают то же самое, но работают совсем иначе, что делает их несовместимыми с TCP/IP.

Linux имеет свободное и коммерческое программное обеспечение, чтобы обеспечить поддержку интеграции с Novell.



E-Mail Локальное оглавление


Были изобретены различные стандарты обмена почтой. В RFC-822 описывается машинно-независимый способ обмена специальными символами в почтовых сообщениях. Много усилий было приложено для создания "мультимедийной почты", которая включает изображения и звук в сообщения почты.

Огромное количество программ транспортировки почты было написано для систем Un*x. Одна из наиболее известных, sendmail

университета Berkeley. Первоначальный автор, Eric Allman, теперь снова активно работает над sendmail. Подробно о Linux-версии пакета sendmail мы поговорим в главе 18.

Linux также использует сервер Exim (автор Philip Hazel, место создания University of Cambridge). О нем мы поговорим в главе 19.

Пакеты Exim и sendmail

поддерживают набор файлов конфигурации, которые должны быть настроены для Вашей системы. Кроме информации, которая требуется, чтобы почта вообще работала (например, имя машины), имеется много параметров, которые могут быть настроены. Основной файл конфигурации sendmail сначала очень трудно понять. Выглядит, как будто Ваша кошка ходила по клавиатуре с нажатой клавишей SHIFT. Файлы конфигурации Exim более структурированы и проще в понимании, чем у sendmail. Но Exim не обеспечивает прямую поддержку для UUCP и обрабатывает только доменные адреса. Сегодня это не такое уж страшное ограничение. Однако, для малого сайта работа, требуемая для установки любого из них, приблизительно одна.

В этой главе я опишу, что такое email, и с какими проблемами Вы, как администратор будете иметь дело. Глава 18 и глава 19 описывают установку и настройку sendmail и Exim. Приводимой здесь информации хватит, чтобы создать небольшой почтовый сервер, но помните, что можно провести много часов за настройкой поистине фантастического количества параметров.

К концу текущей главы я кратко опишу настройку elm, клиента почты очень распространенного на многих Unix-подобных системах, включая Linux.

Для получения более подробной информации относительно электронной почты в Linux, пожалуйста, обратитесь к Electronic Mail HOWTO (автор Vince Skahan), который регулярно отсылается в comp.os.linux.answers . Дистрибутивы elm, Exim

и sendmail также поставляются с хорошей документацией. Можно также почитать RFC-документы для знакомства с теорией вопроса.



Получение и запуск Exim


Основной файл конфигурации обычно назван

/etc/exim.conf или /etc/exim/config в большинстве дистрибутивов Linux, или /usr/lib/exim/config в старых версиях. Вы можете выяснить, где искать файл конфигурации командой:

$ exim -bP configure_file

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

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

Когда почта ходит внутри TCP/IP-сети, Exim часто выполняется в режиме daemon: при загрузке системы он вызывается из

/etc/init.d/exim и помещает себя в фоновый режим, где ждет входящие TCP-подключения на порте SMTP (обычно порт 25). Это полезно, когда Вы ожидаете большой трафик, потому что Exim не должен запускаться для каждого входящего подключения. Альтернативно, inetd мог бы контролировать порт SMTP и порождать Exim всякий раз, когда имеется подключение на этом порте. Эта конфигурация могла бы быть полезна, когда Вы ограничены в памяти и имеете небольшой трафик почты.

Exim имеет сложный набор параметров командной строки, многие из которых соответствуют таким же параметрам sendmail. Вместо поиска нужных параметров можно выполнять многие общие действия, вызывая соответствующие команды, например, rmail или rsmtp. Они являются символическими связями с Exim. Когда Вы выполняете одну из команд, Exim проверяет имя, которое Вы используете, чтобы вызвать его, и устанавливает соответствующие параметры самостоятельно.

Имеются две связи с Exim, которые Вы должны иметь при любых обстоятельствах: /usr/bin/rmail и

/usr/sbin/sendmail. Когда Вы составляете и посылаете сообщение почты пользовательским агентом, подобным elm, оно направляется по каналу к sendmail или rmail для доставки. Именно поэтому /usr/sbin/sendmail и /usr/bin/rmail должны указывать на Exim. Список получателей сообщения будет передан Exim в командной строке. То же самое случается с почтой, приходящей через UUCP. Вы можете устанавливать требуемые имена пути, чтобы указать на Exim, печатая следующее в ответ на приглашение оболочки:

$ ln -s /usr/sbin/exim /usr/bin/rmail

$ ln -s /usr/sbin/exim /usr/sbin/sendmail

Если Вы хотите детально изучить настройку Exim, Вы должны ознакомиться с полной спецификацией Exim. Если она не входит в Ваш дистрибутив Linux, ее можно получить на сайте Exim по адресу

http://www.exim.org.



C-News Локальное оглавление


C-News хранит файлы настроек в /etc/news, большинство исполняемых модулей лежит в иерархии

/usr/lib/news. Статьи хранятся в иерархии

/var/spool/news. Все файлы в этих каталогах должны принадлежать пользователю news или группе news. Большинство проблем возникает из-за того, что C-News не имеет прав доступа к своим файлам. Прежде чем что-то править в них, используйте команду su, чтобы стать пользователем news. Исключением является программа setnewsids, которая используется для установки реального user ID для программ работы с новостями. Она должна принадлежать пользователю root и иметь бит setuid.

В этой главе я подробно опишу все файлы конфигурации C-News и покажу, что именно нужно делать для поддержания пакета в рабочем состоянии.



Internet News Локальное


Сервер INN включает ряд компонентов, каждый с их собственными файлами конфигурации, которые мы обсудим в свое время. Конфигурация INN довольно сложна, но я рассмотрю ее детально.



Настройка программ работы


Один из наиболее эффективных newsreaders это:

$ find /var/spool/news -name '[0-9]*' -exec cat {} \;|more

Это способ, которым Unix читает новости.

Большая часть newsreaders, однако, является намного более сложной. Они обычно предлагают полноэкранный интерфейс с отдельными уровнями для отображения всех групп, на которые пользователь подписался, для отображения краткого обзора всех статей в одной группе и для индивидуальных статей.

В уровне newsgroup большинство newsreaders отображает список статей, показывая их темы и авторов. В больших группах невозможно для пользователя уследить за связями всех статей друг с другом, хотя возможно идентифицировать ответы на более ранние статьи.

Тема ответа обычно повторяет тему исходной статьи, начинаясь с Re:. Дополнительно в поле References: заголовка включается message ID статьи, на которую текущая статья является ответом. Сортировка статей по теме и связям создает деревья статей, именуемые потоками (threads). Одна из задач при написании newsreader, создание эффективной схемы построения потоков (threading), потому что время, требуемое для этого, является пропорциональным квадрату числа статей.

Здесь мы не будем детализировать то, как интерфейсы пользователя сформированы. Все newsreaders, в настоящее время доступные для Linux, имеют хорошую функцию справки, так что Вы должны исследовать их сами.

В следующих разделах мы будем иметь дело только с административными задачами. Большинство их касается создания баз данных и учета.



Глобальные опции elm


В глобальном файле elm.rc, Вы должны установить опции, которые относятся к имени Вашей машины. Например, в Virtual Brewery у пользователя vlager файл содержал бы следующее:

# # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com

Глобальные опции elm

В глобальном файле elm.rc, Вы должны установить опции, которые относятся к имени Вашей машины. Например, в Virtual Brewery у пользователя vlager файл содержал бы следующее:

# # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com



Этот набор опций ориентирует elm относительно имени локальной машины. Хотя эта информация редко используется, Вы должны установить эти опции. Заметьте, что эти опции не будут работать в частном файле elmrc.



ICMP-расширения: использование с опциями -m icmp -p icmp


- -icmp-type [!] typename

Указывает подходящие этому правилу сообщения ICMP. Типы сообщений можно задать номерами или именами. Допустимые имена: echo-request, echo-reply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable и port-unreachable.


ICMP-расширения: использование с опциями -m icmp -p icmp

- -icmp-type [!] typename

Указывает подходящие этому правилу сообщения ICMP. Типы сообщений можно задать номерами или именами. Допустимые имена: echo-request, echo-reply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable и port-unreachable.



Имена переменных


dip понимает только предопределенное множество переменных. Имя переменной всегда начинается с символа доллара и должно быть написано в нижнем регистре.


Имена переменных

dip понимает только предопределенное множество переменных. Имя переменной всегда начинается с символа доллара и должно быть написано в нижнем регистре.

Переменные $local и $locip хранят имя и IP-адрес локальной машины. При сохранении в $local канонического имени, dip автоматически преобразует его в IP-адрес и запишет результат в переменную $locip. То же самое, но в обратном порядке произойдет при записи в $locip : dip получит имя для этого адреса и запишет его в переменную $local.

Переменные $remote и $rmtip делают то же самое для удаленной машины. $mtu хранит значение MTU для связи.

Эти пять переменных единственые, которые могут быть заданы непосредственно, используя команду get. Другие переменные могут быть установлены только через соответствующие команды, но можно использовать и операторы print ; это $modem, $port и $speed .

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



Имена сайтов


Как и при работе с сетями TCP/IP, Ваш компьютер должен иметь имя для UUCP-сетей. Пока Вы просто хотите использовать UUCP для передачи файлов, это имя не должно удовлетворять никаким стандартам. Единственое ограничение в том, что имя не должно быть больше, чем 7 символов, чтобы не путать машину с файловыми системами, которые накладывают ограничения на имя файла.


Имена сайтов

Как и при работе с сетями TCP/IP, Ваш компьютер должен иметь имя для UUCP-сетей. Пока Вы просто хотите использовать UUCP для передачи файлов, это имя не должно удовлетворять никаким стандартам. Единственое ограничение в том, что имя не должно быть больше, чем 7 символов, чтобы не путать машину с файловыми системами, которые накладывают ограничения на имя файла.

Однако, если Вы используете UUCP для почты или новостей, Вы должны подумать о наличии имени, зарегистрированного в UUCP Mapping project. UUCP Mapping project описан в главе 17. Даже если Вы делите домен с кем-то, Вы можете получить официальное имя UUCP для своего участка сети.

Часто люди выбирают свое UUCP имя так, чтобы соответствовать первому компоненту имени домена. Предположим, что адрес Вашего домена swim.twobirds.com, тогда имя главной машины UUCP было бы swim. Обычно именно так и бывает. Конечно, Вы можете также использовать любое UUCP имя.

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

По умолчанию, набор программ UUCP использует hostname как имя UUCP. Это имя обычно устанавливается в скрипте rc и хранится в /etc/hostname. Если ваше имя UUCP отлично от того, что Вы устанавливаете в качестве имени своей машины, Вы должны использовать опцию hostname в файле config, чтобы сообщить uucico о Вашем имени UUCP. Это будет рассмотрено чуть позже.



Имя системы


Команда system задает имя удаленной системы. Вы должны определить правильное имя удаленной системы, не псевдоним, потому что uucico сравнит это значение с ответом системы.


Имя системы

Команда system задает имя удаленной системы. Вы должны определить правильное имя удаленной системы, не псевдоним, потому что uucico сравнит это значение с ответом системы.

Каждое имя системы может появляться только один раз. Если Вы хотите использовать несколько наборов конфигураций для той же самой системы (различные номера телефонов, которые uucico должен пробовать по очереди), Вы можете определять альтернативы (alternates). Альтернативы описаны ниже.










Предупреждение