Формирование sendmail.cf
Чтобы сформировать файл sendmail.cf, настроенный для вашего пункта, Вы должны сщздать файл sendmail.m4, и обработать его с m4. В /usr/local/lib/mail/CF, Вы найдете типовой файл называемый sample.m4. Копируйте его в yourhostname.m4, и редактируйте, чтобы отразить ситуацию вашего пункта. В текущем разделе, я буду давать короткий краткий обзор макркоманд, которые Вы должны изменить. Для полного описания того, что они делают, пожалуйста, обратитесь к более раннему обсуждению sendmail.m4.
LOCAL MAILER DEF Определяет файл, который определяет mailer для локального получения почты. См. раздел " Определение Локального Mailer'а " выше.
PSEUDONYMS Определяет все имена, вашего локального host.
DEFAULT HOST Помещается в ваше полностью квалифицированное имя области. Это имя появится как ваш hostname во всей выходящей почте.
UUCPNAME Помещается в ваше неквалифицированное hostnmae.
RELAY HOST и RELAY MAILER Если Вы говорите UUCP smart-host установить RELAY HOST для UUCP имени вашего " интеллектуально зависимого " uucp соседа. Используйте UUCP-A mailer, если Вы хотите заголовки с определенным именем области.
DEFAULT MAILER Если Вы находитесь в Internet и используете DNS, Вы должны установить его как TCP-A. Это сообщает, чтобы sendmail использовал TCP-A mailer, который передает почту через SMTP используя нормальную RFC адресацию для конверта. Абонент Internet возможно не должен определять RELAY HOST or RELAY MAILER.
Чтобы создать файл sendmail.cf, выполните команду
# make yourhostname.cf
Она обработает файл yourhostname.m4 и создаст yourhostname.cf из него. Затем, Вы должны проверить, делает ли файл конфигурации, который вы создали, то, что Вы ожидаете. Это объясняется в следующих двух разделах. Если вы удовлетворены его поведением, скопируйте его на место командой:
# cp yourhostname.cf /etc/sendmail.cf
Теперь ваша система sendmail готова к действиям. Поместите следующую строку в соответствующем файле запуска (вообще /etc/rc.inet2). Вы можете также выполнить ее вручную, чтобы запустить его теперь.
# /usr/lib/sendmail -bd -q1h
Руководство администратора сети в ОС Linux
Subnetting - не только организационная деление, но часто и естественное следствие границ аппаратных средств. Знания хоста о строении данной физической сети, типа Ethernet, являются очень ограниченными: Единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateways. 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.4.1, а при разговоре с хостом на магистраль, он должен использовать 149.76.1.4.
Таким образом, gateway получает по одному IP адресу на каждую сеть, к которой он подключен. Эти адреса (вместе с netmask) привязаны к интерфейсу через, который обращаются подсети. Таким образом, интерфейсы и адреса sophus связаны так:
---------------------------------------- +-------+-------------+----------------+ | Интерфейс| адрес | Netmask | +-------+-------------+----------------+ +-------+-------------+----------------+ | Eth0 | 149.76.4.1 | 255.255.255.0 | | fddi0 | 149.76.1.4 | 255.255.255.0 | | Lo | 127.0.0.1 | 255.0.0.0 | +-------+-------------+----------------+ +-------+-------------+----------------+
Последняя запись описывает loopback интерфейс lo.
На картинке 3.4.3 изображена топология части сети Groucho Marx Университета (GMU). Хосты, находящиеся в двух подсетях в то же самое время показываются с обоими адресами.
Вообще, Вы можете не обращать внимание на различия между адресами хоста и интерфейса. Относитесь к адресу хоста, который находятся только в одной сети, как к адресу того и другого, хотя строго говоря это Ethernet интерфейс имеет IP адрес. Однако, это различие ощутимо только, когда Вы работаете с gateway.
Где получить код
Самая последняя версия сетевого кода может быть получена на различных анонимным FTP. Официальный FTP участок для Net-3 - sunacm.swan.ac.uk, отражаемый sunsite.unc.edu в system/Network/sunacm. Самый последний комплект Net-2e доступен на ftp.aris.com. Matthias Urlichs' bsd код может быть взят на ftp.ira.uka.de в /pub/system/linux/netbsd.
Самые последние ядра могут быть найдены на nic.funet.fi в /pub/OS/Linux/PEOPLE/Linus; sunsite и tsx-11.mit.edu отражают эту дерикторию.
Где Получить Подробную информацию
Имеется много мест, где Вы можете искать подробную информацию относительно sendmail. См. Linux MAIL Howto зарегистрированный регулярно как comp.answers. Это также доступно для анонимного FTP на rtfm.mit.edu. Однако, окончательное место находится в sendmail + IDA. Смотрите в каталоге ida/cf ниже исходного каталога файлы DBM-GUIDE, OPTIONS, и Sendmail.mc.
Руководство администратора сети в ОС Linux
Get команда - dip способ установки переменной. Самая простая форма - установить переменную как константу, как это делалось в вышеупомянутом примере. Вы можете, также запросить пользователя для входа определяя ключевое слов вместо значения:
DIP> get $local ask Enter the value for $local:
Третий метод состоит в том, чтобы попробовать получить значение от отдаленного хоста. Причудливо, на первый взгляд, но это очень полезно в некоторых случаях: некоторые SLIP серверы не позволяют Вам использовать Ваш собственный IP адрес на SLIP связи, но будет приписывать Вам один из объединения адресов всякий раз, когда Вы набираете номер, печатая сообщение, которое информирует Вас относительно адреса к которому Вы были назначены. Если просмотры сообщения - что - нибудь вроде этого ``Your address: 193.174.7.202'', то следующий фрагмент dip кода допустил бы Вас до подбора адреса:
wait address: 10 get $locip remote
Главный Файл Sendmail.mc
include(Sendmail.mc)dnl # REQUIRED ENTRY !!! Авторы sendmail + IDA обеспечивают файл Sendmail.mc, который содержит "внутренности" того, что становится файлом sendmail.cf. Периодически выпускаются новые версии, чтобы установить ошибки или добавлить функциональные возможности без полного выпуска и перетрансляции sendmail из исходников. Важно не редактировать этот файл.
Глобальные Опции elm
В глобальном elm .rc файле, Вы должны установить опции, которые относятся к имени вашего host. Например, в Виртуальном Пивоваренном заводе, файл содержал бы следующее: # # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com Этот набор опций ориентирует elm относительно локального hostname. Хотя эта информация редко используется, Вы должны установить эти опции.
Обратите внимание, что эти опции воздействуют только в глобальном файле конфигурации; когда они найдены в вашем частном elmrc, они будут игнорироваться.
Хронология
UUCP был разработан в конце семидесятых Mike Lesk в AT&T Bell Laboratories, чтобы обеспечить простое соединение по модему. Так как большинство людей, которые хотят иметь email и новости Usenet на своей домашней машине все еще связываются через модемы, UUCP стал очень популярен. Хотя имеется много реализаций, разработанных для различных аппаратных платформ и операционных систем, все они совместимы с высокой степенью. Однако, как это случилось с большинством программного обеспечения, которое так или иначе стало "стандартом" за эти годы, нет такого UUCP, который можно было бы назвать подлинным UUCP. Он подвергался постепенному процессу эволюции начиная с первой версии, которая была разработана в 1976.В настоящее время имеются две основных разновидности, которые отличаются в основном поддержкой аппаратных средств и конфигурацией.Крпме них существуют различные реализации, немного отличающиеся деталями элементами. Одна разновидность - это так называемая " Версия 2 UUCP ", которая датируется 1977 годом и реализована Mike Lesk, David A. Novitz, и Greg Chesson. Она все еще используется, хотя и устарела. Недавние реализации Версии 2 обеспечивают многие из возможностей более новой разновидности UUCP. Вторая разновидность была разработана в 1983, и обычно упоминается как BNU (Basic Networking Utilities(базисные утилиты работы с сетями)), HoneyDanBer UUCP, или HDB для краткости. Название получено из имен авторов, P. Honeyman, D. A.Novitz, и B. E. Redman. HDB был задуман, чтобы устранить некоторые из неточностей Версии 2 UUCP. Например, были добавлены новые протоколы передачи, и буферный каталог был разбит так, что теперь имеется каталог для каждого компьютера, с которым Вы связываетесь через UUCP. Реализация UUCP, в настоящее время распространяемого с Linux - Taylor UUCP 1.04, (1), является версией,которую описывает эта глава. Версия Taylor UUCP 1.04 была выпущена в феврале 1993. Кроме традиционных файлов конфигурации, Taylor UUCP может быть скомпилирована так , чтобы понимать новый стиль - a.k.a. " Taylor " - файлы конфигурации. Версия 1.05 была выпущена недавно, и скоро будет поставляться на большинстве дистрибутивов. Различия между этими версиями обычно затрагивают возможности, которые Вы никогда не будете использовать, так что Вы сможете конфигурировать Taylor UUCP 1.05 используя информацию из этой книги.
1.Написано Ian Taylor, 1993.
С большинства дистрибутивов Linux, Taylor UUCP обычно компилируется совместимым с BNU, или Taylor схемой конфигурации, или с обоими. Так как последний намного более гибок, и, возможно, проще для понимания, чем довольно часто запутанные файлы конфигурации BNU, ниже я буду описывать схему Taylor. Цель этой главы не в том, чтобы дать Вао исчерпывающее описание опций командной строки для команд UUCP, а в том, чтобы дать Вам введение в установку работающего узла UUCP. Первый раздел дает введение в то, как UUCP осуществляет удаленное выполнение и передачу файла. Если Вы не новичок в UUCP, Вы можете пропустить этот раздел и перейти к разделу 13.3, который объясняет различные файлы, используемые для установки UUCP. Мы примем, что Вы знакомы с пользовательскими программами набора программ UUCP - uucp и uux. Для описания обратитесь пожалуйста к страницам руководства. Кроме общедоступных программ - uux и uucp, набор программ UUCP содержит ряд команд, используемых только для административных целей. Они используются для контроля траффика UUCP через ваш узел, удаления старых регистрационных файлов, или для компиляции статистики. Они не будут описаны здесь, потому что они периферийные к основным задачам UUCP. Кроме того, они хорошо документированы и довольно легки для понимания. Однако, имеется третий класс, который включает рабочие программы UUCP. Они называются uucico (где cico обозначает copy-in copy-out), и uuxqt, которая выполняет работы, посланные из удаленных систем.
If и Goto Команды
If команда - более условная штука, чем то что обычно подрузамеваят под if. Синтаксис:
if var op number goto label
где выражение должно быть простым сравнением между одной из переменных $errlvl, $locip, и $rmtip. Второй операнд должен быть целым числом; оператор op может быть один из ==,!=, <,>, < =, и > =.
Команда goto делает выполнение из script continue строки, несущей эту метку. Метка должна появиться как первый токен в линии, и немедленно должна оканчиваться двоеточием.
Имя Системы
Каждое имя системы может появляться более только один раз. Если Вы хотите использовать несколько наборы конфигураций для той же самой системы (типа различных номеров телефона uucico, должен пробовать по очереди), Вы можете определять альтернативы. Альтернативы описаны ниже. 6. Старая Версия 2 UUCP не делает широковещательной передачи имени в начале вызова; однако более новые реализации (а также и Taylor UUCP) делают это.
Inetd супер-сервер
Часто, услуги предоставляются так называемыми daemons. Daemon является программой, которая открывает некоторый порт, и связь. Если это происходит, это создает дочерний процесс, который принимает связь, в то время как основной продолжает ждать дальнейших запросов. Это понятие имеет недостаток что для каждого предлагаемого обслуживания, daemon должен запускать те, которые слушают порте для связи, для которых это вообще означает потери способов системы подобно пространст
Таким образом, почти вся Un*x инсталляция запускает " супер- сервер ", который создает гнезда для ряда услуг, и слушает на них одновременно при использовании отобранного системного вызова (2). Когда отдаленный хост запрашивает одну из услуг, супер-сервер замечает этот и порождает другой сервер, точно установленный для этого порта.
Супер-сервер, обычно используемый - inetd, Internet Daemon. Это начинается при начальной загрузке системы, и берет список услуг, к которым он обращается из файла запуска, именованной /etc/inetd.conf. В дополнение к тем вызываемым серверам, там есть ряд тривиальных услуг, которые являются на сформировавшимся inetd, неппсрежственно вызываемым внутренние услуги. Они включают chargen который просто генерирует ряд знаков, и daytime который возвращают system's idea
Запись в этой картотеке состоит из единственной линии, сделанной из следующей области:
service type protocol wait user server cmdline
Значение каждой области следующие:
Service дает сервисное имя. Service name должно быть переведено к номеру порта, просматривая в файле services. Этот файл будет описан в разделе 10.3.
type определяет тип гнезда, любой поток (для связь- ориентируемых протоколов) или dgram (для датаграмных протоколов). TCP основанна на услугах, которые должны всегда использовать поток, в то время как UDP-основанные услуги должны всегда использовать dgram.
Protocol называется протоколом переноса, используемым обслуживанием. Это должно быть подходящим названием протокола, найденное в файле протоколов, также объяснено ниже.
wait эта опция применяется только на dgram гнездах. Это может быть также wait или nowait. Если wait определен, то inetd только выполнит один сервер для точно установленного порта в любое время. Иначе, это немедленно продолжит слушать на порте после извлечения сервера.
Это полезно для "единственно - связнных " серверов, которые читают все входящие датаграммы, и затем выходят. Большинство RPC серверов имеет этот тип и должны следовательно точно определить wait. Противоположный тип, "многопоточные " серверы, позволяет безграничному числу образцов, чтобы быть запущенными одновременно; но это редко когда используется. Эти серверы должны точно определить nowait.
Гнезда потока должны всегда использовать nowait.
User это является идентичностью входа в систему пользователя, объясненный ниже. Это будет часто root user, но некотпрые" услуги могут использовать различные account. Это - очень хорошая идея к применению принципа наименьшего количества привилегии здесь, который заявляет что Вы не должны запускать команду ниже привилегированного account если программа не требует этого для присущего функционирования. Для примера, NNTP сервер новостей будет запускать новости, пока ус риск защиты (типа tftp, или finger) будут управляться как nobody.
server дает полный путь программы сервера, которая будет выполнена.
cmdline это- командная строка, которую нужно запустить на сервере. Она включает аргумент 0, который является названием команды. Обычно, это не будет названием программы сервера, если программа ведет себя по-другому, когда вызывается с различным именем.
Эта область пуста для внутренних услуг.
Типовой inetd.conf файл изображен на рисунке 10.1. Finger service прокомментированног так чтобы это было не доступно. Это часто выполняется из соображений безопасности, потому что может использоваться нападавшими для того, чтобы получить имя пользовател и на вашей системе.
Tftp имзображено прокомментированным также. Tftp осуществляет Примитивный Протокол Передачи файла, который позволяет передавать любые всемирно - читаемые файлы из вашей системы без пароля. Это особенно вредно для файла /etc/passwd, даже более того, когда Вы не используйте теневой пароль.
TFTP обычно используется клиентурой без диска и X терминалами при загрузке их кода из сервера при начальной загрузке. Если Вы должны запустить tftpd для этой проблемы, удостоверитесь, что ограниченная область действия к директориям клиентов будет восстановлена из файлов, добавляя те названия каталогов к команде tftpd's линии. Это показано во второй tftp линии в примере.
Инструментальные средства Сопровождения и Задачи
Несмотря на сложность C News, жизнь администратора новостей может быть довольно проста, потому что C News обеспечивает Вас расширенным разнообразием инструментальных средств сопровождения. Некоторые из них предназначены, чтобы быть выполненными регулярно из cron, подобно newsdaily. Использование этих команд значительно уменьшает ежедневную заботу и подачу требований вашей установки C News. Если не установлено иначе, эти команды расположены в /usr/lib/news/bin/maint. Обратите внимание, что Вы должны стать пользователем перед вызовом этих команд. При выполнении их как супер-пользователь эти файлы могут стать недоступными C News.
newsdaily Имя уже говорит: это выполняется один раз в день. Это - важная команда, которая помогает Вам хранить регистрационные файлы малыми, сохраняя копии каждого из последних трех выполнявшихся. Она также пробует считывать любые аномалии, подобно несвежим пакетам во входящих и исходящих каталогах, регистрации в неизветных группах, и т.д. Возникающие в результате сообщения об ошибках будут отправлены по почте к newsmaster.
newswatch Это - команда, которая должна быть выполнена регулярно, чтобы искать аномалии в системе новостей, один раз в час или около этого. Она предназначена обнаруживать проблемы, которые будут иметь непосредственный эффект на оперативности вашей системы новостей и отправлять по почте отчет проблемы к newsmaster. Отмечаемые вещи включают несвежие файлы блокировки, которые не удалены, автоматические входные пакеты, и недостаток дискового пространства.
addgroup Добавляет группу к вашему пункту локально. Соответствующий вызов
addgroup groupname y|n|m|=realgroup
Второй аргумент имеет то же самое значение как флаг в файле active, что любой может отправить по почте к группе (y), что никто не может отправить по почте (n), что она уменьшена (m), или что она является специальной для другой группы (=realgroup). Вы могли бы также использовать addgroup, когда первые статьи в недавно созданной группе прибывают раньше чем сообщение управления newgroup, которое предназначено, чтобы создать ее.
delgroup nозволяет Вам удалять группу локально. Вызовите это как
delgroup groupname
Вы все еще должны удалить статьи, которые остаются в каталоге spool. В качестве альтернативы, Вы могли бы оставлять это натуральному ходу событий (a.k.a. Expire) чтобы удалять их.
addmissing Добавляет отсутствующие статьи к файлу хронологии. Выполните эту команду, когда имеются статьи, которые, кажется, зависают навсегда.
newsboot Эта команда должна быть выполнена при начальной загрузке системы. Она удаляет любые файлы блокировки, оставленные, когда обработчики новостей уничтожались при закрытии системы, и закрывает и выполняет любые пакеты, оставленные из NNTP соединений, которые были завершены при закрытии системы.
newsrunning Это постоянно находится в /usr/lib/news/bin/input, и может использоваться, чтобы отключить непакетирование входящих новостей, например в течение работы. Вы можете выключить непакетирование вызовом
/usr/lib/news/bin/input/newsrunning off
Оно включается, используя on вместо off.
Интерфейс loopback
Сам первый интерфейс который нужно сформировать и активизировать -- интерфейс loopback:
# ifconfig lo 127.0.0.1
Иногда, Вы будете также видеть фиктивное имя localhost используемое вместо IP адреса. ifconfig будет искать имя в hosts файле, где должна быть запись, объявляющая его как имя для 127.0.0.1:
# Sample /etc/hosts entry for localhost localhost 127.0.0.1
Чтобы просмотреть информацию о конфигурации интерфейса, Вы можете вызвать ifconfig передав как аргумент имя интерфейса:
$ ifconfig lo lo Link encap Local Loopback inet addr 127.0.0.1 Bcast [NONE SET] Mask 255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0
Как Вы можете видеть, интерфейс loopback получил netmask равную 255.0.0.0, так как 127.0.0.1 -- адрес A класса. Вы можете также увидеть, что интерфейс не имеет множества общевещательных адресов, который вообще-то бесполезны для loopback. Однако, если Вы используете rwhod демона на вашем хосте, Вы возможно будете должны установить широковещательный адрес loopback для того чтобы rwho функционировал должным образом. Установка этого адреса объясняется в секции "Все о ifconfig".
Теперь, Вы можете начать играть с вашей мини-"сетью". Единственное чего не хватает -- это запись в таблице маршрутизации, которая говорит IP, что этот интерфейс как маршрут к месту назначения 127.0.0.1. Это делается с помощью следующей команды
# route add 127.0.0.1
Здесь, тоже можно использовать localhost вместо IP адреса.
Затем, Вы должны проверить правильность работы, например, используя ping. ping - сетевой эквивалент звукового(sonar) устройства и используется для проверки того доступен ли данный IP адрес, и измерения интервала времени между посылкой дэйтаграмы и получением ответа. Время требуемое для этого часто называется roundtrip time.
# ping localhost PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp seq=0 ttl=32 time=1 ms 64 bytes from 127.0.0.1: icmp seq=1 ttl=32 time=0 ms 64 bytes from 127.0.0.1: icmp seq=2 ttl=32 time=0 ms ^C
--- localhost ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0/0/1 ms
При вызове ping, он будет продолжать испускать пакеты пока не будет прервано пользователем. ^C отмечает место где мы нажали Ctrl-C.
Вышеупомянутый пример показывает, что пакеты доставлены к 127.0.0.1 и ответ пришел к ping почти мгновенно. Это показывает что Вы преуспели во введении вашего первого сетевого интерфейса.
Если вывод который Вы получаете от ping не походит на показанный выше, Вы нарвались на неприятности. Проверите ошибки в установочных файлах. Проверите чтобы ifconfig и маршрутизирующие приложения, которые вы используете, были совместимы с ядром, которым Вы пользуетесь и, вообще, что ядро компилировалось с разрешенной сетью (Вы увидите это по отсутствию директории /proc/net ). Если Вы получаете сообщение об ошибки, говорящее "Network unreachable" ,тогда вероятно вы не правильно использовали команду route. Удостоверитесь что Вы используете тот же самый адрес, что Вы дали ifconfig.
Шагов описанных выше достаточно чтобы использовать сетевые приложения на автономном хосте. После добавления вышеупомянутых строк к rc.inet1 и проверки, что оба rc.inet скрипта запускаются из /etc/rc, Вы можете перезагрузить вашу машину и попытаться использовать различные приложения. Например, "telnet localhost" должен установить telnet соединение с вашем хостом.
Однако, интерфейс loopback полезен не только как пример в книгах о сетях , или как система отладки, но фактически используется некоторыми приложениями в течение нормальной работы. Поэтому, Вы всегда должны конфигурировать его, независимо от того присоединена ли ваша машина к сети или нет.
Internet Протокол(IP)
Конечно, Вы не хотели бы чтобы ваша сеть ограничивалась только Ethernet. Идеально, Вы хотели бы использовать сеть независимо от того, какими аппаратными средствами это достигается.
На Пример, в больших сооружениях типа Groucho Marx Университет, Вы обычно имеете набор отдельных Ethernet, которые должны быть связаны некоторым образом. В GMU, в математическом отделе используются два Ethernets: одна сеть быстрых машин для профессоров и студентов последних курсов, и другая с медленными машинами для студентов (обе связаны с FDDI).
Эта связь управляется специальным хостом, так называемым gateway, который направляет поступающие и уходящие пакеты копируя их между двумя Ethernets и FDDI. Например, если Вы - в математическом отделе, и хотите получить доступ к quark в локальной сети физического отдела, сетевое программное обеспечение не может послать пакеты quark непосредственно, потому что он находится на другом Ethernet.
Поэтому, этим занимается gateway. Gateway (назовем его sophus) посылает эти пакеты другому gateway (niels) в Отделе Физики, niels же отправляет их на требуемую машину. Поток Данных между erdos и quark показывается на картинке 2.3.4 (с извинениями парню L. Steele).
Эта схема направления данных отдаленному хосту называется routing(маршрутизация), а пакеты часто называют datagram(дэйтограмы). Для простоты, обмен дэйтаграмами управляется в соответствии c отдельным протоколом, который является независимым от используемых аппаратных средств: IP, или Internet Протокол. В главе 3. мы будем рассматривать IP и routing более подробно.
Основная польза IP в том, что он преобразует физически несходные сети в одну с виду однородную сеть. Это называется internetworking, в результате получаем "мета-сеть" называемую intеrnet. Обратите Внимание на различие между inetrnet и Inetrnet здесь. Последнее - это официальное название одного специфического глобального inetrnet.
Конечно, IP также требует машинонезависимой схемы адресования. Это достигается с помощью назначая каждому хост уникального номера размером в 32 бита, названного IP адресом. IP адрес обычно пишется как четыре десятичных номера, для каждой 8-битовой части, разделенных точками. Например, quark мог бы иметь IP адрес 0x954C0C04, который будет записан как 149.76.12.4. Этот формат также назван dotted quad notation.
Теперь мы имеем три различных типа адресов: имя хоста, типа quark, IP адрес, и наконец, имеются адреса аппаратных средств, типа адреса Ethernet с 6 байтами. Все они так или иначе соответствуют друг другу, так, когда Вы пишете rlogin quark, программное обеспечение находит его IP адрес; И когда IP пересылает данные в Ethernet Отдела Физики, так или иначе по IP адресу выясняется Ethernet адрес.
Мы не будем здесь вдаваться в подробности этого процесса, а сделаем это в главе 3. Пока достаточно помнить что эти шаги называются hostname resolution, поиск IP адреса по имени хоста, и address resolution, поиск физического адреса по IP.
IP адреса
Kак упоминается в предыдущей главе, адреса понятные в соответствии c IP -- это 32-битовые числа. Каждая машине в данной сети должен быть назначена уникальный адрес.
В локальной сети, которая не использует TCP/IP для связи с другими сетями, Вы может назначить эти номера согласно вашим персональным предпочтениям. Однако, для участков Inetrnet, номера назначаются NIC.
Для более легкого чтения, IP адреса разбивают на четыре 8 битовых числа, названных octets. Например, quark.physics.groucho.edu имеет IP адрес 0x954C0C04, который записывается как 149.76.12.4. Этот формат часто называют dotted quad notation.
Другая причина для такой записи то, что IP адреса разбиваются на номер сети, который написан в первых octets, и номер хоста, который является остатком. При обращении к NIC за адресами, Вы не получаете адрес для каждого отдельного хоста, которые Вы планируете поставить. Вместо этого, Вам дают сетевой номер, и позволяющий назначать машинам любые IP адреса из заданного таким образом диапазона.
В зависимости от размера сети, хост часть можем быть меньшей или большей. В зависимости от различные потребностей имеются несколько классов сетей, определяющих различное разбиение IP адресов.
Класс A включает сети от 1.0.0.0 до 127.0.0.0. Сетевой номер содержится в первом octet, что предусматривает 24 разрядную хост часть, сеть приблизительно из 1.6 миллион хостов.
Класс B содержит сети от 128.0.0.0 до 191.255.0.0; сетевой номер находится в первых двух octets. Это предполагает 16320 сетей с 65024 хостами каждый.
Класс C диапазон сетей от 192.0.0.0 до 223.255.255.0, с сетевой номер содержится в первых трех octets. Это предполагает почти 2 миллиона сетей по 254 хоста.
Классы D, E, и F Адреса попадающие в диапазон от 224.0.0.0 до 254.0.0.0 являются или экспериментальным, или сохранены для будущего использования и не определяют какую-либо сеть.
Если мы вернемся к примеру в предыдущей главе, мы увидим что 149.76.12.4, адрес quark, относится к хосту 12.4 в сети 149.76.0.0 класса B.
Вы можете заметить, что в вышеупомянутом списке для каждого octet в части хоста возможны не все значения. Это потому что номера хоста со всеми octets равными 0 или 255 сохранены для специальных целей. Адрес в котором все биты хост части -- ноль относится ко всей сети, а где все биты хост части 1 назван broadcast (широковещательным) адресом. Он относится ко всем хостам из указанной сети. Таким образом, 149.76.255.255 не существующий адрес хоста, он относится ко всем хостам сети 149.76.0.0.
Имеются еще два зарезервированных адреса, 0.0.0.0 и 127.0.0.0. Первый назван default route(путь по умолчанию), последний loopback (кольцевым) адресом. default route используется при маршрутизации IP дэйтаграм, с которыми мы будет иметь дело ниже.
Сеть 127.0.0.0 сохранена для IP работы внутри хоста. Обычно, адрес 127.0.0.1 будет назначен специальному интерфейсу на вашем хосте, так называемому интерфейсу loopback, который действует подобно закрытому кругообороту. Любой IP пакет переданный ему от TCP или UDP будет возвращен к ним как будто он только что прибыл из некоторой сети. Это позволяет тестировать сетевое программное обеспечение без использования "реальной" сети. Также он полезен, когда Вы хотите использовать сетевое программное обеспечение на автономном хосте. Например, большое количество UUCP участков не имеют IP связи вообще, но все же хотят управлять INN системой новостей. Однако для правильной работы под Linux, INN требует интерфейса loopback.
IP на последовательных линий
Для последовательных линий, стандартом "de facto" является SLIP или IP для последовательных линий. Есть модификация SLIP -- CSLIP, или сжимаемый SLIP, который использует сжатие IP заголовков чтобы оптимизировать IP для относительно низкой пропускной способности последовательной связи. PPP, или Point-to-Point протокол -- еще один протокол для последовательных линий. PPP имеет еще большее число особенностей чем SLIP, включая стадии переговоров о начале связи. Его главное преимущество по сравнению SLIP, то что он не ограничивается только транспортировкой IP дэйтаграм, а предназначен для передачи любого типа дэйтаграм.
IP опции конфигурации
IРCP используется для того, чтобы обговорить пару IP параметров в конфигурационной связи. Обычно, каждый peer может посылать IPCP запрос конфигурации, указывая, которая переменная хочет измениться из значений заданных по умолчанию, и к какому значению. После получения, отдаленный end осматривает каждую опцию, и подтверждает или отклоняет ее.
Pppd дает Вам множество управления, относительно IPCP опций, которые будут пытаться вести переговоры. Вы можете настроить ее через различные опции командных строк, которые мы обсудим ниже.
IP Сети
<> Когда Вы пишете письмо, Вы обычно помещаете на конверте полный адрес: страну, штат, почтовый индекс, и т.д.. После того, как Вы опускаете его в почтовый ящик, почта доставит его по месту назначения: оно будет послано обозначенной стране, чья национальное почта пошлет его в требуемый штат, и т.д.. Преимущество этой иерархической схемы довольно очевидно: Везде, где Вы отправляете по почте письмо, местный начальник почтового отделения будет точно знать, куда передать это письмо, и не должен заботиться, которым путем письмо будет путешествовать.
IP сети построины подобным образом. Весь Inetrnet состоит из набора сетей, названных автономными системы. Каждая такая система производит всю маршрутизацию между своими членами так, что задача посылки дэйтаграм сведена к обнаружению пути к сети с требуемым хостом. Это означает, что как только дэйтаграма вручена любому хосту который находится в той же сети, обработка выполняется исключительно данной сетью.
Использование dip
Теперь это все просто. Однако, Вы могли бы захотеть автоматизировать вышеупомянутые шаги так, чтобы Вы только вызывли бы простую команду, которая выполняет все те шаги, показанные выше. Это - то, для чего нужен dip. (2) Текущее версия этого выпуска - версия 3.3.7. Онаисправлялась несколькими людьми, поэтому Вы уже больъе нз сможете говорить о dip как о программе. Эти различные элементы развития будут "обнадеживающе" слиты в будущей версии.
Dip обеспечивает интерпретатор простым языком, который обрабатывает модем для Вас, преобразуя линию в SLIP режим, и конфигурируя interface. Это довольно примитивно и ограниченно, но вполне подходяще для большинства случаев. Новая версия dip(а) может описать большое количество многосторонних языков в один день.
Чтобы было возможным сконфигурировать SLIP interface, dip требует root привелегию. Это теперь было бы соблазнительно для того, чтобы сделать dip setuid к root, таким образом Все пользователи могли бы соединиться с некоторым SLIP сервером без необходимости прдеоставления им root доступа. Это очень опасно, потому что при установке фиктивных interface(ов) и заданных по умолчанию маршрутов dip может разрушить направление на вашей сети. Даже еще хуже, это даст вашим пользователям приоритет на подсоединение к любым SLIP серверам, и начать опасную атаку на Вашу сеть. Так, если Вы хотите позволить Вашим пользователям запустить SLIP связь, напишите маленькие программки для каждого предполагаемого SLIP сервера, и вызовите dip со специфическим script(ом), который установит связь. Эти программы могут быть затем безопасно сделаны setuid root. (3)
Использование файлов опций
Прежде чем pppd проанализирует аргументы командной строки, он просмотрит несколько файлов для опций, заданных по умолчанию. Эти файлы могут содержать любые подходящие аргументы командной строки, распространяющиеся поперек произвольного числа линий. Комментарии представлены своими специальными знаками.
Первый файл опций - /etc/ppp/options, который всегда просматривается тогда, когда запускается pppd. При использовании этого для установки некоторых глобальных значений по умолчанию - хорошая идея, потому что это позволит Вам сохранить пользователей от выполнения нескольких вещей, которые могут поставить под угрозу защиту. Например, чтобы pppd запросил некоторый вид установления подлинности (или PAP или CHAP) от peer, Вы бы добавили опцию auth к этому файлу. Эта опция необходима для того, чтобы стало невозможно установить PPP связь с любой системой, которая не в наших опозназательных базах данных.
Другой файл опций, который читается после /etc/ppp/options - рpprc в исходном каталоге пользователя. Он позволяет каждому пользователю точно определить ее собственное множество опций по умолчанию.
Типовой файл /etc/ppp/options мог бы выглядеть следующим образом:
5. Заданный по умолчанию сетевой маршрут может быть только установлен, если ни один из них не установлен.
# Global options for pppd running on vlager.vbrew.com auth # require authentication usehostname # use local hostname for CHAP lock # use UUCP-style device locking domain vbrew.com # our domain name
Первыя две из этих опций обращаются к установлению подлинности и будут объяснены ниже. Ключевое слово блокировки заставит pppd уступить стандарту UUCP метод блокировки устройства. С этим собранием, каждый процесс, который обращается к последовательному устройству, скажем /dev/cua3, создает файл блокировки, названный LCK.. cua3 в UUCP катологе, чтобы сообщить, что это устройство находится в использовании. Необходимо предотвратить любые другие программы типа minicom или uuci локального устройства в то время как используется PPP.
Причина в обеспечении этой опцией в глобальном конфигурационном файле - то, что опции типа тех, что были показанны выше не могут быть отменены, и они обеспечивают приемлемый уровень защиты. Заметьте однако, что некоторые опции могут быть отменены позже; один такой пример -соединить строку.
Использование NIS с Shadow Support
Не имеется никакой NIS поддержки для мест, которые используют теневой вход в систему набора программ. John F. Haugh, автор теневого набора программ, недавно выпущенной версии теневых библиотечных функций, описанных GNU библиотекой GPL к comp.sources.misc. Это уже имеет некоторую поддержку для NIS, но она пока еще не полна, и файлы пока еще не добавлены к стандарной библиотеке для C. С другой стороны, при публикации информации из /etc/shadow через NIS вид поражения цели теневого набора программ.
Хотя NYS функции поиска пароля не используют shadow.byname map или что - либо аналогичное, очевидно NYS поддерживает использование локального /etc/shadow файла. Когда NYS реализация getpwnam обращается к просмотру информации, связанной с данным login именем, средства, точно определенные passwd записью в nsswitch.conf делают запрос. Nis обслуживание будет просто искать имя в passwd.byname map на NIS сервере. Обслуживание файлов, однако, проверит, существует ли /etc/shadow, и если существует, то попробует открыть это. Если ни один из файлов не присутствует, или если пользователь не имеет привилегию root, то происходит возвращение к обычной работе поиска информации пользователя в /etc/passwd. Однако, если теневой файл существует и может быть открыт, то NYS извлечет пароль пользователя из shadow. Getpwuid функция соответственно выполняется. В этом режиме, binaries, компилируемый с NYS, будет иметь дело с локальной установкой теневого набора программ.
Использование passwd и группы Maps
Одно из главных приложений NIS находится в синхронизации пользователя и account информации относительно всех множеств в NIS области. К концу, Вы обычно хранит только малый локальный файл /etc/passwd, к которому добавлена site-wide информация из NIS отображений. Однако, просто предоставления возможности NIS поиска для этого обслуживания в nsswitch.conf не вполне достаточно.
Полагаясь на информацию пароля, распределенную NIS, Вы сначала должны удостовериться, что числовая идентичность пользователя всех пользователей, которые у Вас есть в Вашем локальном passwd файлесоответствуют идеи NIS сервера относительно идентичности пользователя. Вы возможно захотите использовать это для других целей также, подобно установке NFS значений от других хостов на вашей сети.
# /etc/nsswitch.conf # hosts: nis dns [NOTFOUND=return] files networks: nis [NOTFOUND=return] files
services: files nis protocols: files nis rpc: files nis
Рисунок 17. Примерный nsswitch.conf файл.
Если любая из числовых идентичности в /etc/passwd или /etc/group отклоняется от тех, которые в maps, то Вы должны скорректировать файл ownerships для всех файлов, которые принадлежат этому пользователю. Сначала Вы должны заменить все uids и gids в passwd и в группах новых значений; затем найдите вуе фвйлы, которые принадлежат пользователям и былы только что изменены, и в заключение замените их ownerships. Примите новости используемые для того, чтобы иметь идентичность пользователя была бы 9, и okir имел бы идентичность пользователя 103, которые были заменены на некоторое другое значение; Вы могли бы затем выпорлнить следующие команды:
# find / -uid 9 -print >/tmp/uid.9 # find / -uid 103 -print >/tmp/uid.103 # cat /tmp/uid.9 | xargs chown news # cat /tmp/uid.103 | xargs chown okir
Важно то, что Вы выполняете эти команды с новым, установленным passwd файлом, и что Вы собираете все имена файлов прежде, чем Вы изменените ownership любого из них. Для того, чтобы модифицировать ownerships группы файлов, Вы должны использовать похожую команду.
Сделав это, численный uid's и gid' s на вашей системе согласиться с теми хостами, которые расположенны в Вашей NIS области. Следующий шаг будет - прибавить линии конфигурации к nsswitch.conf, который включают NIS поиски для пользователя и информации группы:
# /etc/nsswitch.conf - passwd and group treatment passwd: nis files group: nis files
Это заставляет команду входа в систему, и всех ее друзей сначала сделать запрос NIS maps, когда пользователь пробует log in, и если этот поиск терпит неудачу - обратно обращается к локальным файлам. Обычно, Вы удалите почти всех пользователей из Вашего локального файла, и только оставите записи для root и generic accounts подобно почте. Это потому, что некоторые насущные задачи системы могут требовать к map uids имя пользователя или наоборот. Например, административный cron job может выполнить команду su, для того чтобы временно стать новостями, или UUCP подсистема может отправлять по почте отчет состояния. Если новости и uucp не имеют вход в локальный файл passwd, то эти jobs будут, к сожалению, терпеть неудачу в течение&NIS"brownout.
Имеются две большие проблемы: с одной стороны, установка, как уже было описано в начале, до сих пор работает только для наборов программ входа в систему, которые не используют теневой пароль, подобно тем, что включены в util-linux пакет. Путаница при использовании теневых паролей с NIS будет объяснена ниже. С другой стороны, команды входа в систему - не единственые, которые обращаются к passwd файлу - посмотрите на команду ls, которую большинство людей использует почти постоянно. При выполнении длинной распечатки, ls выделит символические имена для пользователя и группу владельцев файла; то есть для каждого uid и gid это представляет собой целую схватку, это должно сделать запрос на NIS сервер, только один раз. Это ужасно замедлит выполнение, если ваша локальная сеть - clogged, или, еще хуже, когда NIS сервер не на той же самой сети, для этого датаграммы должны пройти через программу маршрутизации.
Но пока это еще не вся история. Вообразите, что случится если пользователь захочет изменить свой пароль. Обычно, она вызовет passwd, который считает новый пароль и модифицирует локальный файл passwd. Это невозможно сделать с NIS, так как с тех пор файл локально больше не доступен, но если пользователи подсоединились к NIS серверу, и вдруг захотели изменить пароль, то дляч этого, к сожалению нет опции. Поэтому, NIS обеспечивает отпуск в замене для passwd, называемого yppasswd, который делает аналогичную вещь в присутствии NIS. Для изменения пароля на хост сервере, но в контакт с yppasswdd daemon на том же самом хосте через RPC, и обеспечивает его модифицируемой информацией пароля. Обычно, Вы устанавливаете yppasswd для нормальной программы, делая что - нибудь вроде этого:
# cd /bin # mv passwd passwd.old # ln yppasswd passwd
В то же самое время Вы должны установить rpc.yppasswdd на сервер и запустить его из rc.inet2. Это эффективно слроет любые искожения NIS от ваших пользователей.
Использование прямого соединения
Допустим, что Вы используете прямое соединение вашей системы vstout с системой tiny.Как и в случае с модемом, Вы должны описать вход в систему в файле sys. Команда port идентифицирует последовательный порт tiny, подключен к.
system tiny time Any port direct1 speed 38400 chat ogin: cathcart word: catch22
В файле port Вы должны описать последовательный порт для прямого соединения. Описание программы набора номера не необходимо, так как нет никакой потребности в наборе.
port direct1 type direct speed 38400
Использование традиционного NIS кода.
Если Вы используете код клиента, который находится в стандарте libc, то конфигурация NIS клиента немного отлична. С одной стороны, это использует ypbind daemon для того, чтобы передать информацию для активных серверов скорее чем считывать эту информацию из файла конфигурации. Вы следовательно должны удостоверится в том, что бужет запущен ypbind при начальной загрузке. Он должен быть вызван после установленной NIS области, и RPC portmapper тоже должен быть запущен. Вызов ypcat нужен для того, чтобы проверить работает ли сервер так, как он должен (см. выше).
Недавно, имелось некоторое число bug reports, которые сообщают, что NIS терпит неудачу, сообщая при этом: "clntudp create: RPC: portmapper failure - RPC: unable to receive''.
Это все из-за несовместимого изменения в способе, как ypbind связывается с библиотечными функциям. Получая последние источники для NIS утилит и перетранслируя их, должна быть исправлена эта задача. (5)
Также, способ традиционного NIS решает это, как соединить NIS информацию с этим из локальных файлов отклоняемую от используемого NYS. Например, чтобы использовать NIS отображение пароля, Вы должны включить следующую линию где-нибудь в Вашем /etc/passwd map:
+: *:0:0:::
Это маркирует место где функции поиска пароля "вставляют" NIS отображения. Вставка подобной линии (минус последние два двоеточия) в /etc/group делают тот же самое для group. * maps. Для того, чтобы использовать hosts.* maps, распределенные NIS, измените order line в host.conf файле. Например, если Вы хотите использовать NIS, DNS, и файл /etc/hosts (в том порядке), то Вы должны изменить эту линию на:
order yp bind hosts
Традиционная NIS реализация не поддерживает никакие другие отображения в настоящее время.
5. Источник для yp-linux может быть получен из ftp.uniрaderborn.de в каталоге /pub/Linux/LOCAL.
Извлечение двоичного распределения
Сначала, Вы должны разпаковать файл архива в некотором безопасном расположении:
$ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf -
Если Вы имеете "современный" tar, например из недавнего Slackware, Вы можете сделать tar -zxvf filename.tgz и получить те же самые результаты. Распаковка архива создает каталог, именованный sendmail5.65b +IDA1.5+ mailx5.3b. В этом каталоге, Вы находите комплектное оборудование sendmail + IDA плюс mailx. Весь paths файл ниже этого каталога отражает расположение, где файлы должны быть установлены, так что безопасно подготовить команду tar:
# cd sendmail5.65b+IDA1.5+mailx5.3b # tar cf - . | (cd /; tar xvvpoof -)
Электронная почта
Одно из наиболее видных использований сетей начиная с первых сетей - это электронная почта. Она начиналась как простое обслуживание, типа копирования файла одной машины для другой, и конкатенирования его к mailbox файлу получателя. В основном email этим и занимаеся, хотя возрастастающая сеть с комплексом требований и увеличением загрузки сообщений сделала необходимой более сложную схему. Были изобретены различные стандарты обмена почты. Много усилий было приложено для создания " мульти-медийной почты '', которая включает изображения и звук в сообщения почты. Очень большое количество программ транспортировки почты было выполнено для системы Un*x. Одна из лучше всего известных - sendmail Университета Berkeley. Первоначальный автор Eric Allman теперь активно работает над sendmail снова. Имеются два Linux порта доступных для sendmail-5.56c, один из которых будет описан в главе 16 .., в настоящее время разрабатываемая версия sendmail - 8.6.5. Почтовый агент, наиболее используемый с Linux - smail-3.1.28, который написан и обеспечен авторским правом Curt Landon Noll и Ronald S. Karr. Он включен в большинство поставок Linux. В последующем, мы будем обращаться к нему просто как smail, хотя имеются другие версии, которые полностью отличны, и которые мы не описываем здесь. Сравнивая с sendmail, smail довольно молод. При обработке почты без сложных требований маршрутизации, их возможности - довольно близки. Для больших требований, однако, sendmail всегда побеждает, потому что его схема конфигурации намного более гибка. И smail и sendmail поддерживают набор файлов конфигурации, которые должны быть настроены. Кроме информации, которая требуется для запуска подсистемы почты (типа локального hostname), имеется намного больше параметров, которые могут быть настроены. Файл конфигурации sendmail сначала очень трудно понять Выглядит, как будто ваша кошка ходила по вашей клавиатуре с нажатой клавишей SHIFT. Smail файлы конфигурации более структурны и проще для понимания чем sendmail, но не дают пользователю так много свободы в настройке поведения mailer'ов. Однако, для малого UUCP или Internet работа, требуемая для установки любого из них - приблизительно та же самая.
В этой главе, мы будем иметь дело тем, чем email является и с какими проблемами Вы, как администратор будете должны иметь дело. Главы 15. и 16. дадут инструкции по установке smail и sendmail впервые. К концу текущей главы мы кратко опишем установку пользователя почты на многих Unix-подобных системах, включая Linux. Для получения более подробной информации относительно электронной почты на Linux, пожалуйста обратитесь в Electronic Mail HOWTO Vince Skahan, который зарегистрирован comp.os.linux.announce регулярно.
Как Использовать UUCP
Идея UUCP довольно проста: как и указывает его название, он в основном копирует файлы с одного хоста на другой, но также позволяли определенным действиям выполняться на удаленном хосте.
Предположим что вашей машине разрешен доступу к гипотетическому хосту с именем swim, и он может выполнить lpr команду для Вас. Тогда Вы могли бы напечатать следующее в вашей командной строке, для того чтобы напечатать эту книгу
$ Uux -r swim! Lpr! Netguide.dvi
Uux, команда из UUCP набора, передает работу swim. Эта работа состоит из входного файла, netguide.dvi, и запроса передать этот файл команде lpr. -r флаг просит uux не вызывать отдаленную систему немедленно, а сохранить работу до установления связи с ней. Это названо spooling (спулинг).
Другое свойство UUCP, позволяет передавать задачи и файлы через несколько хостов. Предположим swim, упомянутый в предыдущем примере, связан UUCP с groucho, который поддерживает большой архив Unix приложений. Чтобы загрузить файл tripwire-1.0.tar.gz на вашу машину, Вы могли бы ввести
$ uucp -mr swim!groucho!~/security/tripwire-1.0.tar.gz trip.tgz
Эта команда попросит swim скачать файл с groucho, и послать его вашей машине, где UUCP сохранит его в trip.tgz и уведомит Вас по почте о получение этого файла. Все выполняется в три шага. Сначала, ваш хост посылает задачу swim. Когда swim устанавливает контакт с groucho в следующий раз, он загружает файл. Заключительный шаг - передача файла от swim вашему хосту.
Наиболее важная услуга, предоставляемая UUCP сетями в наши дни, -- электронная почта и новости. Мы вернемся к этому позже, так что здесь мы дадим только краткое описание.
Электронная почта (email) позволяет Вам обмениваться сообщениями с пользователями на отдаленных хостах без необходимости иметь доступ на эти хосты. Задача направления сообщения от вашего участка до участка места назначения полностью выполняется системой обработки почты. В UUCP среде, почта обычно транспортируется с помощью команды rmail, передовая ей адрес получателя и само сообщение. Rmail отправляет сообщение соседнему хосту, и так далее, пока оно не достигнет места назначения. Мы будем рассматривать это подробно в главе 14 ..
Новости(News) могут лучше всего быть описаны как распределенная система информационного табло. Наиболее часто, этот термин относится к Usenet Новостям, которые являются наиболее широко известной сетью обмена новостями с приблизительно 120,000 участвующими хостами. Появление Usenet относятся к 1979 г, когда, после выпуска UUCP с новым Unix V7, три студента предложили идею всеобщего обмена информации в пределах Unix сообщества. Они создали несколько скриптов, которые стали первой news системой. В 1980, эта сеть связывала duke, unc и phs, в двух Университетах на Севере Каролины. И Usenet в конечном счете рос и рос. Хотя она появилась как uucp-основанная сеть, она не могла ограничиваться только одним типом сети.
Основная единица информации - статья (article), которая может быть отправлена по почте к иерархии newsgroup(группе новостей) посвященных определенным темам. Большинство участков получают только некий набор newsgroup, чей общий объем статей за день составляет в среднем 60 МБ.
В мире UUCP, новости вообще посылаются через UUCP связь, собирая все статьи от требуемых групп и упаковывая их в несколько партий, которые посылаются требуемому участку, где они передаются команде rnews для распаковки и дальнейшей обработки.
Наконец, UUCP предоставляет доступ к большому количеству участков, которые предлагают свободный доступ. Вы можете попасть на них дозвонившись до них и соединившись с ними с помощью UUCP, как гость, и скачивать с них файлы расположенные в общедоступной области архива. Пользователь с правами гостя часто имеет имя и пароль типа uucp/nuucp.
Как набирать номер - файл dial
Файл dial описывает способ, которым используются различные программы набора номера . Традиционно, переговоры UUCP программ набора номера быстрее чем модемы, потому что раньше было обычной практикой иметь одно (дорогое) автоматическое устройство набора, обслуживающее целый набор модемов. Сегодня большинство модемов имеют встроенную поддержку набора, так что это различие становится более размытым. Однако различные программы набора номера или модемы могут требовать различной настройки. Вы можете описать каждый из них в файле dial. Куски в файле dial начинаются с команды dialer, которая определяет имя программы набора номера. Наиболее важная часть - дружеская беседа модема(modem chat), определяется командой chat. Подобно дружеской беседе входа в систему(login chat), она состоит из последовательности строк uucico, посылаемых программе набора номера и ответов, которые требуется получить. Они обычно используются, чтобы сбросить модем к известному состоянию, и набирать номер.Вот пример для Hayes-совместимого модема:
# NakWell modem; connect at high speed dialer nakwell # dialer name chat "" ATZ OK\r ATH1E0Q0 OK\r ATDT\T CONNECT chat-fail BUSY chat-fail ERROR chat-fail NO\sCARRIER dtr-toggle true
Дружеская беседа модема начинается с "", пустой ожидают строку. Cледовательно uucico пошлет команду (ATZ) сразу же. ATZ - команда Hayes для сброса модема. Затем uucico ждет, пока модем не послал OK, и посылает следующую команду, которая выключает локальный ECHO, и т.п.. После того, как модем возвращает OK снова, uucico посылает команду набора (ATDT). Escape-последовательность \T в этой строке заменяется на номер телефона, получаемый из файла sys. Uucico затем ждет, пока модем не возвратит COONECV, что говорит о том,что соединение с удаленным модемом было установлено успешно.
Часто модем будет не в состоянии соединиться с удаленной системой, например, если другая система говорит с кем -то еще и линия занята. В этом случае, модем вернет сообщение об ошибке, указывающее на причину отказа. Дружеская беседа модема не способна обнаружить такие сообщения; uucico будет ждать требуемую строку пока не выйдет время ожидания. В файле регистрации UUCP(log file) будет записано "timed out in chat script" вместо истинной причины. Однако, Taylor UUCP позволяет Вам сообщить uucico об этих сообщениях, используя chat-fail команду как показано выше. Когда uucico обнаруживает chat-file строку при выполнении дружеской беседы модема(modem chat), то прерывает обращение, и регистрирует сообщение об ошибках в файле регистрации UUCP(файле log). Последняя команда в примере, показанном выше говорит UUCP переключить DTR строку перед стартом дружеской беседы модема. Большинство модемов может быть сконфигурировано так , чтобы продолжить -ловушку при обнаружении изменений в DTR строке, и перейти в командный режим. (10)
Как Передается Почта?
Вообще, Вы устанавлиаете почту, используя интерфейс подобный mailx; или более сложный подобно elm, mush, или pine. Эти программы называются средствами пользователя почты, или MUA для краткости. Если Вы посылаете сообщение почты, программа интерфейса будет в большинстве случаев вручать его другой программе, которая называется средством транспорта почты, или MTA. На некоторых системах, имеются различные средства транспорта почты для локальной и отдаленной почты, на других, имеется только одно. Команда для отдаленной обычно называется rmail, для другой - lmail (если она существует). Локальное получение почты, конечно, больше чем конкатенация входящего сообщения к mailxbox получателя. Обычно, локальный MTA поймет совмещение имен (установка локальных адресов получателя, указывающих на другие адреса), и пересылку (переназначение почты пользователя к некоторому другому адресату). Также, сообщения, которые не могут быть переданы, должны обычно быть bounced, то есть возвращенны отправителю наряду с некоторым сообщением ошибки. Для отдаленного получения, используемое программное обеспечение зависит от характера связи. Если почта должна быть передана по сети, используя TCP/IP, обычно используется SMTP. SMTP замещает Простой Протокол передачи Почты, и определен в RFC 788 и 821 RFC. SMTP обычно соединяется с машиной получателя непосредственно. В UUCP сетях, почта непосредственно не будет обычно передана, но будет послана на главную ЭВМ адресата рядом систем промежуточного звена. Чтобы посылать сообщение по UUCP, MTA будет обычно выполнять rmail на системе пересылки, используя uux, и подавать это сообщение на стандартном вводе. Так как это выполняется для каждого сообщения отдельно, это может производить значительную загрузку главного узлового хаба почты, также как сотни малых файлов, занимающих непропорциональное количество дискового пространства. (2) Некоторые MTA следовательно позволяют Вам собирать отдельные сообщения для отдаленной системы в одиночном командном файле. Командный файл содержит команды SMTP, которые локальная главная ЭВМ обычно выдала бы, если бы использовалось прямое SMTP соединение. Это называется BSMTP, или пакетировка SMTP. Пакет передается программе rsmtp или bsmtp на отдаленной системе, которая будет проиведет ввод, как будто произошло нормальное SMTP соединение.
Как Работает Маршрутизация?
Процесс направления сообщения на главную ЭВМ получателя называется маршрутизация. Кроме нахождения пути от пункта посылки до адресата, это включает проверку ошибок также как оптимизацию стоимости и быстродействие.
Имеется большое различие между UUCP способом маршрутизации дескрипторов пункта, и способром, которым делает пункт Internet. В Internet, основная работа направления данных на главную ЭВМ получателя (если только известен адрес IP) выполнен IP уровнем работы с сетями, в то время как в UUCP зоне, маршрут должен быть обеспечен пользователем, или сгенерироваться средством передачи почты.
Как сказать UUCP о других системах - sys Файл
Файл sys описывает системы, о которых ваша машина знает. Anentry представляется ключевым словом системы; последующий выстраивает в линию к следующей директиве системы, детализируют параметры, специфические для того места. Обычно, вход системы определит параметры типа номера телефона и дружеской беседы входа в систему. Параметры перед самими первыми значениями по умолчанию набора строки системы, используемыми для всех систем. Обычно, Вы установите протокол paramters и т.п. в разделе значений по умолчанию.
Наиболее важные элементы записи подробней описаны ниже .
Как в Usenet Обрабатывают Новости?
Сегодня, Usenet вырос до огромных размеров. Узлы, которые несут все netnews обычно передают что - нибудь вроде несерьезных шестидесяти мегабайтов в день. (2) Конечно это требует намного больше чем обмен файлами. Так что давайте рассмотрим способ, которым большинство системах Unix обрабатывает Usenet новости. Новости распределены через сеть различными transports. Как историческая среда используется UUCP, но сегодня основной траффик несет абонент Internet. Используемый алгоритм маршрутизации называется лавинной маршрутизацией: Каждый пункт поддерживает ряд связей к другому абоненту. Любая статья, сгенерированная или полученная локальной системой новостей будет послана к ним. Чтобы отличать статьи и распознавать дубликаты, Usenet статьи должны нести ID сообщения (заданный в поле заголовка Message-ID:), которое объединяет имя пункта регистрации и серийный номер в " ''. Для каждой обработанной статьи, система новостей регистрирует ее ID в файл хронологии, в котором проверяются все прибывающие статьи. Явное число статей обычно требует, чтобы к вышеупомянутой схеме были сделаны уточнения. На сетях UUCP, обычто статьи за период времени объединяются в одиночный файл, который сжимается и посылается к отдаленному пункту. Это вызывается, пакетирование. Абонент, которые находятся в Internet вообще полагается на TCP/IP программное обеспечение, которое использует Сетевой Протокол передачи Новостей, NNTP. Он передает новости между узлами и обеспечивает Usenet доступ к отдельным пользователям.
Клиентская Сторона NIS
Если Вы знакомы с записью или перенесением приложений сети, Вы обязательно заметите, что большинство NIS отображений, перечисленных выше соответствуют библиотеке функций в библиотеке C. Например, чтобы получить passwd информацию, Вы используете getpwnam (3) и getpwuid функции (3) которая возвращает информацию счета, связанная с данным именем пользователя или численной идентичностью пользователя. При нормальных обстоятельствах, эти функции будут выполнены при запросе по на стандартном файле, типа /etc/passwd.
Nis-знающяя реализация этих функций, однако, будет модифицированна, и место обращения RPC для того, чтобы иметь NIS сервер для поиска имен пользователя или идентичность. Это случается полностью с приложением. Функция может также "конкатенировать " NIS отображение или " заменить " первоначальную картотеку с этим. Конечно, это не относится к реальной модификации файла, это только означает то, что он появляется к приложению как если бы файл был бы заменен или конкатенирован.
Для ттадиционных NIS реализаций, там использовались общие условия, относительно которых замененные отображения, и которые были конкатенированы к исходной информации. Некоторые, подобно passwd отображениям, требуемым kludgy modifications картотеки passwd, который, когда выполнен неправильно, обнаружил бы защиту. Чтобы избежать этого pitfalls, NYS использует общую схему конфигурации это определяет, использует ли частное множество клиентских функций первоначальную карто и в каком порядке. Это будет описанный позже.
| |
Команды Модема.
Имеется ряд rоманд, для которых dip обеспечивает конфигурацию вашей последовательной линии и модема. Некоторые из них - очевидны, такие как порт, который выбирает последовательный порт, и быстродействие, биты данных, стоповые биты, и четность, которые устанавливают общие параметры линии.
Команда модема выбирает тип модема. В настоящее время, единственый поддерживаемый тип - HAYES. Вы должны обеспечить dip типом модема, или он откажется набирать номер и выполнять reset команды. Reset команда посылает reset строку на модем; используемая строка зависит от избраннпго вами типа модема. Для Hayes-совместимых модемов, это - ATZ.
Flush code может использоваться для того, чтобы убрать все реакции, которые модем посылает so far. Иначе chat script мог бы быть спутанным, потому что он читает OK реакции из более ранних команд.
Команда init выбирает initialization строку, которую нужно набрать перед набором номера. Значение по умолчанию для Hayes модемов - "ATE0 Q0 V1 X1'', которая включает отображение на экране команд и long result code, и выбирает набор вслепую (нет проверки тона шкалы).
Команда dial в конце посылает initialization строку на модем и набирает номер системы. Заданная по умолчанию dial команда для Hayes модемов - ATD.
Коммуникационное программного обеспечения для модемной связи
Имеются ряд коммуникационных пакетов доступных для Linux. Многие из них -- это терминальные программы, которые позволяют пользователю на брать номер другого компьютера и работать как будто Вы сидите перед простым терминалом.
Традиционная терминальная программа для Unix -- kermit. Имеются более удобные программы, которые поддерживают список телефонных номеров, языки для написания скриптов запросов и описания входа в удаленные системы, и т.д.. Один из них -- minicom, который близок к некоторый терминальным программам для DOS. Имеются также Х-основанные пакеты коммуникаций, например seyon.
Также, доступны несколько linux-основанных BBS пакетов для людей, которые хотят управлять системой информационных табло. Некоторые из этих пакетов могут быть найдены на sunsite.unc.edu в /pub/Linux/system/Network.
Кроме терминальных программ, имеется также программное обеспечение, которое использует последовательную связь в не интерактивном режиме для транспортировки данных к или от вашего компьютера. Преимущество этой техники в том, что требуется гораздо меньше времени, чтобы загрузить несколько дюжины килобайт автоматически, чем это мог бы отнять у Вас при чтении вашей почты интерактивно в некотором почтовом ящике на удаленной машине или при просмотре интересной информации на BBS. С другой стороны, она требует больше места на диске из-за большого количества бесполезной информации, которую Вы обычно получаете.
Основной представитель этого вида программного обеспечения -- UUCP. UUCP -- это набор программы, которые позволяют копировать файлы с одного хоста на другой, выполнять программы на отдаленном хосте, и т.д.. Он часто используется для транспортировки почты или новостей в частных сетях. Ian Taylor's UUCP пакет, который работает под Linux, описан в следующей главе. Но есть и другое недиалоговое комуникационное программное обеспечение, например, используемое в Fido. Порты Fido приложений подобно ifmail также доступны.
SLIP находится где-то посередине и используется как диалоговыми так и не-диалоговыми приложениями. Множество людей используют SLIP чтобы дозвонится до университетской сети или какого-либо другого общественного SLIP сервера, чтобы управлять FTP сессиями, и т.д.. SLIP может также использоваться для постоянной или полупостоянной связи сеть-сеть, хотя здесь полезен скорее ISDN.
Компиляция smail
Если Вы знаете наверняка, что smail испытывает недостаток TCP поддержки сети, Вы должны получить исходник. Он возможно включен в ваше распределение, если Вы получили его через CD-ROM, иначе Вы можете получать его из сети через FTP. При компилировании smail, лучше всего работать с набором файлов конфигурации из newspak распределения Vince Skahan's. Чтобы компилировать в TCP драйвере работы с сетями, Вы должны установить макркоманду КОНФИГУРАЦИИ ДРАЙВЕРА в conf/EDITME файле к или bsd-сети или arpa-сети. Вышеупомянутые подходят для инсталляции LAN, но Internet требует arpa-сети. Различие между этими двумя - в том, что последний имеет специальный драйвер для BIND обслуживания, которое способно распознать записи MX.
Конфигурация интерфейса для IP
После установки аппаратных средств, как было объяснено в предыдущей главе, Вы должны дать знать об этом сетевому программному обеспечению. Пара команд используются чтобы конфигурировать сетевые интерфейсы, и инициализировать таблицу маршрутизации. Эти задачи выполняются обычно в rc.inet1 скрипте, при загрузке системы. Эти команды называются ifconfig ( где "если" относится к интерфейсу ), и route.
fconfig используется чтобы сделать интерфейс доступным для ядра, что включает в себя назначение IP адреса и других параметров и формирование интерфейса, также известное как "taking up". Активность означает, что ядро будет посылать и получить IP datagrams через интерфейс. Самый простой путь установки
# ifconfig interface ip-address
Который связывает ip-адрес с интерфейсом и активирует его. Все другие параметры устанавливаются по умолчанию Например, маска подсети установленная по умолчанию получена из сетевого класса IP адреса, типа 255.255.0.0 для класса B адрес. ifconfig описан более подробно в конце этой главы.
route позволяет Вам добавлять или устранять маршруты из таблицы маршрутизации. Это может быть использовано так
route [add|del] target
Где add и del аргументы определяют добавлять или удалять маршрут к таблице.
Конфигурация Newsreader
Newsreaders предназначены, чтобы предложить функциональные возможности, которые позволяют пользователю обращаться к функциям системы новостей легко, подобно регистрации статей, или просматривать содержимое newsgroup удобным способом. Качество этого интерфейса предмет бесконечных споров. Имеется пара newsreaders, которые были пренесены на Linux. Ниже я буду описывать базисную установку для трех наиболее популярных, а именно tin, trn, и nn. Один из наиболее эффективных newsreaders это
$ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more
Это - способ, которым Unix читает новости. Большая часть newsreaders, однако, является намного более сложной. Они обычно предлагают полноэкранный интерфейс с отдельными уровнями для отображения всех групп, на которые пользователь подписался, для отображения краткого обзора всех статей в одной группе. И для индивидуальных статей. В уровне newsgroup, большинство newsreaders отображает список статей, показывая их подчиненную строку, и автора. В больших группах, это невозможно для пользователя, чтобы следить за статьями в отношении друг друга, хотя возможно идентифицировать ответы на более ранние статьи. Ответ обычно повторяет первоначальную тему статьи, начинаясь с " " Re: ''. Здесь, мы не будем детализировать то, как интерфейсы пользователя сформированы. Все newsreaders, в настоящее время доступные для Linux имеют хорошую функцию справки, так что Вы должны исследовать дальше сами. В следующем, мы будем иметь дело только с административными задачами. Большинство их касается создания баз данных и учет.
Конфигурация nn
Nn написал Kim F. Storm, он утверждает, что цель newsreader не состоит в том, чтобы читать новости. Имя расшифровывается как " Нет Новостей '', и девиз - "Отсутствие новостей - хорошая новость. А nn лучше." Чтобы достигать этой честолюбивой цели, nn поставляется с большим выбором инструментальных средств сопровождения, которые не только позволяют проводить отсеивание, но также протяженные проверки на непротиворечивости этих баз данных, учет, сбор статистики использования, и ограничений доступа. Имеется также программа администрации, называемая nnadmin, который позволяет Вам выполнять эти задачи в интерактивном режиме. Nn диспетчер базы данных, называется nnmaster. Он обычно выполняется как daemon, начинается из команды rc.inet2 или rc.news. Он вызывается как
/usr/local/lib/nn/nnmaster -l -r -C
Это дает возможность отсеиванию для всех newsgroups, представленных в вашем файле active. Также, Вы можете вызывать nnmaster периодически из cron, давая ему список групп. Этот список очень похож на список в файле sys, за исключением того, что он использует пробелы вместо запятых. Вместо группы fake для всех, пустой аргумент "" должен использоваться, чтобы обозначить все группы. Типовой вызов
# /usr/local/lib/nn/nnmaster !rec.games.go rec comp
Обратите внимание, что порядок значителен: крайная левая спецификация группы, которая соответствует, всегда выигрывает. Таким образом, если мы поместили !rec.games.go после rec, все статьи из этой группы отсеились. Nn предлагает отдельные методы удалить устаревшие статьи из баз данных. Первое, чтобы модифицировать базу данных, развертывая каталоги групп новостей и отбрасывая входы, чья соответствующая статья является больше не доступной. Это - заданная по умолчанию операция, полученная вызовом nnmaster с -E опцией. Приемлемо быстро, если вы не делаете это через NNTP. Метод 2 ведет себя точно подобно заданному по умолчанию устареванию, выполненному mthreads, в котором она только удаляет те входы, которые относятся к статьям, чье число ниже метки ожидания в файле active. Это можно допускать, используя -e опцию. В заключение, третья стратегия должна отбросить всю базу данных и переоформить все статьи. Это может быть выполнено, давая -E3 к nnmaster. Список групп, которые устарели дется -F опцией в том же самом режиме как выше. Однако, если Вы имеете nnmaster, выполняющийся как daemon, Вы должны уничтожить его (используя -k) прежде, чем может произойти устаревание, и перезапускать его с первоначальными опциями. Таким образом соответствующая команда, чтобы выполнить expire на всех группах, использующих метод 1:
# nnmaster -kF "" # nnmaster -lrC
Имеются много больше флагов, которые могут использоваться, чтобы подстроить поведение nn. Если Вы волнуетесь относительно удаления плохих статей или сборников статей, читайте nnmaster страницу руководства. Nnmaster полагается на файл, именованный GROUPS, который расположен в /usr/local/lib/nn. Если он не существует первоначально, он будет создан. Для каждой newsgroup, он содержит строку, которая начинается с имени группы, необязательно сопровождаемого временной меткой, и флагами. Вы можете редактировать эти флаги, чтобы дать возможность некоторому поведению для рассматриваемой группы, но Вы не можете изменять порядок, в котором группы появляются. Флаги и их эффекты детализированы в nnmaster странице руководства, также.
Конфигурация tin
Наиболее универсальный newsreader - tin. Он написан Iain Lea и - свободно построен на более старом newsreader, именованном ТАСС. На 486DX50, он берет приблизительно 30 секунд, чтобы найти 1000 статей при чтении непосредственно с диска. Над NNTP к загруженному серверу новостей, это было бы что-нибудь более 5 минут. Вы можете уточнить это, регулярно модифицируя ваш индексный файл с -u опцией, или вызывая tin с - U опцией. Обычно, tin формирует дамп баз данных в исходном каталоге пользователя ниже .tin/index. Это может однако быть дорогостояще в терминах ресурсов, так чтобы Вы хотели хранить одиночную копию их в центральном расположении. Это может быть достигнуто, делая tin setuid к новостям, например. Тогда tin будет хранить, все подходящие базы данных ниже /var/spool/news/.index. Для любого файла access или Escape оболочки, это переустановит эффективный универсальный идентификатор к реальному универсальному идентификатору пользователя, который вызвал это. Версия tin, включенного в некоторые распределения Linux не имеет никакой компилируемой поддержки NNTP. Когда вызывается как rtin или с -r опцией, tin пробует соединяться с NNTP сервером, заданным в /etc/nntpserver файле или в NNTPSERVER переменной среды. Nntpserver файл просто содержит имя сервера в одиночной строке.
Конфигурирование elm
Elm замещает " электронную почту " и является одним из наиболее приемлемых инструментальных средств Unix. Она обеспечивает полноэкранный интерфейс с возможностью справки. Мы не будем обсуждать, здесь как использовать elm, и остановимся только на опциях конфигурации. Теоретически, Вы можете выполнять неконфигурированный elm, и все работает хорошо ---, если Вы очень удачливы. Но имеются несколько опций, которые должны быть установлены. При запуске elm читает набор переменных конфигурации из elm.rc файла в /usr/lib/elm. Затем, она будет пытаться читать файл .elm/elmrc в вашем исходном каталоге. Вы обычно не пишите этот файл самостоятельно. Он создается когда Вы выбираете "сохранить опции" в меню опций elm. Набор опций для частного elmrc файла также доступен в глобальном elm .rc файла. Большинство установок в вашем частном elmrc файле отменяет таковые глобального файла.
Конфигурирование Gateway
Отконфигурировать машину для передачи пакетов между двумя Ethernet довольно просто. Вернемся к vlager, который оборудован двумя Ethernet платами, каждая из них связанна с одной из двух сетей. Все, что Вы должны сделать отконфигурировать оба интерфейса отдельно, дав им их соответствующий IP адрес, и это все.
Весьма полезно добавлять информацию относительно двух интерфейсов к файлу хостов путем показанным ниже, так чтобы иметь удобные имена для них:
191.72.1.1 vlager vlager.vbrew.com 191.72.1.1 vlager-if1 191.72.2.1 vlager-if2
Последовательность команд для создания двух интерфейсов:
# ifconfig eth0 vlager-if1 # ifconfig eth1 vlager-if2 # route add brew-net # riute add wine-net
Конфигурирование ядра
Большинство Linux распространяются вместе с загрузочными дискетами, работующими со всеми основными типами аппаратных средств PC. Это означает что ядро на этих дискетах имеет все виды драйверов, многие из которых Вам никогда не пригодятся, но занимают драгоценную память системы потому что части ядра не свопируются. Поэтому, Вы должны собрать ваше собственное ядро, включая только необходимые Вам драйвера.
При управлении Linux системой, Вы должны быть знакомы со строением ядра. Основы этого объясняются в "Installation and Getting Started" написанной Matt Welsh, который является также частью проекта Linux документации. Потому, в этой секции мы будем обсуждать только те стороны конфигурации Linux, которые относятся к сети.
При запуске make config, сначала Вас спрашивают общие вопросы конфигурации, например хотите ли Вы в ядре иметь математический эмулятор или нет, и т.д.. Один из этих вопросов -- хотите ли Вы поддержку TCP/IP сети. Вы должны ответить y, чтобы получить ядро способное работать с сетью.
Конфигурирование PPP сервера
При запуске pppd, поскольку сервер - только сущность добавления соответствующей опции к командной строке. Было бы идеальным, если Вы создали бы специальный account, скажем ppp, и дадите этому script или программе как оболочке входа в систему, которая вызывает pppd с этими опциями. Например, Вы бы добавили следующую линия к /etc/passwd:
" ppp:*:500:200:Public PPP Account:/tmp:/etc/ppp/ppplogin
Конечно, Вы можете захотеть использовать более универсальные uids и gids чем те, что показанны выше. Вы также были бы должны установить пароль для вышеупомянутого account, использующего команду passwd.
Ppplogin script может быть выглядить следующим образом:
#!/bin/sh # ppplogin - script to fire up pppd on login mesg n stty -echo exec pppd -detach silent modem crtscts
Команда mesg блокирует других пользователей, чтобы записать к tty, используя, на пример, команду записи. Команда stty выключает знако-отображение на экране. Это необходимо, потому что иначе peer все посылал бы используя отображение на экране. Наиболее важная опция pppd, данная выше -detach, потому что это предотвращает pppd от отсоединения из управления tty. Если мы не точно определим эту опцию, это будет идти к предпосылке, создания shell script exit. Это было к зависанию. Silent опция заставляет pppd ждать, пока он не получит блок от системы вызова прежде, чем это начинает посылать. Это предотвращает от блокировки по времени, когда система вызова медлена в обслуживании PPP наблюдать DTR линию, чтобы видеть, понизил ли peer связь, и crtscts включает аппаратное рукопожатие.
Помимо этих опций, Вы могли бы захотеть вынудить некоторый вид опознания, например, точно определяя auth на командной строке pppd's, или в глобальном файле опций. Руководство также обсуждает более специфические опции для вкл. или выкл. индивидуальных опознавательных протоколов.
Конфигурирование r команд
Имеется ряд команд для выполнения команд на remote хосте. Они - rlogin, rsh, rcp и rcmd. Они все порождают оболочку на remote хосте и позволяют пользователю выполнять команды. Конечно, клиент должен иметь account на хосте, где команда должна быть выполнена. Таким образом все эти команды выполняют процедуру разрешения. Обычно, клиент сообщяет название входа в систему пользователя на сервер, который
# # /etc/rpc - miscellaenous RPC-based services # portmapper 100000 portmap sunrpc rstatd 100001 rstat rstat svc rup perfmeter rusersd 100002 rusers nfs 100003 nfsprog ypserv 100004 ypprog mountd 100005 mount showmount ypbind 100007 walld 100008 rwall shutdown yppasswdd 100009 yppasswd bootparam 100026 " ypupdated 100028 ypupdate
Рис. 16. A sample /etc/rpc file.
по очереди запрашивает пароль, который утвержден обычным способом.
Иногда, однако, желательно ослабить проверки разрешения для некоторых пользователей. Например, если Вы часто должны регистрироваться в других машинах на вашей локальной вычислительной сети, Вы могли бы захотеть быть признанным без ввода пароля каждый раз.
Отключение разрешения желательно только на малом числе хостов, чьи базы данных паролей синхронизированы, или для малого числа из привилегированных пользователей, которые должны обращаться к многим машинам для административной причины. Всякий раз, когда Вы хотите позволять людям регестрироваться на вашем хосте при необходимости точно определить идентичность входа в систему или пароль, удостоверитесь, что Вы не делаете ошибку предоставляя доступ кому-нибудь еще.
Имеются два способа блокировать разрешение, для того чтобы проверить r команды. Каждый - для супер пользователя, чтобы позволить некоторым или всем пользователям зарегестрироваться без пароля. Этот доступ управляется картотекой вызываемой /etc/hosts.equiv. Это содержит список множеств и имен пользователя, которые рассматриваются эквивалентными пользователям на локальном хосте. Альтернативная опция - для пользователя - предоставление другим пользователям на некоторых х быть перечислены в файле.rhosts в директории пользователя. Для соображений безопасности, эта картотека должна принадлежать пользователю или супер пользователю, и не должна быть symbolic link, иначе это будет игнорирован
Когда клиент запрашивает r обслуживание, ее хост и название пользователя ищются в файле /etc/hosts.equiv, и затем в файле.rhosts пользователя. Как - пример, предположим, что janet работает " гауссе и пытается зарегестрироваться в joe' s account на euler. Следуя далее, мы обратимся к Janet как клиентскому пользователю, и к Joe как к Локальному пользователю. Теперь, когда типы Janet
$ Rlogin -l joe euler
на гауссе, сервер сначала проверил бы hosts.equiv (4), предоставлен ли Janet свободный доступ, и если нет, то он попробует просмотреть.Rhosts в исходном каталоге joe's.
Файл hosts.equiv на euler походит на это:
gauss euler -public quark.physics.groucho.edu andres
Запись состоит из названия хоста, необязательно сопровождаемого именем пользователем. Если название множества появляется везде, то все пользователи от того множества будут допущены к их локальным acount без любых проверок. В вышеизложенном примере, Janet позволили бы зарегестрироваться в ее account janet когда выходит из гаусса, и тот же самый применяется любому другому пользователю за исключением root Однако, если Janet захочет зарегестрироваться как joe , пароля как обычно.
Если название хоста сопровождается названием пользователя, как и в последней линии вышеупомянутой типовой картотеки, то этому пользователю будет дан пароль-свободный доступ ко всем accont за исключением accony\t root.
Имени хоста может также предшествовать знак "минус", как на записи "-общий". Это требует разрешения на все account на общем, независимо от того, что пользователи единичного права предоставляют в их картотеке.rhosts.
3. В NFS среде окружения, Вы были бы должны дать этому защиту 444, потому что супер пользователь часто ограничивает в доступе к файлам на дисках, установленных через NFS. 4. Заметить, что файл hosts.equiv не обыскан когда кто -то делает попытку к регистрации как root.
Форматфайла.rhosts идентичен таковому hosts.equiv, но значение немного отлично. Рассмотрите Joe's.rhosts файл на Euler:
chomp.cs.groucho.edu gauss janet
Первая запись допускает, что joe освобождают acess при регистрации из Chomp.cs.groucho.edu, но не воздействуют на права любого другого account на euler или chomp. Вторая запись - небольшое изменение этого, в котором предоставляется janet свободный доступ к account Joe при регистрации из гаусса.
Заметьте, что название хоста клиента получено обратным отбором. Адрес вызывающего оператора к названию, так, чтобы эта особенность failed с хостами к решающему устройству. Имя хоста клиента рассматривается в соответствии с названим в хостах зарегистри рованных в одном из следующих случаев:
+ Каноническиое имя хоста клиента (не псевдоним) буквально соответствует имени хоста в файле.
+ Если имя хоста клиента - полностью квалифицированно, то название области (типа возвращенного решающим устройством, когда Вы имеете выполняющую DNS), не соответствует имени хоста в множествах файлов, это сравнивается с тем именем хоста, расширенным с локальным названием области.
Конфигурирование сервера поиска --- resolv.conf
При конфигурировании библиотеки решающего устройства, для того чтобы использовать BIND обслуживание для поиска хостов, вы обязательно должны сообщить, какое имя сервера вы используете. Существует отдельный файл, предназначенный специально для этого, называемый resolv.conf. Если этот файл не существует или пуст, то решающее устройство примет имя сервера, определенного для вашего локального хоста.Если Вы запускаете сервер на Вашем локальном хосте, то Вы должны установить это имя отдельно, как это сделать, будет объяснено позже в следующем разделе. Если в локальпой уети есть возможность использовать существующее имя сервера, то этому должно отдаваться предпочтение. Самая важная опция в resolv.conf - nameserver, которая дает IP адрес используемого сервера. Если Вы определите несколько имен серверов используя nameserver опцию несколько раз, то они будут проверяться в данном порядке. Поэтому Вы должны поместить наиболее надежный сервер первым. Постоянно, могут поддерживаться не более трех серверов. Если опция nameserver не дана, то решающее устройство попытается соединиться с сервером на локальном хосте. Две других опции, domain и search имеют дело с заданными по умолчанию областями, которые беруться из имени хоста, если BIND не может решить это с первого запроса. Опция search определяет список названий областей, которые необходимо проверить. Пункты списка отделены пробелом или табуляцией. Если опция search не дана, то заданный по умолчанию список поиска создается из локального имени области, используя само название области непосредственно, плюс все родительские области вплоть до root. Локальное название области может быть дано при использовании оператора области; если ни один из них не дан, то решающее устройство получит его через getdomainname(2) системный вызов.
Если это уж слишком для вас, рассмотрите пример resolv.conf файла для Virtual Brewery:
# /etc/resolv.conf # Our domain domain vbrew.com # # We use vlager as central nameserver: nameserver 191.72.1.1
При определении имени vale, решающее устройство искало бы его и в случае неудачи, vale.vbrew.com, и vale.com.
Конфигурирование TCP/IP сети
В этой главе, мы пройдем все шаги необходимые для создания TCP/IP сети на вашей машине. Начнем мы с назначения IP адресов и будем медленно проходить весь путь конфигурирования интерфейсов TCP/IP , и в конце рассмотрим несколько инструментов, которые весьма удобны для решения проблем с установкой сети.
Большинство работ охваченных этой главой, Вы должны сделать только один раз. Впоследствии, Вы будете изменять конфигурационные файлы только в случае добавлении новой системы к вашей сети, или когда Вы повторно полностью переконфигурируйте вашу систему. Некоторые из команд конфигурирования TCP/IP, однако, должны выполнятся каждый раз когда загружается система. Это обычно делает /etc/rc скрипт.
Обычно, специфическая сетевая часть этой процедуры содержится в скрипте названном rc.net или rc.inet. Иногда, Вы будете также видеть два скрипта названные rc.inet1 и rc.inet2, где вышеупомянутый скрипт инициализирует сетевую часть ядра, в то время как последние запускают основные сетевые приложения. Дальше я буду твердо придерживаться этой концепции.
Ниже, Я буду обсуждать действия выполняемые в rc.inet1, в то время как приложения будут описаны в более поздних главах. После окончания этой главы, Вы должны установить последовательность команд, которые должным образом конфигурируют TCP/IP сеть на вашем компьютере. Вы можете заменить любые команды в rc.inet1 вашими командами, удостоверится что rc.inet1 выполняется при запуске системы, и перезагрузить вашу машину. Сетевые rc скрипты, которые вы получили наряду с вашим Linux должны быть хорошим примером.
Краткий обзор протоколов
Поскольку UUCP используется поверх различных типов соединений, типа последовательных строк, TCP, или даже X. 25, специфические протоколы низкого уровня необходимы. Кроме того, отдельные реализации UUCP представили различные протоколы, которые делают приблизительно ту же самую вещь(дело). Протоколы могут быть разделены на две категории: потоковые и пакетные протоколы. Первые передают файл в целиком, возможно вычисляя при этом контрольную сумму . Нет непроизводственных затрат, но требуется надежное соединение,так как любая ошибка потребует повторной передачи файла. Эти протоколы обычно используются над соединениями TCP, но не подходят для использования над телефонными линиями. Хотя современные модемы хорошо исправляют ошибки, нельзя обнаружить ошибку между вашим компьютером и модемом. С другой стороны, пакетные протоколы разбивают файл на отдельные куски равного размера. Каждый пакет посылается и получается отдельно, контрольная сумма вычисляется, и квитирование возвращено датчику. Чтобы делать это более эффективный, протоколы подвижного окна было изобретено, которые учитывают ограниченный номер (окно) ожидающого обработки acknoledgements в любое время. Это значительно уменьшает время ожидания uucico в течение передачи. Несмотря на это, относительно большие непроизводительные затраты( по сравнению с потоковым протоколом), делают пакетный протокол неэффективным для использования поверч TCR. Ширина пути данных также дает различие. Иногда посылка восьмибитовых символов над последовательным соединением невозможна, например, если соединение прсматривает глупый сервер терминала. В этом случае, символы с восьмым набором битов должны цитироваться на передаче. Когда Вы передаете восьмибитовые символы над соединением с семью линиями, они должны быть Согласно предположениям с самым плохим случаем, это удваивает количество данных, которые будут переданы, хотя сжатие, выполненное аппаратными средствами может компенсировать этот. Строки, которые могут передавать произвольные восьмибитовые символы, обычно называются восьмибитовыми чистыми. Дело обстоит так для всех соединений TCP, также как для большинства соединений модема.
Следующие протоколы доступны с Taylor UUCP 1.04:
g - наиболее общий протокол и может быть понятым виртуально всеми uucico's.Он делает полную проверку ошибок и следовательно хорошо подходит для плохих телефонных линий. g требует восьмибитового чистого соединения.Это - пакет-ориентированный протокол, который использует методику подвижного окна.
i - является двунаправленным пакетным протоколом, который может посылать и получать файлы одновременно. Требуется дуплексное соединение и восьмибитовый путь данных.Он в настоящее время распознается только Taylor UUCP.
t - протокол, предназначенный для использования над соединением TCP, или другими, свободными от ошибок. Использует пакеты в 1024 байтов и требует восьмибитового чистого соединения.
e - аналог t, но только потоковый.
f - предназначен для использования с надежным X. 25 соединением. Это потоковый протокол, желателен семибитовый путь данных. Восьмибитовые символы цитируются, что может сделать передачу неэффективной.
G - реализация g-протокола в System V Relgase"4. Также распознается и некоторыми другими версиями UUCP.
а - протокол similiar к ZMODEM. Требуется восьми разрядное соединение, цитируются некоторые управляющие символы подобно XON и XOFF.
Квалификация Hostname
Иногда желательно захватить неквалифицированные hostname (то есть те, которые не имеют имени области) заданные в адресе отправителя или получателя, например при переходе между двумя сетями, где каждая требует полностью квалифицированных имен области. На Internet -UUCP реле, такие hostname должны быть отображены в uucp область по умолчанию. Другие изменения адреса сомнительны. Файл /usr/lib/smail/qualify сообщает smail, которая область определяет путь на который hostname. Входы в файле qualify состоят из hostname в перевом столбце, сопровождаемым именем области. Строки, содержащие знак мусора как первый символ рассматриваются комментариями. Входы ищутся в порядке, в котором они появляются. Если никакого файла qualify не существует, никакая hostname квалификация не выполняется вообще. Специальный hostname * соответствует любому hostname, таким образом допуская Вам отобразить все главные ЭВМ, не упомянутые прежде в заданную по умолчанию область. Это должно использоваться только как последний вход. В Виртуальном Пивоваренном заводе, все главные ЭВМ были установлены так, чтобы использовать полностью квалифицированные имена области в адресах отправителя. Неквалифицированные адреса получателя, как рассматривается, находятся в uucp области, так что необходим только одиночный вход в файле qualify. # /usr/lib/smail/qualify, last changed Feb 12, 1994 by janet # * uucp