Определение Локального Mailer'а
define(LOCAL MAILER DEF, mailers.linux)dnl # mailer for local delivery Большинство операционных систем обеспечивает программу для обработки локального получения почты. Программы такого рода для многих из главных вариантов Unix уже встроены в sendmail binary. В Linux, необходимо явно определить соответствующий локальный mailer, так как такая локальная программа не обязательно предоставлена в распределении, которое вы установили. Это определяется LOCAL MAILER DEF в файле sendmail.m4. Например, можно установить LOCAL MAILER DEF как mailers.linux. Следующий файл должен то быть установлен как mailers.linux в каталоге, указанном LIBDIR. Это явно определяет программу в Mlocal mailer с соответствующими параметрами, чтобы sendmail правильно принимал почту, направленную для локальной системы.
Если Вы не эксперт sendmail, Вы возможно не захотите изменять следующий пример. # -- /usr/local/lib/mail/mailers.linux -- # (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u Имеется также встроенное значение по умолчанию для deliver в Sendmail.mc файле, который включается в файл sendmail.cf. Чтобы определить его, Вы не должны использовать mailers.linux файл и взамен определить следующее в вашем файле sendmail.m4: dnl --- (in sendmail.m4) --- define(LOCAL MAILER DEF, DELIVER)dnl # mailer for local delivery К сожалению, Sendmail.mc принимает, что deliver установлен в /bin, что не так в Slackware1.1.1 (который устанавливает это в /usr/bin). В том случае вы нуждаетесь в фальшивке со связью или переустановить deliver из исходников в /bin.
Определение Локальной Системы
define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com)dnl # names we're known by define(DEFAULT HOST, vstout.vbrew.com)dnl # our primary 'name' for mail Часто, системы желают скрыть их истинное тождество, и служат как ворота почты, или получатют и обрабатывают почту, адресованную на " старые " имена. PSEUDONYMS определяет список всех hostname, для которых локальная система примет почту. DEFAULT HOST определяет hostname, который появится при возникновении сообщений на локальном host.
Ошибкоустойчивость решающего устройства.
Если Вы запускаете LAN внутри большей сети, Вы непременно должны использовать центральные сервера, если они доступны. Преимущество этого состоит в том, что они разработают богатые кэши, так как все запросы направлены к ним. Эта схема имеет недостаток: когда сгорел базовый кабель в нашем университете при пожаре, невозможно было дальше работать на LAN нашего отдела, потому что решающее устройство не могло достичь какого-либо из серверов. Не было login на X-terminals, не было печати на принтерах, и т.д. Хотя это не гоже для университетского городка, опускаться до пожаров, каждый обязан соблюдать технику безопаности, чтобы избежать случаев подобных этим. One - устанавливает локальный сервер, который определяет hostnames из вашей локальной области, и делает вперед все запросы для других hostnames к главным серверам. Конечно, это применимо только тогда, когда Вы используете вашу собственную область. В качестве альтернативы, Вы можете сохранить таблицу сохраненных хостов Вашей области или LAN в /etc/hosts. В /etc/host.conf Вы можете включить "order bind hosts" для того, чтобы решающее устройство вернулась бы к хост файлу, если центральный сервер ослабел или вышел из строя.
Отладка вашей PPP установки
По умолчанию, pppd регестрирует любые предупреждения и сообщения об ошибках к syslog's daemon facility. Вы должны добавить записю " в syslog.conf, которая переназначит его к файлу, или даже к консоли, иначе syslog просто отбросит эти сообщения. Следующая запись посылает все сообщения к /var/log/ppp-log:
daemon.* /var/log/ppp-log
Если ваша PPP установка не работает, при просмотре этого log файла, то он должен дать Вам подсказку, что что-то идет неправильно. Если это не помогает, то Вы можете включить особо отлаживающийся вывод, используя опцию отладки. Это делает pppd log с содержанием из всех управляющих блоков, посланных или полученных к syslog. Все сообщения будут идти к daemon facility.
В заключение, наиболее решительная особенность - отключение kernel-level отладки, вызывая pppd с опцией kdebug. Она сопровождается числовым аргументом, который является поразрядным ИЛИ следующих значений: 1 для общих сообщении отладки, 2 для печати содержания всей входящей HDLC структуры, и 4 для того, чтобы сделать драйвер принтера выходящим на HDLC структуру. Для того, чтобы захватить kernel отлаживающее сообщения, Вы должны также запустить syslogd daemon, кот или klogd daemon. Каждый из них направляет kernel отладку к syslog's kernel facility.
Отображение соединений
Netstat поддерживает множество опции для отображения активных и пассивных гнезда. Опция -t, -u, -w, и -x показывают активные TCP, UDP, RAW , или UNIX гнезда. Если Вы зададите -a флаг, гнезда которые ждут соединения (то есть слушают) также показываются. Это даст Вам список всех серверов которые в настоящее время работают в вашей системе.
Вызов netstat -ta на vlager даст:
$ netstat -ta Active Internet connections Proto Recv-Q Send-Q Local Address Foreign Address (State) tcp 0 0 *:domain *:* LISTEN tcp 0 0 *:time *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED tcp 0 0 *:telnet *:* LISTEN tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED tcp 0 0 *:chargen *:* LISTEN tcp 0 0 *:daytime *:* LISTEN tcp 0 0 *:discard *:* LISTEN tcp 0 0 *:echo *:* LISTEN tcp 0 0 *:shell *:* LISTEN tcp 0 0 *:login *:* LISTEN
Видно, что больше всего серверов просто ждут соединения. Однако, четвертая строка говорит о SMTP соединение с vstout, а шестая линия сообщает о telnet соединение с vbardolino.
При использовании -a флага будут отображаться все гнезда всех семейств.
Отображение статистики интерфейса
Когда вызывается с -i флагом, netstat показывает статистику для сетевых интерфейсов. Если, кроме того, дается -a опция, он будет печатать все интерфейсы представленные в ядре, а не только те, которые были отконфигурированы в настоящее время. На vstaout, вывод от netstat будет напоминать это:
$ netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 0 0 3185 0 0 0 3185 0 0 0 BLRU eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU
MTU и Met поля показывают текущий MTU и метрическое значение для этого интерфейса. RX и TX колонки показывают сколько пакетов были получены или переданы без ошибок (RX-OK/TX-OK), повредились (RX-ERR/TXERR), сколько было потеряно (RX-DRP/TX-DRP), и сколько было потеряно из-за переполнения (RX-OVR/TX-OVR).
Последняя колонка показывает флаги, установленные для этого интерфейса. Здесь используется односимвольная версия флагов, которые печатает ifconfig.
B был установлен широковещательный адрес.
L Этот интерфейс -- loopback устройство
M интерфайс получает все пакеты ( promiscuous способ ).
N Трейлеры избегаются.
O ARP выключен для этого интерфейса.
P Это - point-to-point соединение.
R Интерфейс работает.
U Интерфейс активен.
Отображение таблицы маршрутизации
При вызове netstat с -r флагом, он показывает таблицу маршрутизации. На vstout, он выдаст:
# netstat -nr Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.1 * 255.255.255.255 UH 1 0 50 lo 191.72.1.0 * 255.255.255.0 U 1 0 478 eth0 191.72.2.0 191.72.1.1 255.255.255.0 UGN 1 0 250 eth0
-n опция заставляет netstat печатать адреса как dotted quad IP номера вместо символических имен хостов и сетей. Это особенно полезно когда Вы хотите избежать поисков адреса по сети (например через DNS или NIS сервер).
Вторая колонка вывода netstat показывает gateway маршрутизационную запись. Если gateway не используется, печатается звездочка. Третья колонка "общность" маршрута. Когда дается IP адрес, чтобы найти подходящий маршрут для него, ядро просматривает все записи таблицы маршрутизации, берет побитовое И адреса и genmask и лишь за тем сравнивает результат с целью маршрута.
Четвертая колонка показывает различные флаги, которые описывают маршрут:
G маршрут использует gateway.
U интерфейс, который нужно использовать, работает.
H Только отдельный хост может быть достигнут через данный маршрут. Например, для loopback записи 127.0.0.1.
D устанавливается, если запись таблицы была произведена по приходу ICMP перенаправляемое сообщение ( см. секцию 3.5 ).
M устанавливается, если запись таблицы была изменена ICMP перенапавляемым сообщением.
Ref колонка показывает число ссылок на этот маршрут, то есть сколько других маршрутов (например через gateways) полагаются на присутствие этого маршрута. Последние две колонки показывают время, в течении которого используется запись маршрутизации, и интерфейс, через который посылаются дэйтаграмы.
Пакетирование Статьи
Newsbatches следуют за специфическим форматом, который является тем же самым для Bnews, C News, и INN. Каждой статье предшествует строка:
#! rnews count
Где count - число байтов в статье. Когда используется пакетное сжатие, возникающий в результате файл сжат в целом, и содержит другую строку в соответствии c сообщением, которое нужно использовать для распаковки. Стандартное средство сжатия - упаковщик, который отмечен
#! cunbatch
Иногда, при необходимости посылать пакеты через программное обеспечение почты, которое удаляет, восьмой бит из всех данных, сжатый пакет может быть защищен, используя, что называется c7-encoding; эти пакеты будут отмечены c7unbatch. Когда пакет подан к rnews на отдаленном пункте, он проверяет эти маркеры и обрабатывает пакет соответственно. Некоторые абоненты также используют другие инструментальные средства сжатия, подобно gzip, и предшествует таким файлам с zunbatch взамен. C News не распознает ненормативные заголовки подобно этим; Вы должны изменить исходник, чтобы поддерживать их. В C News, пакетирование статьи выполняется /usr/lib/news/bin/batch/sendbatches, который берет список статей из site/togo файла, и помещает их в отдельный newsbatches. Это должно быть выполнено раз в час или даже более часто, в зависимости от объема траффика. Операция управляется batchparms файлом в /usr/lib/news. Этот файл описывает максимальный пакетный размер, позволенный для каждого пункта, программу пакетирования и необязательную программу сжатия, которую нужно использовать, и транспорт для поставки к этому отдаленному пункту. Вы можете определять параметры пакетирования, также как набор заданных по умолчанию параметров для абонента, не явно упомянутого. Чтобы выполнять пакетирование для специфического пункта, Вы вызываете это как
# su news -c "/usr/lib/news/bin/batch/sendbatches site"
Когда вызывается без аргументов, sendbatches обрабатывает все пакетные очереди. Интерпретация " все " зависит от присутствия заданного по умолчанию входа в batchparms. Если он найден, все каталоги в /var/spool/news/out.going проверяются, иначе, он циклически проходит все входы в batchparms. Обратите внимание, что sendbatches, при просмотре каталога out.going, берет только те каталоги, которые не содержат никакую точку или знак (@) как имена пункта. При установке C News, Вы наиболее вероятно найдете batchparms файл в вашем распределении, который содержит приемлемый заданный по умолчанию вход, так что имеется хорошая возможность не изменять файл. На всякий случай, мы описываем формат. Каждая строка состоит из шести полей, отделяемых пробелами или метками табуляции:
site size max batcher muncher transport
Значение этих полей следующие: site - имя пункта, к которому применяется вход. Togo файл для этого пункта должен постоянно находиться в out.going/togo. Имя пункта /default/ обозначает заданный по умолчанию вход. size - максимальный размер созданных пакетов статей (перед сжатием). Для одиночных статей больших чем этот размер, C News делает исключение и помещает их в одиночный пакет. max - максимальное число пакетов, созданных и планируемых для передачи перед пакетированием для этого специфического пункта. C News определяет число поставленных в очередь пакетов, используя queulen команду в /usr/lib/news/bin. Выпуск newspak Vince Skahan'а должен содержать команду для bnu-совместимого UUCP. Если Вы используете различные виды spool каталогов, например, Taylor UUCP, Вам может быть необходимо написать ваш собственный. Поле batcher содержит команду, используемую для создания пакета из списка статей в togo файле. Это - обычно batcher. Для других целей можно обеспечивать альтернативные команды. Например, ihave/sendme протокол требует, чтобы список статей был превращен в сообщения управления ihave или sendme, которые зарегистрированы в newsgroup to.site. Это выполняется batchih и batchsm. muncher поле определяет команду, используемую для сжатия. Обычно, это - compcun, команда, которая производит сжатый пакет. В качестве альтернативы, Вы могли бы обеспечивать muncher, который использует gzip, скажем gzipcun (чтобы быть чистым: Вы должны запись это непосредственно). Вы должны удостовериться, что распаковщик на отдаленном пункте исправлен, чтобы распознать файлы, сжатые с gzip. Если отдаленный пункт не имеет команды распаковки, Вы можете определить nocomp, который не делает никакое сжатие. Последнее поле, transport, описывает транспорт, который нужно использовать. Доступно несколько стандартных команд для различных transports, чьи имена начинаются с via. Sendbatches передает им имя пункта адресата в командной строке. Если batchparms вход не был /default/, он получает имя пункта из поля site, удаляя все последующее, включая первую точку или наклонную черту вправо. Если вход был /default/, используются имена каталога в out.going. Имеются две команды, которые используют uux, чтобы выполнить rnews на отдаленной системе; viauux и viauuxz. Последняя устанавливает -z флаг для (более старые версии) uux, чтобы отменить сообщения успеха для каждой переданной статьи. Другая команда, viamail, посылает пакеты статей пользователю rnews на отдаленной системе через почту. Все команды из последних трех полей нужно расположть или в out.going/site или в /usr/lib/news/bin/batch. Большинство их - команды, так, чтобы Вы могли легко приспосабливать новые инструментальные средства для ваших персональных потребностей. Они вызываются как трубопровод. Список статей подается дозатору на стандартном вводе, который производит пакет на стандартном выводе. Это канально передается в muncher, и так далее. Типовой файл дан ниже.
# batchparms file for the brewery # site | size |max |batcher |muncher |transport #-------------+--------+-------+---------+-----------+----------- /default/ 100000 22 batcher compcun viauux swim 10000 10 batcher nocomp viauux
Параметры среды окружения решающего устройства.
Установки из файла host.conf могут быть отменены, используя ряд параметров среды окружения. Они следующие:
RESOLV HOST CONF. Он определяет файл, который будет считан вместо /etc/host.conf.
RESOLV SERV ORDER Отменяет order опцию, данную в host.conf. Услуги, данные как хосты, bind, и nis, отделенны пробелом, запятой, двоеточием, или точкой с запятой.
RESOLV SPOOF CHECK Определяет критерии, принимаемые против spoofing. Эта установка полностью отключается опцией off. Значения предупреждают spoof проверку , но включают и выключают logging, соответсвенно. Значение * включает spoof проверку, но оставляет logging как определено в host.conf.
RESOLV MULTI Эта среда окружения ( может быть вкл. или выкл.), может быть использована для отключения multi опции из tt host.conf.
RESOLV OVERRIDE TRIM DOMAINS Эта среда окружения определяет список trim области, который отключает те, что даны в host.conf.
RESOLV ADD TRIM DOMAINS Эта среда окружения определяет список trim области, который добавляется в host.conf.
| |
Pathalias и Формат файла Карты
Pathalias база данных обеспечивает главную, направляющую информацию в uucp-основанных сетях. Типичный вход походит на этот (имя пункта, и путь отделяется МЕТКАМИ ТАБУЛЯЦИИ): moria.orcnet.org ernie!bert!moria!%s moria ernie!bert!moria!%s Это направляет любое сообщение к moria через ernie и bert. moria полностью составное имя и имя UUCP должно быть задано, если mailer не имеет отдельного способа отображения между этими именами.
Если Вы хотите направлять все сообщения на главные ЭВМ внутри некоторой области на реле почты, Вы может также определять путь в pathalias базе данных, давая имя области как целевой, с предшествующей точкой. Например, если все главные ЭВМ в sub.org могут быть достигнуты через swim!smurf, pathalias вход мог бы выглядеть следующим образом: \&.sub.org swim!smurf!%s Запись в pathalias файл является допустимой только, когда Вы имеете пункт который не должен делать много маршрутизации. Если Вы должны делать маршрутизацию для большого количества главных ЭВМ, лучший способ - использовать pathalias команду, чтобы создать файл из файлов карты. Карты могут поддерживаться намного проще, потому что Вы можете просто добавлять или удалять систему, редактируя вход карты системы, и вновь создавать файл карты. Хотя карты, изданные Usenet Проектом не очень используются для маршрутизации, UUCP сети могут обеспечивать информацию маршрутизации в их собственном наборе карт. Файл карты в основном состоит из списка абонентов, печатая абонентов каждого опроса системы. Имя системы начинается в первом столбце, и сопровождается отделенным запятой списком связей. Список может быть продолжен через символ перевода строки, если следующая строка начинается с метки табуляции. Каждая связь состоит из имени пункта, сопровождаемого стоимостью, данной в скобках. Стоимость - арифметическое выражение, состоящеее из чисел и символических издержек. Строки, начинающиеся знаком мусора игнорируются. Например, рассмотрите moria, который опрашивает swim .tobirds.com два раза в день, и bert.sesame.com только раз в неделю. Кроме того, связь с bert использует медленный 2400bps модем. Moria издал бы следующий вход карт: moria.orcnet.org bert.sesame.com(DAILY/2), swim.twobirds.com(WEEKLY+LOW) moria.orcnet.org = moria Последняя строка делала бы это известным под именем UUCP. Обратите внимание, что это должно быть DAILY/2, при вызове два раза в день фактически половины стоимость для этой связи.
Использование информации из таких файлов карты, pathalias способно вычислить оптимальные маршруты к любому пункту адресата, перечисленному в файле путей, и производить pathalias базу данных из этого, которая может использоваться для маршрутизации для этого абонента. Pathalias обеспечивает пару других возможностей подобно скрывающемуся пункту (то есть абонент, доступный только через ворота) и т.д. См. страницу для pathalias для уточнения, также как для полного списка издержек связи. Комментарии в файле карты вообще содержат дополнительную информацию относительно абонента, описанного в этом. Имеется жесткий формат, чтобы определить их, так, чтобы это могло быть восстановлено(отыскано) из карт. Например, программа, называемая uuwho использует базу данных, созданную из файлов карты, чтобы отобразить эту информацию приятно форматируемым способом. Когда Вы регистрируете ваш пункт в организации, которая распределяет файлы карты, Вы вообще должны заполнить такой вход карты. Ниже - типовой вход карты (фактически, это - то для моего пункта): #N monad, monad.swb.de, monad.swb.sub.org #S AT 486DX50; Linux 0.99 #O private #C Olaf Kirch #E okir@monad.swb.de #P Kattreinstr. 38, D-64295 Darmstadt, FRG #L 49 52 03 N / 08 38 40 E #U brewhq #W okir@monad.swb.de (Olaf Kirch); Sun Jul 25 16:59:32 MET DST 1993 # monad brewhq(DAILY/2) # Domains monad = monad.swb.de monad = monad.swb.sub.org Незаполненное пространство после первых двух символов - МЕТКА ТАБУЛЯЦИИ. Значение большинства полей довольно очевидно; Вы получите детализированное описание в любой области, в которой Вы регистрируетесь. L поле наиболее забавно: оно задает вашу географическую позицию в lati-tude/longitude и используется, чтобы рисовать карты postscript, которые показывают всех абонентов для каждой страны.
Pathtable
Pathtable используется, чтобы определить явную маршрутизацию на отдаленные главные ЭВМ или сети. Файл pathtable должен быть в синтаксисе pathalias-стиля, сортируемом в алфавитном порядке. Два поля на каждой строке должны отделиться реальной МЕТКОЙ ТАБУЛЯЦИИ. Большинство систем не будет нуждаться в любых входах pathtable.
#=============== /usr/local/lib/mail/pathtable ================ # # this is a pathalias-style paths file to let you kick mail to # UUCP neighbors to the direct UUCP path so you don't have to # go the long way through your smart host that takes other traffic # # you want real tabs on each line or m4 might complain # # route mail through one or more intermediate sites to a remote # system using UUCP-style addressing. # sesame!ernie!%s ernie # # forwarding to a system that is a UUCP neighbor of a reachable # internet site. # swim!%s@gcc.groucho.edu swim # # The following sends all mail for two networks through different # gateways (see the leading '.' ?). # In this example, "uugate" and "byte" are specific systems that serve # as mail gateways to the .UUCP and .BITNET pseudo-domains respectively # %s@uugate.groucho.edu .UUCP byte!%s@mail.shift.com .BITNET # #=================== end of pathtable =======================
Передача файлов
Taylor UUCP также позволяет описывать передачу файлов в подробностях. Вы можете запретить любой обмен с определенной системой. Только установите request в no, и удаленная система не сможет ни искать, ни читать, ни посылать Ваешй никаких файлов.
11.rsmtp используется, чтобы поставить почте пакет SMTP. Это описывается в главах о почте.
Аналогично, Вы можете запретить пользователям Вашей системы пересылку файлов 'в' или 'из' системы, установив transfer в no. По умолчанию любая пересылка им разаешается. " Кроме того, Вы можете конфигурировать каталоги 'в' и 'из' которых файлы могут быть скопированы. Обычно запрещают доступ с удаленных систем к определенным каталогам, но разрешают своим пользователям посылать файлы со своего исходного каталога. Обычно, удаленным пользователям разрешается получить файлы только от общего каталога UUCP, /var/spool/uucppublic. Это - традиционное место , в котором хранятся публично доступные файлы; очень похоже на FTP сервисы в Internet. На них обычно ссылаются используя символ тильды. Следовательно, Taylor UUCP обеспечивает четыре различных команды конфигурирования каталогов для посылки и получения файлов:local-send, который определяет список каталогов из которых пользователь может запросить файлы; local-receive, которая задает список каталогов, в которые пользователь может просить UUCP записать файлы ;remote-recive и remote- send, которые определяют то же самое для запросов в другую систему.Рассмотрим следующий пример:
system pablo local-send /home ~ local-receive /home ~/receive remote-send ~ !~/incoming !~/receive remote-receive ~/incoming
Команда local-send разрешает пользователям на вашей главной ЭВМ посылать любые файлы ниже /home и из от общего каталога UUCP в систему pablo. Команда local-receive разрешает им получать файлы или в общедеступный каталог в uucppublic, или в любой общедоступный каталоге ниже /home. Команда remote-send разрешает pablo запрашивать файлы из /var/spool/uucppublic или из любого общедоступного его подкаталога . Это сообщается к uucico восклицательным знаком,поставленным перед именем каталога. В заключение, последняя строка разрешает pablo записать любые файлы в каталог incoming. Одна из самых больших проблем при передаче файлов используя UUCP - это то, что файлы записываются в обшедоступные каталоги. Это может соблазнить нзкоторых пользователей вмешаться в личные дела других пользователей, и т.д.. Однако нет никакого способа решения этой проблемы, кроме отключения передач файлов UUCP вообще.
Переменные имена(Variable Names)
Dip только понимает предопределенное множество переменных. Переменное имя всегда начинается с символа доллар и должен быть написан в нижнем регистре.
$local и $locip переменные содержат название локального имени хоста и IP адреса. Установка hostname заставляет dip сохранить каноническиий hostname в $local, в то же самое время приписывая $locip соответствующий IP адрес. Аналогичная вещь случается при установке $locip.
$remote и $rmtip переменные делают тоже самое для отдаленных хостов и адресов. $mtu содержит MTU значение для соединения.
Эти пять переменных - единственые, которые могут быть назначены непосредственно используя get команду. Хост других переменных может быть только установлен через соответствующие команды, но может использовать и print опрераторы; это - $modem, $port, и $speed.
$errlvl - переменная, через которую Вы можете обращаться к результату последней выполненой команды. Уровень ошибки 0 указывает на успех, в то время как ненулевое значение обозначает ошибку.
Пересылка
UUCP обеспечивает механизм, благодаря которому другие системы могут выполнять передачу файлов от Вашего имени. Например, это разрешает, чтобы Вы делали seciretrieve файл из uchile для Вас, и послали это вашей системе. Следующая команда достигнула бы этого:
$ Uucp -r seci! Uchile! ~/find-ls.gz ~/uchile.files.gz
Эта методика прохождения работы через несколько систем называется пересылкой. В вышеупомянутом примере причиной для использования пересылки могло быть то, что seci имеет UUCP- доступ к uchile, а ваша главная ЭВМ нет. Однако, если Вы используете систему UUCP, ограничте обслуживание пересылки для некоторых ЭВМ,которым Вы доверяете, чтобы не ужасаться телефонному счету, если кто-нибудь решит скачать себе через вас исходные тексты последего выпуска X11R6. По умолчанию, Taylor UUCP запрещает пересылку вооще. Чтобы давть возможность пересылки определенной системе, Вы можете использовать команду forward. Эта команда определяет список систем, которые могут воспользоваться пересылкой через вас. Например, администратор UUCP seci должен был добавить следующие строки к файлу sys, чтобы разрешить pablo запрос файлов из uchile:
#################### # pablo system pablo forward uchile #################### # uchile system uchile forward-to pablo
Строка forward-to для uchile необходима , чтобы любые полученные файлы фактически передались pablo. Иначе UUCP пропустил бы их. Этот пример разрешает uchile только посылать файлы pabno чзрез seci; иной другой путь не допустим. Чтобы разрешить пересылку к любой системе, используйте специальное ключевое слово ANY (обязательно заглавные буквы).
Пересылка Почты В Отдаленную Систему
Чтобы отправлять почту для специфического host или области в обозначенную отдаленную систему, Вы вообще используете mailertable. Например, чтобы отправить почту для backwood.org к их закулисной системе GATEWAY UUCP, вы поместили следующий вход в mailertable:
UUCP-A,backdoor backwood.org
Пересылки
Пользователь может переназначать почту посылая ее к альтернативному адресу, используя один из двух методов, обеспечиваемых smail. Одна опция должна поместить Forward to recipient,... в первой строке ее mailbox файла. Это пошлет всей входящей почте заданному списку получателей. В качестве альтернативы, она могла бы создавать a .forward файл в ее исходном каталоге, который содержит отделенный запятой список получателей. С этим разнообразием пересылки, все строки файла читаются и интерпретируются. Обратите внимание, что любой тип адреса может использоваться. Таким образом, практический пример .forward файла мог бы быть janet, "|vacation" Первый адрес передает входящее сообщение mailbox janet, в то время как команда vacation возвращает короткое уведомление отправителю.
PLIP Драйвер
PLIP основан на IP для параллельных линий и используется, если необходимо соединить две машины. Он использует параллельный порт и специальный кабель и позволяет достигать скоростей от 10Кбит/cек до 20Кбит/сек.
PLIP был первоначально разработан компанией Crynwr. Довольно оригинальный проект: в течение длительного времени параллельные порты в PC использовались в основном для принтеров; то есть восемь линий использовались только чтобы послать данные с PC на периферийное устройство и никуда больше. PLIP работает, обходя это ограничение, используя пять линий состояний порта для ввода, что позволяет передавать по пол-байта за раз между машинами. Этот режим работы называется mode zero PLIP (0 способ PLIP). Сегодня, эти однонаправленные порты кажется больше нигде не используются. Поэтому, имеется также PLIP расширение, названное способом 1 который использует полный 8 разрядный интерфейс.
В настоящее время, только Linux поддерживает 0 способ. В отличии От более ранних версий PLIP, теперь он пытается быть совместимым с PLIP сделанным на Crynwr, а также PLIP драйвером в NCSA telnet. Чтобы соединить две машины использующие PLIP, Вам требуется специальный кабель -- "Null Printer" или "Turbo Laplink" кабель. Вы можете сделать его и сами. Приложение 20.3 описывает как.
РLIP поддерживало большое количество людей. В настоящее время его поддерживает Niibe Yutaka.
Если PLIP компилируется в ядро, он устанавливает сетевой интерфейс для каждого из возможных портов принтера, plip0 соответствует параллельному порту lp0, plip1 -- lp1, и т.д.. В настоящее время интерфейсы отображаются на порты следующим образом:
-------------------------------- +-----------+-----------+------+ | Интерфейс | I/O порт | IRQ | +-----------+-----------+------+ |plip0 | 0x3BC | 7 | |plip1 | 0x378 | 7 | |plip2 | 0x278 | 5 | +-----------+-----------+------+ +-----------+-----------+------+
Если Вы отконфигурировали ваш порт принтера по-другому, Вы должны изменить эти значения в drivers/net/Space.c в исходниках ядра Linux, и собрать новое ядро.
Этот отображение не означает, однако, что Вы не можете использовать эти параллельные порты как обычные. PLIP драйвер обращается к ним только, когда соответствующий интерфейс отконфигурирован.
PLIP интерфейс
При использовании PLIP связи для соединения двух машин, существуют лишь небольшие отличия от того, что Вы должны делать при использовании Ethernet. Вышеупомянутая связь называется point-to-point(точка с точкой) связь, потому что она соединяет только два хоста ("точки"), в противоположность широковещательным сетям.
Как пример, мы рассматриваем laptop компьютер некоторого служащего в Виртуальной Пивоварне, который связана с vlager через PLIP. Laptop непосредственно назван vlite, и имеет только один параллельный порт. В о время загрузки, этот порт будет регистрироваться как plip1. Чтобы сформировать связь, Вы должны отконфигурировать интерфейс plip1, используя следующие команды:
# ifconfig plip1 vlite pointopoint vlager # route add default gw vlager
Первая команда конфигурирует интерфейс, сообщая ядру, что это point-to-point связь, с удаленной машиной имеющей адрес vlager. Вторая устанавливает маршрут по умолчанию, используя vlager как gateway. На vlager, подобная команда ifconfig необходима чтобы сформировать связь и на vlager:
# ifconfig plip1 vlager pointopoint vlite
Интересно, что интерфейс plip1 на vlager не должен иметь отдельный IP адрес, но если хочется можете дать ему адрес 191.72.1.1.
Теперь, мы отконфигурировали маршрутизацию от laptop до Сети Пивоварни; что но все еще отсутствует маршруту от любого из Хостов Пивоварни к vlite. Особенно тяжелый путь состoит в том, чтобы добавлять определенный маршрут к таблице маршрутизации каждого хоста, который состоит в том чтобы объявить vlager как gateway к vlite:
# route add vlite gw vlager
Гораздо лучше иметь дело с временными маршрутами, используя динамическую маршрутизацию. Один из способов сделать это состoит в запуске gated демона, который Вы должны устанавливать на каждом хосте в сети, чтобы он распространял информацию о маршрутах динамически. Самый легкий путь, однако, состoит в том, чтобы использовать proxy ARP. С proxy ARP, vlager будет отвечать на любой ARP pfпрос для vlite посылая собственный Ethernet адрес. Результат этого то, что все пакеты для vlite будут закачивать на vlager, который будет передавать их на laptop. Мы будем возвращаться к proxy ARP в секции 6.10.
Будущие выпуски Net-3 будут содержать инструмент названный plipconfig, который позволит Вам устанавливать IRQ порта принтера. Позже, это может быть заменено более общей командой ifconfig.
Почта Для Неконфигурированного Отдаленного Абонена
Часто, главные ЭВМ Internet будут иметь проблему при получении почты в не-конфигурированном отдаленном абоненте. Имеются отдельные варианты этой проблемы, но общий признак - почта передается отдаленной системой или никогда добирается туда вообще. Эти проблемы могут помещать локального администратора системы в плохую позицию, потому что ваши пользователи вообще не заботятся о том что Вы лично не управляете каждой системой во всем мире (или не знаете, как получить отдаленного администратора, чтобы установить проблему). Они только знают, что их почта не проходила желательному получателю на другом конце и что вы являетесь вероятным виновным человеком. Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях, убедитесь, что ваш пункт способен связаться с не-конфигурированным отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в отдаленном пункте, чтобы установить их конфигурацию своевременным способом, Вы имеет две опции.
+ Вообще возможно вынудить послать почту в отдаленную систему успешно, хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном конце могут не работать ..., но то это - проблема отдаленного администратора. Вы можете устранить плохие заголовки в конверте на ваших исходящих сообщениях только используя вход domaintable для их области или host, что приводит к правке недопустимой информации, при выходе почты из вашего пункта:
braindead.correct.domain.com braindead.wrong.domain.com
Знак ! в mailertable передает почту их отдаленному пункту, как будто она инициировалось локально на их системе. Обратите внимание, что это изменяет только адрес конверта, так что соответствующий адрес возврата будет все еще обнаруживаться в сообщении.
TCP!braindead.correct.domain.com braindead.wrong.domain.com
Почта, которая будет перемещена через UUCP
В идеальном мире (из перспективы Internet), все главные ЭВМ будут иметь записи в Domain Name Service (DNS) и посылать почту с полностью квалифицированными именами области. Если Вы, случается, передаете через UUCP такому пункту, Вы можете вынуждать почту пройти двухточечное соединение UUCP, а не через ваш заданный по умолчанию mailer по существу " опуская область " их hostname через uucpxtable. Чтобы вынуждать получение через UUCP для sesame.com, Вы поместили бы следующее в ваш uucpxtable:
# un-domainize sesame.com to force UUCP delivery sesame sesame.com
Результат - тот sendmail, то определит (через UUCPNODES в файле sendmail.m4) что Вы непосредственно соединены с отдаленной системой, и будет ставить в очередь почту для получения через UUCP.
Поддержка платы
Полный список поддерживаемых плат доступен в Ethernet HOWTOs расположенных на comp.os.linux.announce Paul Gortmaker.
Вот список наиболее широко известных платы, поддерживаемых Linux. Полный список в HOWTO приблизительно в три раза длиннее. Однако, даже если Вы нашли вашу плату в этом списке, проверите сначала HOWTO; иногда существуют важные детали относительно работы этих карт. На пример, некоторые DMA-основанные Ethernet платы используют тот же самый DMA канал что и Adaptec 1542 SCSI контролер. Если Вы не переместите один из них на другой DMA канал, не удивляйтесь, что ваша Ethernet плата пишет данные в произвольные места вашего жесткого диска.
3Com EtherLink поддерживаются и 3c503 и 3c503/16, как - 3c507 и 3c509. 3c501 также поддерживается, но слишком медленна, чтобы ее покупать.
Novell Eagle NE1000 и NE2000, и разнообразные клоны. NE1500 и NE2100 также поддерживаются.
Western Digital/SMC WD8003 и WD8013 ( то же самое что SMC Elite и SMC Elite Plus) поддержана также и более новая SMC Elite 16 Ultra.
Hewlett Packard HP 27252, HP 27247B и HP J2405A.
D-Link DE-600 pocket adaptor, DE-100, DE-200, и DE-220-T.. Имеется также комплект для DE-650-T, который является PCMCIA картой. (4)
DEC DE200 (32K/64K), DE202, DE100, и DEPCA rev E.
Allied Teliesis AT1500 and AT1700.
Чтобы использовать одну из этих карт, Вы можете использовать ядро от одной из главных Linux дистрибуций. Они вообще имеют драйвера для всех из них. Однако, лучше собрать ваше собственное ядро и собирать с единственном драйвером, в котором Вы фактически нуждаетесь.
Поддержка Вашей системы
Повсюду в этой книге, мы в основном будем иметь дело с проблемами конфигурации и установки. Администрирование, однако, гораздо труднее-- после установки сервеса, Вы должны сохранить его работоспосбность Для большенства из них, будет необходимо достаточно мало внимания, в то время как некоторые, типа почты и новостей, требуют постоянного внимания. Мы будем обсуждать все это в более поздних главах.
Абсолютный минимум в обслуживании -- регулярная проверка системы и просмотр log файлов на ошибки и необычные случаи. Вы конечно захотите сделать это с помощью написания административных скриптов и периодически запуская их. Исходная дистрибуция некоторых основных приложений, типа smail или C news, содержат такие скрипты. Вы должны только попросить их удовлетворить ваши потребности.
Результат работы любого такого скрипта должен быть отправлена по почте администратору. По умолчанию, большенство приложений будут посылать сообщения об ошибках, обычную статистику, или резюме logfile к root. Этот имеет смысл только если Вы часто входите в систему под root; еще лучше, если почту root перенаправлять на ваше имя, как описано в главе 15.
Однако как бы тщательно Вы не конфигурировали ваш участок, по закону Мерфи проблемы обязательно появятся. Поэтому, при обслуживании системы от жалоб не отвертеться. Обычно, люди ожидают что администратор системы может по крайней мере быть найден через email как root, но имеются также другие адреса, которые обычно используются чтобы найти лицо ответственное за определенный аспект управления. Например, жалобы относительно сбоев в конфигурации почты будут обычно адресованы postmaster, а проблемы с системой новостей могут быть сообщены newsmaster или usenet. Обращения к hostmaster должны быть перенаправлены лицу отвечающему за основные услуги сети и службу имен DNS.
|
Подготовка NFS
Прежде, чем Вы можете использовать NFS, будь это сервер или клиент, Вы должны удостовериться, что Ваше ядро имеет NFS поддержку, компилируемую в. Более новые ядра для этого имеют простой интерфейс на proc файловой системе, файл /proc/filesystems, который Вы можете отобразить используя cat:
$ cat /proc/filesystems minix ext2 msdos nodev proc nodev nfs
Если nfs отсутствует из этого списка, то Вы должны скомпилировать Ваше собственное ядро с включенным NFS. Конфигурирование kernel сетевых опций объяснено в разделе " Kernel конфигурация " главы 4 ..
Для более старых ядер до 1.1 Linux, самый простой способ выяснять имеет ли ваше ядро включенную NFS поддержку - фактически попробовать установить NFS файловую систему. Для этого, Вы могли бы создать каталог ниже /tmp, и&поптобовать установить локальный каталог на нем:
# mkdir /tmp/test # mount localhost:/etc /tmp/test
Если эта попытка установки выдает сообщениее об ошибках выводя, "fs type nfs no supported by kernel'', то Вы не должны делать новое ядро с включенной NFS. Любые другие сообщения об ошибках полностью безобидны, так как Вы пока еще не сконфигурировали NFS daemons на вашем множестве.
Подробная информация о UUCP
Если Вы в этой главе не найдете то, что хотите, прочитайте документацию,которая поставляется с пакетом. Это набор texinfo файлов, которые описывают установку с использованием Taylor схемы конфигурации. Texinfo может быть преобразован в DVI и GNU файлы информации, использующим tex и makeinfo, соответственно. Если Вы хотите использовать файлы конфигурации BNU (или даже Версии 2), есть очень хорошая книга - " Управление UUCP и Usenet " ([GETST "reilly-uucp"]). Другой хороший источник информации об UUCP для Linux - Vince Skahan's UUCP-HOWTO , который можно взять на comp.os.linux.announce. Имеется также newsgroup для обсуждения UUCP - comp.mail.uucp. Если у Вас есть специфические вопросы о Taylor UUCP, может быть лучше задать их тжм, чем на группах comp.os.linux.
Подсети
Эта структура отражена в разбиении IP адреса на хост и сетевую части, как объяснено выше. ПО умолчанию, сеть мест назначения получается из сетевой части IP адреса. Таким образом, хосты с идентичными IP адресами сети должны располагаться в пределах одной сети, и наоборот. (2)
Имеет смысл предложить подобную схему также и внутри сети, так как она может состоять из набора сотен меньших сетей, где самыми маленькими единицами являются физические сети типа Ethernets. Поэтому, IP позволяет Вам поделить IP сеть на несколько подсетей.
Подсеть принимает ответственность за доставку дэйтаграм для определенного диапазона IP адресов. Как с классами A, B, или C, она идентифицируется сетевой частью IP адресов. Однако, сетевая часть теперь расширена, чтобы включить некоторые биты от хост части. Число битов которые интерпритируются как номер в подсети задается так называемой subnet(подсетевой) маской, или netmask. Это - 32 разрядное число, которое определяет разрядную маску для сетевой части IP адреса.
Сеть Groucho Marx Университета - пример такой сети. Она имеет класс B с сетевым номером 149.76.0.0, и netmask поэтому равен 255.255.0.0.
Внутри, сеть GMU состоит из нескольких меньших сетей, типа локальных сетей различных отделов. Так что диапазон IP адресов разбит на 254 подсети, от 149.76.1.0 до 149.76.254.0. Например, отдел теоретической физики имеет номер 149.76.12.0. Университетский оптиковолоконный кабель тоже сеть с собственным номером 149.76.1.0. Эти подсети имеют одинаковый сетевой IP адрес, в то время как третья octet используется, чтобы различать их между собой. Таким образом они будут использовать подсетевую маску 255.255.255.0.
Картинка 3.4.2 показывает как 149.76.12.4, адрес quark, интерпритируется по-разному когда адрес принят как обычный адрес сети класса B, и когда используется с подсетью.
Стоит заметить что subnetting (так названа техника создания подсетей) -- чисто внутреннее дело сети. Подсети создаются сетевым владельцем ( или администратором). Часто, подсети создаются чтобы отразить существующие границы, будь они физические (два Ethernets), административные (между двумя отделами) или географические. Однако, эта структура воздействует только на внутреннее поведение сети, и полностью невидима для внешнего мира.
Поиск имени с помощью DNS
На первый взгляд, все эти суета с областями и зонами кажется делает поиск адреса ужасно сложным делом. В конце концов, если нет центрального органа контролируещего какие имена связаны с каким адресом, тогда как - скромное приложение должно его узнавать?!
Теперь начинается действительно техническая часть описания DNS. Если Вы хотите выяснять IP адрес erdos, тогда, DNS говорит, иди и спроси людей, которые управляют им, и они ответят Вам.
Фактически, DNS - гигантская распределенная база данных. Это осуществлено посредством так называемых серверов имен(name server), которые снабжают всех информацией о данной области или нескольких областях сразу. Для каждой зоны имеются по крайней мере два сервера имен, которые содержат всю информацию относительно хостов в этой зоне. Чтобы получить IP адрес erdos, все что Вы должны сделать -- обратится к серверу имен зоны groucho.edu, который и передаст Вам требуемые данные.
Легко сказать, а как это сделать, подумали вы. Так как найти сервер имен в Groucho Marx Университет? В случае если ваш компьютер не оборудован address-resolving oracle, DNS также обеспечивает это. Когда ваше приложение хочет найти информацию относительно erdos, оно входит в контакт с местным сервером имен, который проводит так называемый итерационный опрос. Сначала он посылает запрос серверу имен об области корня, спрашивая о адресе erdos.maths.groucho.edu. Сервер имен корня сообщает, что это имя не принадлежит зоне его полномочий, но вместо этого отсылает к edu области. Таким образом, он предлагает Вам войти в контакт с сервером имен зоны edu для получения большего количества информации, и прилагает список всех серверов имен edu вместе с их адресами. Ваш местный сервер имен пошлет запрос одному из них, например a.isi.edu. Также как серверу имен корня, a.isi.edu знает что люди groucho.edu управляют свей зоной сами, и направит Вас на их сервера. Местный сервер имен запросит одного из них, который наконец распознает имя, как принадлежащее к его зоне, и вернет IP адрес.
Кажется, что для поиска одного IP адреса тратится слишком много ресурсов. но это не сравнимо меньше, чем при преждней схеме с HOSTS.TXT. Но все еще имеются места для усовершенствования этой схемой.
Чтобы уменьшить время ответа для будущих запросов, сервер имени хранит полученную раньше информацию в кэше. Так что в следующий раз, когда любой другой из вашей локальной сети захочет найти адрес хоста в groucho.edu области, ваш сервер имен не проведет все снова, а будет сразу обращаться к серверу имен groucho.edu.
Конечно, сервер имен не будет хранить эту информацию всегда, а отбросит ее через некоторое время. Этот интервал времени назван time to live(временем жизни), или TTL. TTL задается администратором данной зоны.
Поиск неисправностей
Этот раздел описывает возможные неисправности в вашем соединении UUCP, и дает возможные пути их исправления. Однако мы были просто не в состоянии охватить все возможные варианты. В любом случае, включите отладку опцией -xall, и смотрите на вывод в файле Debug в каталоге spool. Это поможет Вам быстро распознть, где происходит сбой. Также, я всегда находил полезным включать динамик модема, когда соединение не удавалось. С Hayes-совместимыми модемами это можно сделать, добавив " ATL1M1 OK " к дружеской беседе модема в файле dial.
Первым делом стоит проверить все ли права доступа к файлам установлены правильно. Uucico должен принадлежать uucp, и все файлы в /usr/lib/uucp, /var/spool/uucp и /var/spool/uucppublic должены принадлежать uucp. Имеются также некоторые скрытые файлы (15) в каталоге spool, которые также должны принадлежать uucp.
Uucico может сказать "Wrong time to call "(" Неправильное время вызова "). Это может значить,что в файле sys , Вы не определили команду time, которая определяет, когда удаленная системв может вызываться, или фактически запретили заход в текущее время. Если время обращения не задано, uucico принимает, что система никогда не может вызываться. Uucico жалуется, что система уже блокирована. Это означает ,что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться старого обращения к системе, если ее работа была прервана некорректно. Однако также правдоподобно, что естьдругой процесс uucico, который пробует набрать удаленную систему и застревает в сценарие дружеской беседы, и т.д.. Если этот процесс uucico не преуспел в соединение с удаленной системой, уничтожте его, и удалите все файлы блокировки, которые он оставил. Я могу соединиться с удаленной системой, но происходит сбой сценария дружеской беседы: Рассмотрите текст, который Вы получаете от удаленного места. Если он искажен, это может быть связано с быстродействием. Иначе, подтвердите, соглашается ли это действительно, тем, что ваш сценарий дружеской беседы ожидает. Помните, что сценарий дружеской беседы начинается с ожидающейся строкой. Если Вы получаете подсказку входа в систему, затем посылаете имя, но не получаете подсказку пароля, вставьте некоторые задержки перед посылкой этому, или четному промежутку символы. Вы можете быть слишком быстры для вашего модема. Мой модем не соединяется: Если ваш модем не указывает, что DTR линия была установлена, когда uucico вызывает,возможно Вы задали неправильное устройство uucico. Если ваш модем распознает DTR, сверьтесь с a 15. То есть файлы, чьи имя начинает с точки. Такие файлы обычно не отображаются командой ls.
Программа терминала, которую Вы можете записывать к этому. Если это работает, включите отображение на экране к \E в начале дружеской беседы модема. Если это не делает ECHO ваши команды в течение дружеской беседы модема, проверьте, является ли ваше быстродействие строки слишком высоко или низпо для вашего модема. Если Вы видите ECHO, проверьте, отключили ли Вы ответы модема, или устанавливаете их к кодам числа. Проверите, что сценарий дружеской беседы непосредственно правилен. Не забудьте, что Вы должны записать две наклонных черты влево, чтобы послать тот модему. Мой модем пробует соединятся, но не может: Вставьте задержку в номер телефона. Это особенно полезно когда набор идет из внутренней телефонной сети компании. Если вы обычно пользуетесь импульсным набором,попробуйте тоновый. В некоторых странах мощности телефонных сетей нарастили недавно и тоновый набор иногда помогает. log файл говорит, что я имею чрезвычайно высокие потери передачи: Это похоже на проблему быстродействия. Возможно связь между компьютером и модемом также медленна (установите ее для самой высокой эффективной скорости)? Или это ваши аппаратные средства, которые являются также медленно к сервисным прерываниям вовремя? С NSC 16550A chipset на вашем последовательном порте, 38kbps работает хорошо; однако, без FIFOs (подобных 16450 чипам), 9600 бит\сек - верхний предел скорости. Также Вы должны удостовериться, что аппаратное рукопожатие допускается на последовательной линии. Другая вероятная причина - аппаратное рукопожатие не допускается на порте. Taylor UUCP 1.04 не имеет никаких средств для включения RTS/CTS рукопожатия. Вы должны сделать это явно из rc.serial использование следующей команды:
$ Stty crtscts < /dev/cua3
Я регистрируюсь в, но происходит сбой рукопожатия: Хорошо, может иметься ряд проблем. Вывод в регистрационном файле должен сообщить Вам множество. Рассмотрите то, каким протоколам удаленные предложения места (Это посылает строку Pprotlist в течение рукопожатия). Возможно они не имеют любого в общем (Вы выбираете любые протоколы в системном или порт?). Если удаленная система посылает RLCK, имеется просроченный lockfile для Вас на удаленной системе. Если вы уже не соединены с удаленной системой на жругой линии попросите удалить его. Если она посылает RBADSEQ, другое место имеет проверки счета диалога, допускаемые для Вас, но числа не соответствовали. Если это посылает RLOGIN, Вас не разрешали к входу в систему под этим идентификатором.
Поиск по имени (Hostname Resolution)
< > Как описано выше, адресация в TCP/IP сети крутится вокруг 32 разрядных номеров. Однако, Вам будет трудно запомнить даже некоторые из них. Поэтому, хосты чаще известны под "обычными", имена типа gauss или strange. Поэтому требуются программы для получения IP адреса по имени машины Этот процесс назван Hostname resolution.
Приложение, которое хочет найти IP адрес по данному имени хоста, не должен пытаться сделать это собственными силами Вместо этого, оно обращается к библиотечным функциям, которые для этого и написаны, они называются gethostbyname (3) и gethostbyaddr (3). Традиционно, эти и ряд других процедур были сгруппированы в отдельной библиотеке названной resolver; в Linux, это часть стандартной libc.
На маленькой сети, подобной Ethernet, или даже на нескольких, не очень трудно поддерживать таблицу, сопоставляющую имена хоста к IP адресам. Эта информация обычно хранится в файле /etc/hosts. При добавлении или перемещении хоста, или при переназначении адресов, все что Вы должны сделать -- это изменить файл hosts на всех хостах. Очевидно, что это будет достаточно трудно в сетях с большим количеством машин.
Одно из решений этой проблемы -- NIS, Сетевая Информационная Система разработанная Sun Microsystems, названное YP, или Желтыми Страницами. NIS хранит hosts файл (и другую информацию) в базе данных на главном хосте, от которого клиенты могут восстановить свои файлы если это необходимо. Все еще, Этот способ подходит только для сетей среднего размера, потому что он требует поддерживать полную базу данных как на центральной машине, так и на всех остальных.
В Internet, первоначально информация об адресах хранилась в единственном файле HOSTS.TXT. Этот файл поддерживался в NIC, и должен был загружаться всеми участвующими участками. Когда сеть выросла, возникло несколько проблем. Постоянное обновление и постоянная перекачка файла HOSTS.TXT регулярно требовали все больше ресурсов, нагрузка на сервер, который этим занимался стала слишком высока. Но еще большей проблемой стало придумывание новых (не совпадающих с преждними) имен.
Вот почему, в 1984 г, введена новая схема -- DNS, разработанная Paul Mockapetris и решившая обе проблемы одновременно.
Получение smail и Выполнение
Эта глава даст Вам быстрое введение в установку smail, и краткий обзор функциональных возможностей, которые он обеспечивает. Хотя smail в значительной степени совместим с sendmail в поведении, их файлы конфигурации полностью отличны. Основной файл конфигурации - /usr/lib/smail/config. Вы всегда должны редактировать этот файл, чтобы отразить значения, специфические для вашего пункта. Другие файлы, которые конфигурируют маршрутизацию и транспортные опции, могут также использоваться. По умолчанию, smail передает всю входящую почту немедленно. Если Вы имеете относительно высокий траффик, Вы может взамен заставить smail, собирать все сообщения в так называемой очереди, и обрабатывать их равномерно. При обработке почты внутри TCP/IP сети, smail - часто выполняются в daemon режиме: в загрузочное время системы, он вызывается из rc.inet2, и помещает себя в фон, где ждет входящие TCP соединения на SMTP порте (обычно порт 25). Это очень полезно всякий раз, когда Вы ожидаете значительный траффик, потому что smail не запущен отдельно для каждого входящего соединения. Smail имеет множество флагов, которые управляют этим поведением. Удачно что, smail поддерживает ряд стандартных режимов - операции, которые допускаются, когда Вы вызываете его специальным именем команды, подобно rmail, или smtpd. Мы столкнемся с большинством их при обсуждении различных возможностей smail. Имеются две связи с smail, который Вы должны иметь при всех обстоятельствах; а именно /usr/bin/rmail и /usr/sbin/sendmail. Когда Вы составляете и посылаете сообщение почты средством пользователя подобно elm, сообщение будет переправлено в rmail для получения. Тот же самое случается с почтой, приходящей в через UUCP. Некоторые версии elm, однако, вызывают /usr/sbin/sendmail вместо rmail, так что Вы нуждаетесь в обоих. Например, если Вы храните smail в /usr/local/bin, напечатайте в оболочке:
# ln -s /usr/local/bin/smail /usr/bin/rmail # ln -s /usr/local/bin/smail /usr/sbin/sendmail
Если, который Вы хотите углубиться далее в подробности конфигурирования smail, пожалуйста, обращаетесь к руководству smail. Если он не включен в вашу любимую поставку Linux, Вы может получить его вплоть до исходников.
Пользовательский протокол дэйтаграм(UDP)
Конечно, TCP не единственный протокол пользователя в TCP/IP сетях. Хоть он и подходит для приложений подобных rlogin, но он излишне надежен и не нужен для приложений типа NFS. Вместо, него в них использует UDP, или протокол пользовательских дэйтаграм. Подобно TCP, UDP также позволяет приложению войти в контакт с приложением, обслуживающим определенный порт на отдаленной машине, но он не устанавливает связь для этого. Вместо этого, Вы можете использовать его чтобы посылать отдельные пакеты к месту назначения.
Предположим, что Вы установили директорию TeX с центрального NFS сервера, galois, и Вы хотите просмотреть документ, описывающий как использовать LaTeX. Вы запускаете ваш редактор, который сначала читает указанный файл. Однако, требуется слишком много времени чтобы установить TCP связь с galois, послать файл , и повторять это снова. Вместо этого, на запрос посланный к galois, тот посылает файл в паре UDP пакетов, что происходит гораздо быстрее. Однако, UDP не приспособлен для борьбы с потерей пакетов. Этим приходится заниматься NFS.
Помещение всего вместе - Интеграционная проверка sendmail.cf и таблиц
Вы проверили что почта будет иметь желательное заданное по умолчанию поведение и что вы будете способны и послать и получить законно адресованную почту. Чтобы завершить установку, может быть необходимо создать соответствующие dbm таблицы, чтобы получить желательные конечные результаты. После создания таблиц, которые требуются для вашего пункта, Вы должны, обработать их через dbm созданием make в каталоге, содержащем таблицы. Если Вы являетесь только UUCP узлом, Вы не должны создвать таблицы, упомянутые в README.linux файле. Вы будете должны только подправить файлы так, чтобы Make-файл работал. Если вы в UUCP и Вы разговариваете с абонентами в дополнение к вашему smart-host, вы будете должны добавить входы uucpxtable для каждого (или почта к ним также пройдет через smart host) и выполнить dbm для пересмотренного uucpxtable. Сначала, Вы должны удостовериться что почта через ваш RELAY HOST, посылается им через RELAY MAILER.
# /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter [Note: No initial ruleset 3 call] > 3,0 fred@sesame.com rewrite: ruleset 3 input: fred @ sesame . com rewrite: ruleset 7 input: fred @ sesame . com rewrite: ruleset 9 input: fred @ sesame . com rewrite: ruleset 9 returns: < fred > @ sesame . com rewrite: ruleset 7 returns: < @ sesame . com > , fred rewrite: ruleset 3 returns: < @ sesame . com > , fred rewrite: ruleset 0 input: < @ sesame . com > , fred rewrite: ruleset 8 input: < @ sesame . com > , fred rewrite: ruleset 8 returns: < @ sesame . com > , fred rewrite: ruleset 29 input: < @ sesame . com > , fred rewrite: ruleset 29 returns: < @ sesame . com > , fred rewrite: ruleset 26 input: < @ sesame . com > , fred rewrite: ruleset 25 input: < @ sesame . com > , fred rewrite: ruleset 25 returns: < @ sesame . com > , fred rewrite: ruleset 4 input: < @ sesame . com > , fred rewrite: ruleset 4 returns: fred @ sesame . com rewrite: ruleset 26 returns: < @ sesame . com > , fred rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ sesame . com > , fred >
Если Вы имеете UUCP соседей кроме вашего RELAY HOST, Вы должны гарантировать, что почта к ним имеет соответствующее поведение. Почта, адресованная с синтаксисом стиля UUCP для host, с которым Вы говорите по UUCP, должна идти непосредственно к ним (если Вы явно не предотвращаете это входом domaintable). Примите, что swim host - прямой сосед UUCP ваших соседей. И при подаче swim!Fred sendmail должен произвести следующий результат:
# /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter [Note: No initial ruleset 3 call] > 3,0 swim!fred rewrite: ruleset 3 input: swim ! fred [...lines omitted...] rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred >
Если Вы имеете входы uucpxtable, чтобы вынудить получение по UUCP для некоторых UUCP соседей, которые посылают почту стиля Internet с определенным именем области, это также должно быть проверено.
# /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter [Note: No initial ruleset 3 call] > 3,0 dude@swim.2birds.com rewrite: ruleset 3 input: dude @ swim . 2birds . com [...lines omitted...] rewrite: ruleset 0 returns: $# UUCP $@ swim . 2birds $: < > , dude >
Последовательная линия IP
Порядковые протоколы линии связи, SLIP и PPP, обеспечивают Internet connectivity для плохой связи. Кроме модема и последовательной оборудованной панели с FIFO буфером, никакие аппаратные средства не нужны. Использование его - не намного усложняется чем использование mailbox, и поэтому увеличивается число частных организаций, которые предлагают телефонный вызов по номеру IP за доступную стоимость каждому.
Имеются оба драйвера доступные для Linux- SLIP и PPP. SLIP был там в течение долгого времени, и работает достаточно неплохо. А PPP драйвер был разработан совсем недавно MIchael Callahan и Al Longyear. Этот драйвер будет описан в следующей главе.
Поставка Новостей
Статьи могут быть поданы C News отдельными способами. Когда локальный пользователь отправляет по почте статью, newsreader обычно вручает ее команде inews, которая завершает информацию заголовка. Новости из отдаленного абонента, будь это одиночная статья или целый пакет, даны команде rnews, которая сохраняет их в каталоге /var/spool/newsin.coming, откуда они будут подняты в более позднее время newsrun. С любым из этих двух методов, однако, статья будет в конечном счете вручена команде relaynews. Для каждой статьи, команда relaynews проверяет, если статья уже была замечена в локальном пункте, ища id сообщения в файле хронологии. Двойные статьи будут пропущены. Затем, relaynews рассматривает Newsgroups: строку заголовка, чтобы выяснить, запрашивает ли локальный пункт статьи из любой из этих групп. Если он это делает, и группа новостей перечислена в открытом файле, relaynews пробует сохранять статью в соответствующем каталоге в области хранения новостей. Если этот каталог не существует, он будет создан. Id сообщения статьи будет регистрироваться в файле хронологии. Иначе, relaynews пропускает статью. Если relaynews будет не в состоянии сохранять входящую статью, потому что группа, в которой она была зарегистрирована, не перечислена в вашем открытом файле, статья будет перемещаться в группу junk. relaynews также проверит несвежие или статьи без дат и отклонит их. Входящие пакеты, которые терпят неудачу по любой другой причине, перемещаются в /var/spool/news/in.coming/bad, и сообщение об ошибках регистрируется.
Поставка Сообщений Локальным Адресам
Обычно, локальный адрес - только имя входа в систему пользователя, когда сообщение передается в его mailbox, /var/spool/mail/user. Другие случаи включают отправку по почте списка имен, и пересылку почты пользователем. В этих случаях, локальный адрес расширяется до нового списка адресов, которые могут быть или локальны или отдаленны. Кроме этих "нормальных" адресов, smail может обрабатывать другие типы локальных адресатов сообщения, подобно именам файла, и командам трубопровода. Они - не адреса, так что Вы не можете посылать почте на /etc/passwd@vbrew.com. Имя файла - что-нибудь, что начинается с наклонной черты вправо (/) или тильды (~). Письмо относится к исходному каталогу пользователя, и возможно только, если имя файла принималось из a .forward файл или вход пересылки в mailbox (см. ниже). При поставке файла, smail конкатенирует сообщения к файлу, создавая его в случае необходимости.
Командой трубопровода может быть любая команда Unix, которой предшествует символ трубопровода (|). Это заставляет smail вручать команду оболочке наряду с аргументами, но без подачи " | ". Сообщение непосредственно будет подано этой команде на стандартном вводе. Например, чтобы отправить почту в локальную newsgroup, Вы могли бы использовать команду оболочки, именованную gateit, и устанавливать локальный результат, который передает все сообщения из этого списка в команду, используя " | gateit ". Если вызов содержит незаполненное пространство, он должен быть включен в двойные кавычки. Из-за проблем защиты команда не выполняется, если адрес был получен несколько сомнительным способом (например, если файл, из которого адрес принимался, был перезаписываем каждым).
PPP на Linux
На Linux, PPP функциональные возможности расщеплены на две части, low-level HDLC драйвер, который размещен в ядре, и пространство пользователя pppd daemon, которое обрабатывает различные протоколы управления. Текущее разъединение PPP для Linux - linux-ppp-1.0.0, которое содержит ядро PPP модуля, pppd, и программа, именованная chat используется для того, чтобы выполнить отдаленную связь.
PPP kernel драйвер был написан Michael Callahan. Pppd был выведен из PPP реализации для Sun и 386BSD машин, который был написан Drew Perkins и другими, и поддерживается Paul Mackerras. Это было предоставлено к Linux Al Longyear. (3) chat был написан Karl Fox.(4)
Точно так же как и SLIP, PPP выполнен посредством специальной line discipline. Для того, чтобы использовать последовательную линию как PPP связь, Вы сначала должпы уутановить связь над вашим модемом как обычно, и впоследствии преобразовать линию к PPP режиму. В этом методе, все входящие данные проходят через PPP драйвер, который проверяет входящие HDLC структуры для соответствия (каждая HDLC структура несет 16 битов контрольной суммы). В настоящее время, он способен к выбору, используя Van Jacobson header compression. Как только Linux поддерживает IPX, PPP драйвер будет расширен для того, чтобы обрабатывать IPX блоки.
Kernel драйверу помогает pppd, PPP daemon, который выполняет целую инициализацию и опознавательный период, который является необходимым перед тем, как фактическое сетевое движение может быть послано поперек связи. Поведение Pppd может подстраиваться, используя ряд опций. PPP - комплексный, невозможно описать все из них в единственной главе.
3. Оба автора сказали, что они будут очень заняты некоторое время для того, чтобы вернуться. Если Вы имеете какие-либо вопросы относительно PPP в общем, то Вам лучше всего спросить бы людей относительно NET канала Linux activists mailing list.. 4. Karl@morningstar.com.
Эта книга, однако, не может покрывать все аспекты pppd, но даст Вам полное введение. Для более подробной информации, обратитесь к страницам инструкции и файлам README на pppd исходном распространении, которое должно помочь Вам отсортировать большинство вопросов, эта глава объясняет как это сделать. Если у Вас остаются проблемы даже после чтения всей документации, то Вы должны обратиться к newsgroup сomp.protocols.ppp для справки, которая является местом где Вы узнаете многое о pppd.
В последнее время Internet очень
В последнее время Internet очень часто оказывается в центре внимания, и серьезные люди часто болтаются по этому " Информационному супершоссе". Компьютерные сети становятся такими же обыденными вещами, как телевизоры и микроволновые печи. Inetrnet получает необычно широкое освещение в печати, а ученые обсуждают в Usenet возможность проведения исследований "Internet культуры." Различные компании работают над новыми методами передачи данных, например ATM, которые во многих случаях позволяют получить большую скорость передачи, чем сейчас.
Конечно, сети развивались достаточно долгое время. Обычной практикой было создание маленьких локальных сетей, в основном распологавшихся в одном здании, и соединенных через обычные телефонные линии. Таким образом, быстро разраставшийся конгломерат сетей, позволял подсоединятся к этой глобальной системе даже маленьким некоммерческим организациям и частным пользователям. Поэтому создание Internet-хоста с почтой и новостями, предлагающего доступ по телефону, стало нормальной практикой, и появление ISDN будет, несомненно, ускорять эту тенденцию.
Разговор о компьютерных сетях очень часто означает разговор о UNIX. Конечно, UNIX - не единственная сетевая операционная система и не всегда она будет лидером, но умрет она очень не скоро. Поэтому особенно интересным для пользователя становится появление бесплатных UNIXоидных операционных систем для PC (386BSD, FreeBSD и Linux). Однако, Linux - не UNIX. Unix - зарегистрированная торговая марка, кто бы в настоящее время не держал права на него, в то время как Linux - oперационная система, которая стремится предложить все функциональные возможности, требующие POSIX-стандарты для UNIX-подобных операционных систем.
Ядро Linux было написано в значительной степени Linus Torvalds, человеком, который начал это проект, чтобы понять как работает Intel i386 и MINIX. MINIX -- другая, популярная тогда операционная система для PC, предлагающая многие функциональные возможности Unix, и написанная профессором A.С.Танненбаумом.
Linux попадает под GNU Лицензию, которая позволяет свободно распространять код (пожалуйста читайте GPL в приложении 20.3,где написано, что значит "свободнораспространяемое программное обеспечение"). Понемногу оставляющая трудности, связанные с маленьким возрастом, и привлекающая большой и все возрастастающей базой бесплатных прикладных программ, эта операционная система становится все более распространенной. Ядро и C библиотека становятся так хороши, что большинство стандартного программного обеспечения компилируется с тем же успехом, что и на любой другой Unix системe, а широкий ассортимент различных Linux позволяет Вам просто переписать его на ваш жесткий диск и начинать работать.
Предметы, которые Определяют Пути
dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go
LIBDIR определяет каталог, где sendmail + IDA ожидает находить файлы конфигурации, различные dbm таблицы, и специальные локальные определения. В типичном двоичном распределении, это компилируется в sendmail binary и не должно быть явно установлено в файле send-mail.m4. Вышеупомянутый пример содержит dnl, который означает что эта строка - по существу только для уточнения инфрмации комментария. Чтобы изменить расположение файлов поддержки на другое, удалите dnl из вышеупомянутой строки, установите путь к желательному расположению, и восстановите, и повторно установите sendmail.cf файл.
Предотвращение Передачи Почты через UUCP
Противоположное условие также происходит. Часто системы могут иметь ряд прямых соединений UUCP, которые редко используются или они не так надежны и всегда доступны как заданный по умолчанию mailer или relay host. Например, в Seattle области имеется ряд систем, которые обменивают различные распределения Linux через анонимный UUCP, когда эти распределения выпускаются. Эти системы говорят по UUCP только когда необходимо, так что вообще быстрее и более надежно послать почту через общие (и всегда доступные) главные ЭВМ. Легко можно предотвратить получение UUCP почты от host, с которым Вы непосредственно соединены. Если отдаленная система имеет полностью квалифицированное имя области, Вы может добавить вход в domaintable:
# prevent mail delivery via UUCP to a neighbor snorkel.com snorkel
Это заменит любое вхождение имени UUCP на FQDN, и таким образом предотвратит соответствие строкой UUCPNODES в файле sendmail.m4. Результат - почта будет идти через RELAY MAILER и RELAY HOST (или DEFAULT MAILER).
Представления последовательных устройств
Unix ядро обеспечивает обращение к последовательным устройствам, названым ttys. Это - сокращение от названия компании Teletype(tm), которая в прошлом был одним из основных изготовителей терминалов. Этот термин используется в настоящее время для любого основоного на символьных данных устройства. Повсюду в этой главе, мы будем использовать этот термин исключительно по отношению к устройствам ядра.
В Linux существует три класса tty: (виртуальные) консоли, псевдо терминалы (подобные дуплексному каналу, используемому приложениями типа X11) и последовательные устройства. Последние также причисляется к ttys, потому что они позволяют создавать диалоговые сессии по последовательной связи; будь то интенсивно-зашитый терминал или удаленный компьютер соединенный с данным по телефонной линии.
Ttys имеют ряд конфигурируемых параметров которые могут быть установлены с помощью ioctl запроса. Многие из них применяются только для последовательных устройств, так как они нуждаются в большой гибкости для того, чтобы работать с изменяющимися типами соединений.
Среди наиболее видных параметров линии -- скорость линии и паритет. Но имеются также флаги для преобразования между верхним и нижним регистрами символов, и т.п. Tty драйвер может также поддерживать различные опции линии, которые заставляют драйвер вести себя совершенно по разному. На пример, SLIP драйвер для Linux может представляется в терминах специальных дисциплин.
Существует также некоторая двусмысленность относительно того как измерять скорость линии. Правильно - bit rate(побитовое измерение), которое связано со скоростью линии измеренной в битах за секунду (или bps для краткости). Иногда, люди называют это Бод (Baud), что тоже верно. Эти два термина, однако, не взаимозаменяемы. Бод относит к физической характеристике некоторого последовательного устройства, а именно время за которое произошла передача импульса. Битовое измерение обозначает текущее состояние существующей последовательной связи между двумя точками, а именно средний число битов переданных за секунду. Важно знать что эти два значения обычно различны, поскольку большинство устройств кодируют больше чем один бит за электрический импульс.
m4 для vstout на Виртуальном
Файл sendmail. m4 для vstout на Виртуальном Пивоваренном заводе показывается ниже. Vstout использует SMTP, чтобы разговаривать со всеми главными ЭВМ на LAN Пивоваренного завода, и посылает всю почту для других адресатов к moria, host реле Internet, через UUCP.
Print команда
Это команда к ECHO тексту к dip консоли. Любая из dip переменных может использоваться в print командах, такие как:
DIP> print Using port $port at speed $speed Using port cua3 at speed 38400
Проблемы TCP/IP сети
Теперь обратимся к деталям того как вы будете присоединять вашу Linux машину к сети TCP/IP, включая работу с IP адресами, именами хостов, и чуть-чуть проблемы маршрутизации. Эта глава дает Вам основу, которая поможет Вам понять, что требуется для установки системы, в то время как следующие главы будут охватывать инструменты, с помощью которых это достигается.
Проект linux документации
Проект linux документации, или LDP, является свободной бригадой авторов и редакторов, которые работают вместе, чтобы обеспечить завершенную документацию для Linux операционной системы. Главный координатор проекта - Matt Welsh, ему помогает Lars Wirzenius и Michael K. Johnson.
Это руководство распространяется как часть LDP, который включает в себя "Linux Руководство Пользователей", "Руководство Администраторов Системы", "Руководство Администраторов Сети", и "Руководство хакеров ядра". Эти руководства доступны в формате LaTeX, .dvi и Postscript на анонимном FTP ic.funet.fi, в каталоге /pub/OS/Linux/doc/doc-project, и на tsx-11.mit.edu, в каталоге /pub/linux/docs/guides.
Мы поощряем любого кто пожелает помогать нам улучшать Linux документацию. Если Вы имеете доступ к электронной почте, Вы можете присоединяться к DOC каналу списка рассылки linux-активистов посылая почту на linux-activists-request@niksula.hut.fi
Со строкой: X-Mn-Admin: join DOC
в заголовке или как первая строка тела сообщения. Пустая почта, без дополнительной строки, заставит mail-server отослать сообщение с помощью. Чтобы оставить канал, пошлите сообщение тому же самому адресу, включив строку
X-Mn-Admin: leave DOC
Прокладка Ethernet кабеля.
Если вы устанавливаете Ethernet впервые в вашей жизни, несколько сказанных здесь слов могут быть вам полезны. Ethernet - очень чувсвителен к правельности прокладки кабеля. Кабель должен с обоих концов закрыватся 50 Омным резистором и не каких ответвлений. Если Вы используете тонкий кабель с T-образными BNC переходами, эти переходы должны быть вкручены непосредственно в плату.
Если Вы используете толстый кабель, Вы должны присоеденять ваш хост через transceiver. Вы можете воткнуть transceiver непосредственно AUI порт на вашей плате, но можете также использовать кусок кабеля.
Просмотр Sendmail + IDA Таблиц
Sendmail + IDA обеспечивает ряд таблиц, которые позволяют Вам отменять заданное по умолчанию поведение sendmail (заданное в файле sendmail.m4) и определять специальное поведение для уникальных ситуаций, отдаленных систем, и Сетей. Эти таблицы обрабатываются dbm используя Make-файл, обеспеченный распределением. Большинство абонентов будет нуждаться в некоторых из этих таблиц. Если ваш пункт не требует этих таблиц, самая простая вещь, возможно, сделать их файлами нулевой длины (командой touch) и использовать заданный по умолчанию Make-файл в LIBDIR, а не редактировать Make-файл непосредственно.
Протокол Контроля Передачи (TCP)
Но конечно, посылка дэйтаграм от одного хоста к другому это не все если Вы вошли на quark, Вы хотите иметь надежную связь между вашим процессом rlogin на erdos и процессе оболочки на quark. Таким образом, информация посылаемая туда и обратно должна быть разбита на пакеты отправителем, и повторно собираться в поток приемником. Хотя это кажется тривиальным, здесь появляется несколько достаточно сложных задач.
Очень важно знать об IP, что он не надежен. Предположим что десять людей на вашем Ethernet начали загружать самый последний выпуск XFree86 с GMU FTP сервера. Такая активность может оказаться слишком большой для того чтобы gateway переварил ее, потому что он слишком медленен, и ограничен количеством памяти. Теперь если Вы пошлете пакет от quark, у sophus может не хватить места в буфере и поэтому он не сможет отправить этот пакет. IP решает эту проблему просто забывая про данный пакет. Пакет безвозвратно потерян. Таким образом ответственность за целостность данных перекладывается на поддерживающие связь хосты.
Это происходит в соответствии c другим протоколом, TCP, или Протоколом Контроля Передачи, который надстраивается над IP для создания связи с проверкой целостности данных. Существенный плюс TCP то, что он использует IP, что создает иллюзию простой связи между двумя процессами на вашем хосте и отдаленной машине, так, что Вы не заботитесь о том как и по которому маршрут ваши данные фактически путешествуют. A TCP создает дуплексную связь, позволяющую одновременно как посылать так и получать информацию. Представте телефонную беседу.
В TCP точки связи определяются IP адресами хостов , и номерами так называемых портов на каждом из хостов. Порты служат для определения процесса с которым устанавливается связь. Если опять обратится к примеру с телефоном, то IP адрес соответствует кодам городов, а номер порта местному номеру телефона. В примере с rlogin, приложение-клиент (rlogin) открывает порт на erdos, и соединяется с портом 513 на quark, который прослушивает rlogind сервер. Таким образом и устанавливает TCP связь. Используя эту связь, rlogind выполняет процедуру определения прав доступа, и запускает оболочку. Стандартный ввод/вывод этой оболочки перенаправляются на TCP связь, таким образом все, набранное вами в rlogin на вашей машине будет передано через TCP поток на стандартный ввод оболочки.
Проверка ARP Таблицы
В некоторых случаях, бывает полезно просмотреть или даже изменить содержание ARP таблицы, например, когда Вы подозреваете, что двойной адрес причина некоторой сетевой неустойчивости. аrp был сделан для исправления подобных вещей.
Arp [-v] [ -t hwtype ] -a [hostname] arp [-v] [ -t hwtype ] -s hostname hwaddr arp [-v] -d hostname [ hostname ... ]
hostname аргумент может быть как символическим именем, так и IP адресом в dotted quad стандарте.
Первая строка отображает ARP запись для IP адреса или указанного хоста или всех известный хостов, если hostname не дается. Например, вызов arp на vlager может выдать
# arp -a IP address HW type HW address 191.72.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1 191.72.1.2 10Mbps Ethernet 00:00:C0:90:B3:42 191.72.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
что показывает Ethernet адреса vlager, vstout и vale.
При использовании -t опции Вы увидите информацию только о том типе аппаратных средств, который вы укажете. Это может быть ethernet, ax25net, или pronet, стоящие за 10Mbps Ethernet, AMPR AX.25, и IEEE 802.5 token ring оборудование, соответственно.
-s опция используется чтобы добавить Ethernet адрес хоста к ARP таблицам. hwaddr аргумент определяет адрес аппаратных средств, который по умолчанию предполагается Ethernet адресом, указанным как шесть шестнадцатиричных байт, разделяемых двоеточиями. Вы можете также устанавливать адрес аппаратных средств для других типов аппаратных средств, также, используя -t опцию.
Одна из проблем, которая может потребовать, чтобы Вы вручную добавили IP адрес к ARP таблице, когда по некоторым причинам ARP вопросы для удаленного хоста не доходят, например когда глючит ARP драйвер или имеется другой хост в сети которая ошибочно опознает себя с IP адресом того хоста. Твердая установка IP адреса в ARP таблице также (очень решительно) является мерой защиты себя от хостов на вашем Ethernet, которые прикидываются кем-то другим.
Вызов arp с использованием ключа -d удаляет все ARP записи касающиеся данного хоста. Это может быть необходимо, чтобы вынудить интерфейс повторно получить Ethernet адрес для данного IP. Это полезно когда переконфигурированная система имеет неправильную ARP информацию.
- s опция может также использоваться чтобы создать proxy ARP. Это специальная техника когда хост, скажем gate, действует как gateway для другого хоста назовем его fnord, делая вид что оба адреса относят тому же самому хосту, а именно gate. Это делается так: на gate создается ARP запись о fnord, которая указывает на его собственный Ethernet интерфейс. Теперь когда хост посылает ARP запрос о fnord, gate будут возвращать ответ содержащий собственный Ethernet адрес. Спрашивающий хост будет тогда посылать все дэйтаграмы gate, который перенаправит их к fnord.
Эти схема может быть необходима, например, когда Вы хотите работать с fnord из DOS машины с нестандартным TCP, которое плохо работает с маршрутизацией. Когда Вы используете proxy ARP, DOS машине как будет казаться, что fnord находится в локальной подсети, так что ей не требуется что-либо знать относительно маршрутов и gateway.
Другое очень полезное приложение proxy ARP -- когда один из ваших хостов действует как gateway к некоторому другой хост только временно, например по телефону. В предыдущем примере, мы уже столкнулись с laptop vlite, который был связан с vlager через PLIP связь только в небольшом промежутке времени. Конечно, это будет работать только, если адрес хоста для, которого Вы хотите обеспечить proxy ARP, находится на той же самой IP подсети, что и ваш gateway. Например, vstout мог бы быть proxy ARP для любого хоста из подсети Пивоварни (191.72.1.0), но никогда для хоста из подсети Винодельни (191.72.2.0).
Требуемые действия для обеспечения proxy ARP для fnord дается ниже; конечно, Ethernet адрес должен быть от gate.
# arp -s fnord 00:00:c0:a1:42:e0 pub
proxy ARP запись может быть удалена снова используя:
# arp -d fnord
Проверка с помощью netstat
Дальше, Я рассмотрю полезный инструмент для проверки вашей сетевой конфигурации и активности. Он назван netstat и ,фактически, является набором из нескольких инструментов собранных вместе. Мы будем обсуждать каждую из функций в следующих секциях.
Проверка установки сервера(Name Server Setup).
3. Заметьте, что Вы не сможете сделать запрос для Вашего сервера на root серверы, если Вы не имеете какие-нибудь root server hints: Захватите 22! Чтобы выйти из этой дилеммы, Вы можете также попробовать заставите nslookup использовать другой сервер, или Вы можете использовать примерный файл на рисунке 7.2.3, и затем получить полный список подходящих серверов.
; ; /var/named/named.hosts Local hosts at the brewery ; Origin is vbrew.com ; @ IN SOA vlager.vbrew.com. ( janet.vbrew.com. 16 ; serial 86400 ; refresh: once per day 3600 ; retry: ong howr 3600000 ; expire: 42 days 604800 ; minimum: 1 week ) IN NS vlager.vbrew.com. ; ; local mail is distributed on vlager IN MX 10 vlager ; ; loopback address localhost. IN A 127.0.0.1 ; brewery Ethernet vlager IN A 191.72.1.1 vlager-if1 IN CNAME vlager ; vlager is also news server news IN CNAME vlager vstout IN A 191.72.1.2 vale IN A 191.72.1.3 ; winery Ethernet vlager-if2 IN A 191.72.2.1 vbardolino IN A 191.72.2.2 vchianti IN A 191.72.2.3 vbeaujolais IN A 191.72.2.4
Рисунок 11. Файл named.hosts.
Существует прекрасное средство для проверки действия установки Вашего сервера(server setup). Оно называется nslookup, и может быть использовано и в интерактивном режиме и из командной строки. В последнем случае, Вы просто вызываете ее как
nslookup hostname
и она сделает запрос на сервер, определенный в resolv.conf, для hostname. (Если эти имена файла больше чем один сервер, nslookup выберет какой-нибудь один)
; ; /var/named/named.local Reverse mapping of 127.0.0 ; Origin is 0.0.127.in- addr.arpa. ; @ IN SOA vlager.vbrew.com. ( joe.vbrew.com. 1 ; serial " " 360000 ; refresh: 100 hrs 3600 ; retry: one hour 3600000 ; expire: 42 days ; minimum: 100 hrs ) IN NS vlager.vbrew.com. 1 IN PTR localhost.
Рисунок 12. Файл named.local.
Интерактивный режим, является намного более захватывающим. Кроме того при просмотре индивидуальных хостов, Вы можете сделать запрос для любого типа DNS записи, и перенести зональную информацию для области.
Authoritative answers can be found from: UNC.EDU nameserver = SAMBA.ACS.UNC.EDU SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Таким образом Вы можете сделать запрос для MX записей, и т.д. Использование типа ANY вернет все исходные записи, связанные с данным именем.
> set type=MX > unc.edu Non-authoritative answer: unc.edu preference = 10, mail exchanger = lambada.oit.unc.edu lambada.oit.unc.edu internet address = 152.2.22.80
Authoritative answers can be found from: UNC.EDU nameserver = SAMBA.ACS.UNC.EDU SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Практическое применение nslookup, помимо отладки, - получить текущий список root серверов для файла named.ca. Вы можете сделать это, запрашивая все типы NS записей, связанные с root областью:
> set typ=NS > . Name Server: fb0430.mathematik.th-darmstadt.de Address: 130.83.2.30
Non-authoritative answer: (root) nameserver = NS.INTERNIC.NET (root) nameserver = AOS.ARL.ARMY.MIL (root) nameserver = C.NYSER.NET (root) nameserver = TERP.UMD.EDU (root) nameserver = NS.NASA.GOV (root) nameserver = NIC.NORDU.NET (root) nameserver = NS.NIC.DDN.MIL
Authoritative answers can be found from: (root) nameserver = NS.INTERNIC.NET (root) nameserver = AOS.ARL.ARMY.MIL (root) nameserver = C.NYSER.NET (root) nameserver = TERP.UMD.EDU (root) nameserver = NS.NASA.GOV (root) nameserver = NIC.NORDU.NET (root) nameserver = NS.NIC.DDN.MIL NS.INTERNIC.NET internet address = 198.41.0.4 AOS.ARL.ARMY.MIL internet address = 128.63.4.82 AOS.ARL.ARMY.MIL internet address = 192.5.25.82 AOS.ARL.ARMY.MIL internet address = 26.3.0.29 C.NYSER.NET internet address = 192.33.4.12 TERP.UMD.EDU internet address = 128.8.10.90 NS.NASA.GOV internet address = 128.102.16.10 NS.NASA.GOV internet address = 192.52.195.10 NS.NASA.GOV internet address = 45.13.10.121 NIC.NORDU.NET internet address = 192.36.148.17 NS.NIC.DDN.MIL internet address = 192.112.36.4
Полная система команд, доступных с nslookup может быть получена при использовании команды help изнутри nslookup.
Путешествие по сетевым устройствам Linux
Linux ядро поддерживает несколько драйверов для различных типов оборудования. Эта секция дает краткий обзор семейств доступных драйверов, и имен интерфейсов, используемых для них.
В Linux имеются ряд стандартных имен интерфейсов, которые описаны ниже. Большинство драйверов поддерживают больше чем один интерфейс, тогда интерфейсы перечисляются как в eth0, eth1, и т.д..
lo локальный интерфейс для loopback. Он используется для отладки, а также парой сетевых приложений. Он работает подобно замкнутому циклу, возвращая все дэйтаграмы, переданные ему, сетевому уровню того же хоста. В ядре имеется всего одно loopback устройство, и нет большого смысла в наличии меньшего или большего количества.
ethn n-ая Ethernet карта. Это имя интерфейса генерируется для большенства Ethernet плат.
dln Это интерфейс доступа к D-Link DE-600 пакетному адаптеру (другое Ethernet устройство). Разница в том, что DE-600 работает через параллельный порт.
sln n-ый SLIP интерфейс. Первая последовательная линия отконфигурируемая под SLIP становится sl0, и т.д.. Ядро поддерживает до четырех SLIP интерфейсов.
pppn n-ый PPP интерфейс. Подобно SLIP интерфейсам, PPP интерфейс связан с последовательной линией, если только она отконфигурирована для PPP. В настоящее время поддерживается до четырех интерфейсов.
plipn n-ый PLIP интерфейс. PLIP транспортирует IP дэйтаграмы по параллельным линиям. Поддерживается до трех PLIP интерфейсов. Они устанавливаются PLIP драйвером при загрузке системы, и отображают параллельные порты.
Для других драйверов интерфейса, которые могут быть добавлены в будущем, подобно ISDN или AX.25, будут предоставлены другие имена.
В следующих секциях, мы будем обсуждать детали использования драйверов описанных выше.