|
# cd /var/spool/uucp/pablo
# echo 94316 > .Sequence
# chmod 600 .Sequence
# chown uucp.uucp .Sequence
Конечно, удаленная система должна дать возможность проверки последовательности обращения и использовать то же самое начальное значение, что и Вы.
C-News и NFS Простой способ распределять
Когда Вы используете NFS, статьи зарегистрированные на локальном компьютере должны быть посланы центральной машине, потому что прямое обращение к административным файлам может привести к возникновению непоследовательных (противоречивых) файлов. Кроме того, Вы наверняка хотите защитить область хранения новостей, экспортируя ее только для чтения, что также требует пересылки центральной машине.
C-News обрабатывает эту конфигурацию прозрачно для пользователя. Когда Вы регистрируете статью, Ваш пакет работы с новостями обычно вызывает inews, чтобы ввести статью в систему новостей. Эта команда выполняет ряд проверок статьи, заполняет ее заголовок и проверяет файл server в /etc/news. Если этот файл существует и содержит имя, отличное от имени локального компьютера, inews вызывается на удаленном компьютере через rsh. Так как скрипт inews
использует ряд исполняемых модулей и файлов поддержки из C-News, Вы должны иметь C-News на локальной машине или монтировать программное обеспечение новостей по сети.
Для того, чтобы rsh мог работать правильно, каждый пользователь, регистрирующий новости, должен иметь эквивалентное имя на сервере, то есть, иметь возможность зайти на сервер без запроса пароля.
Удостоверьтесь, что имя сервера в server
буквально соответствует выводу команды hostname на сервере. Иначе C-News зациклится навсегда при попытке доставить статью. NFS подробно обсуждется в главе 14.
Cables
Linux Network Administrators Guide
Назад |
|
Вперед |
Что нужно знать UUCP
Работа программ Linux слегка напоминает работу разведки: никто не должен знать лишнего.
Прежде, чем Вы начинаете писать файлы конфигурации UUCP, Вы должны выяснить некоторую необходимую информацию. Сначала Вы должны выяснить, к какому последовательному порту присоединен модем. Обычно порты DOS COM1-COM4 отображаются на специальные файлы устройств с /dev/ttyS0 по /dev/ttyS3. Большинство дистрибутивов, например, Slackware, создают файл /dev/modem как ссылку на соответствующий файл устройства ttyS* и конфигурируют коммуникационные программы kermit, seyon, чтобы они использовали этот обобщенный файл. В этом случае Вы должны также использовать /dev/modem в Вашей конфигурации UUCP.
Что нужно знать UUCP
Работа программ Linux слегка напоминает работу разведки: никто не должен знать лишнего.
Прежде, чем Вы начинаете писать файлы конфигурации UUCP, Вы должны выяснить некоторую необходимую информацию. Сначала Вы должны выяснить, к какому последовательному порту присоединен модем. Обычно порты DOS COM1-COM4 отображаются на специальные файлы устройств с /dev/ttyS0 по /dev/ttyS3. Большинство дистрибутивов, например, Slackware, создают файл /dev/modem как ссылку на соответствующий файл устройства ttyS* и конфигурируют коммуникационные программы kermit, seyon, чтобы они использовали этот обобщенный файл. В этом случае Вы должны также использовать /dev/modem в Вашей конфигурации UUCP.
Причина этого в том, что все программы используют так называемые файлы блокировки (lock files), чтобы сообщить, когда последовательный порт используется. Имена этих файлов блокировки являются конкатенацией строки LCK.. и имени файла устройства, например, LCK..ttyS1. Если программы используют различные имена для одного устройства, они будут не в состоянии распознавать чужие файлы блокировки. Как следствие, они прервут чужие сеансы связи. Это не такое уж маловероятное событие, если Вы планируете, чтобы UUCP использовал crontab. Подробности настройки последовательных портов описаны в главе 4.
Затем Вы должны выяснить, с какой скоростью модем и Linux могут связываться, и установить максимальную эффективную скорость передачи. Эффективная скорость передачи может быть намного выше, чем физическая скорость модема. Например, много модемов посылают и получают данные на скорости 56 kbps. Использование протоколов сжатия (например, V.42bis) позволяет установить фактическую скорость передачи более, чем в 100 kbps.
Конечно, если Вы хотите, чтобы UUCP cделал что-нибудь, Вам нужен номер телефона системы для вызова. Также Вам нужен идентификатор для входа в систему и, возможно, пароль для удаленной машины.
Также надо знать порядок входа в систему. Следует ли нажать клавишу Enter перед появлением приглашения для входа? Что будет отображено: login: или user:? Это необходимо для создания сценария дружеской беседы (chat script), который описывает uucico как регистрироваться. Если у Вас возникают затруднения, попробуйте вызывать систему программой терминала kermit или minicom и записать точно, что Вы делаете.
Что такое firewall? Firewall это
Firewall выполняет фильтрацию сетевого трафика на уровне протоколов обмена пакетами. Он пропускает пакеты, удовлетворяющие определенным критериям из внешней сети во внутреннюю и наоборот. Критерии задаются правилами фильтрации, которые могут быть очень сложными. Фильтр пакетов также отбрасывает пакеты, которые не соответствуют заданным критериям. При этом на машину-отправитель может быть (а может и не быть, зависит от настройки) послано сообщение об ошибке.
Таким образом, firewall скрывает внутреннюю организацию сети от внешнего мира и повышает надежность ее работы. Сеть оказывается защищена от атак хакеров. К сожалению, полной защиты такой подход не гарантирует: всегда найдется умный хакер, который даже firewall обойдет. Но все же firewall резко осложняет жизнь хакерам.
Ядро Linux предоставляет встроенные функции IP firewall. Сетевой код ядра реализует IP filtering несколькими способами и предоставляет интерфейс для управлния правилами фильтрации. Кроме того, Linux firewall имеет еще две полезные функции, не связанные напрямую с фильтрацией пакетов. Они будут рассмотрены позже, пока я просто назову их. Это IP Accounting (глава 10) и IP masquerade (глава 11).
С сожалением должен констатировать факт, что именно в этой области эквивалентной сетевой терминологии на русском пока нет. В среде администраторов сложилась своя терминология, заимствовавшая много английских слов. К тому же, там сложилось отрицательное отношение ко всем попыткам ввести какие-то русские переводы терминов. Частично я согласен с таким отношением, поскольку все попытки перевода отличаются либо огромными размерами и туманными формами, либо не вполне отражают смысл. Я не считаю, что здесь нужна реформа языка, поскольку профессиональная терминология уже устоялась, все специалисты ее понимают, а если она не похожа на русскую, так велика ли беда? Поэтому в изложении я придерживаюсь устоявшейся в этой области терминологии. Если используется несколько разных слов для обозначения одного понятия, я использую их вместе.
Что такое IP Filtering? IP filtering
Номера портов (для TCP/UPD)
Типы пакетов: SYN/ACK, data, ICMP Echo Request и т.д.
Откуда пришел пакет
Куда идет пакет
Важно понять, что IP-фильтрация является средством сетевого уровня. Это означает, что она не понимает ничего относительно прикладной программы, использующей сетевые подключения, а понимает только что-то непосредственно относительно подключений. Например, Вы можете отвергать доступ пользователей к Вашей внутренней сети через telnet-порт, но если Вы полагаетесь ТОЛЬКО на IP-фильтрацию, Вы не сможете запретить использование программы telnet с портом, с которого Вы позволяете передавать пакеты через Ваш firewall. Вы можете предотвращать эти проблемы, используя прокси-сервер для каждого сервиса, проходящего через firewall. Прокси-серверы понимают прикладную программу, под которую они были разработаны, и предотвращают злоупотребления типа использования программы telnet, чтобы обойти firewall через порт для World Wide Web. Если Ваш firewall поддерживает прокси для World Wide Web, telnet будет всегда соединяться только с ним, и проходить будут только HTTP-запросы. Есть много прокси-серверов, как коммерческих, так и свободных. Они хорошо рассмотрены в Firewall-HOWTO.
Набор правил IP-фильтрации задает много правил. Например, допустим, что Вы позволяете пользователям World Wide Web в сети Virtual Brewery network обращаться только к другим web-серверам в Internet. Настройте Ваш firewall на пропуск пакетов:
С исходными адресами сети Virtual Brewery network, любым сайтом назначения и портом назначения 80 (WWW)
С адресом назначения в сети Virtual Brewery network и портом назначения 80 (WWW) с любого исходного адреса.
Здесь использованы два правила фильтрации. Мы должны позволить нашим данным выходить, но также должны позволить возвращаться ответам на запросы. На деле Linux упрощает это и позволяет нам определять эти правила в одной команде.
Что такое почтовое сообщение?
Эта административно-управленческая информация относится к двум категориям: во-первых, любые данные, которые являются специфическими для транспортной среды, подобно адресам отправителя и получателя. Это называется конвертом или оболочкой. Эти данные могут быть преобразованы транспортным программным обеспечением при передаче сообщения.
Во-вторых, данные необходимые для обработки сообщения почты, которые не являются частью транспортного механизма, типа темы сообщения, списка всех получателей и даты. Во многих сетях стало стандартным добавлять эти данные к сообщению, формируя так называемый заголовок почты (mail header). Эта информация отделена от собственно письма (mail body) пустой строкой.
Большая часть программного обеспечения для транспортировки почты в мире Unix использует формат заголовка, определенный в RFC-822. Его первоначальная цель: определить стандарт для использования в ARPANET. Позже он был адаптирован к разным сетям, включая UUCP-сети.
RFC-822 задает только самые общие данные. Более современные стандарты были задуманы, чтобы справиться с возрастанием потребностей как, например, шифрование данных, поддержка наборов национальных символов и мультимедиа расширений почты (MIME), которые подробно описаны в RFC-1341 и других RFC.
Во всех этих стандартах заголовки состоят из отдельных строк, отделяемых символами перевода строки. Имя поля начинается с первого символа строки. Поля заголовка могут занимать несколько строк. В этом случае все строки, кроме первой, начинаются с символа табуляции. Имена и семантика полей очень отличаются. Поля могут располагаться в любом порядке.
Типичный заголовок выглядит примерно так:
|
Return-Path: Received: ursa.cus.cam.ac.uk (cusexim@ursa.cus.cam.ac.uk [131.111.8.6]) by al.animats.net (8.9.3/8.9.3/Debian 8.9.3-6) with ESMTP id WAA04654 for ; Sun, 30 Jan 2000 22:30:01 +1100 Received: from ph10 (helo=localhost) by ursa.cus.cam.ac.uk with local-smtp (Exim 3.13 #1) id 12EsYC-0001eF-00; Sun, 30 Jan 2000 11:29:52 +0000 Date: Sun, 30 Jan 2000 11:29:52 +0000 (GMT) From: Philip Hazel Reply-To: Philip Hazel To: Terry Dawson , Andy Oram Subject: Electronic mail chapter In-Reply-To: Message-ID:
<
/p>
Обычно, все необходимые поля заголовка генерируются Вашим mailer`ом (программой для работы с электронной почтой), например elm , pine, mush или mailx. Некоторые поля необязательны и могут быть добавлены пользователем. Например, elm позволяет редактировать часть заголовка сообщения. Ниже приведен список наиболее часто используемых полей с пояснением их значения:
From:
Содержит email-адрес отправителя и, возможно, его "реальное имя".
To:
email-адрес получателя. Может быть несколько адресов, они разделяются запятыми.
Cc:
Кому послать копии. Может быть несколько адресов, они разделяются запятыми.
Bcc:
Кому послать невидимые копии. Может быть несколько адресов, они разделяются запятыми. Разница между "Cc:" и "Bcc:" в том, что "Bcc:"-получатели не увидят имен и адресов других получателей, а "Cc:"-получатели их увидят.
Subject:
Тема сообщения в нескольких словах.
Date:
Дата посылки почты.
Reply-To:
Определяет адрес для ответа получателя. Это может быть полезно, если Вы имеете несколько адресов, но хотите получать большую часть почты только на том, который Вы используете наиболее часто. Это поле необязательно.
Organization:
Организация, которая обладает машиной, с который послана почта. Это поле необязательно и не упоминается ни в одном RFC.
Message-ID:
Строка, сгенерированная транспортировщиком почты. Она уникальна для этого сообщения.
Received:
Каждый пункт, через который проходит почта (включая машины отправителя и получателя), вставляет такое поле в заголовок, указывая имя пункта, идентичность сообщения, время и дату получения сообщения, из какого пункта оно происходит, и какое транспортное программное обеспечение использовалось. Это сделано, чтобы Вы могли проследить путь сообщения. Так можно доказать, что какое-то письмо, которое приписывают Вам, было послано не с Вашей машины и является фальшивкой.
X-anything:
Почтовые программы не должны жаловаться на заголовки, которые начинаются с X-. Они используются, чтобы воплотить дополнительные возможности, которые еще не реализованы в RFC. Например, один из крупных серверов списков рассылки по Linux указывает имя списка в поле X-Mn-Key:.
Одно исключение в этой структуре: самая первая строка. Она начинается с ключевого слова From, которое сопровождается пробелом вместо двоеточия. Она содержит маршрут, время и дату, когда письмо было получено последней машиной, обрабатывавшей его, и необязательную часть, определяющую, от какой системы оно было получено.
Доставка новостей Статьи могут
Для каждой статьи команда relaynews проверяет, была ли статья уже замечена на локальной машине, для чего ищет id сообщения в файле хронологии (history). Копии статьи будут пропущены. Затем relaynews рассматривает строку заголовка Newsgroups:, чтобы выяснить, запрашивает ли локальная машина статьи из любой из этих групп. Если она это делает, и группа новостей перечислена в файле active, relaynews пробует сохранить статью в соответствующем каталоге в области хранения новостей. Если этот каталог не существует, он будет создан. Id сообщения статьи будет зарегистрирован в файле history. В противном случае
relaynews пропускает статью.
Если relaynews будет не в состоянии сохранить входящую статью, потому что группа, в которой она была зарегистрирована, не перечислена в вашем файле active, статья будет перемещаться в группу junk. relaynews также проверит старые или статьи без дат и уничтожит их. Входящие пакеты, которые терпят неудачу по любой другой причине, перемещаются в /var/spool/news/in.coming/bad , и регистрируется сообщение об ошибках.
После этого статья рассылается всем сайтам, запросившим новости из этой группы способом, специфичным для каждого конкретного сайта. Чтобы не посылать статью одному и тому же сайту несколько раз, проверяется поле Path: заголовка статьи, в нем указываются все машины, через которые прошла статья. Сайту будет послана статья, только если он не упомянут в этом поле.
C-News обычно используется, чтобы передавать новости между UUCP-машинами, хотя можно использовать его и в NNTP-среде. Чтобы доставить новости на удаленную UUCP-машину делается следующее: используется uux для вызова на удаленной машине команды rnews с последующей перекачкой статьи или набора статей на эту машину. Подробно UUCP рассматривается в главе 16.
Когда удаленный сайт поддерживает пакетирование, C-News не рассылает статьи поштучно, а добавляет имена их файлов в некий файл, обычно out.going/site/togo. Периодически из crontab вызывается программа пакетирования, которая записывает статьи в файл, сжимает их, если это задано, и отправляет rnews на удаленной машине.
Доставка писем на локальные адреса
Обычно локальный адрес задает только имя входа пользователя в систему, тогда сообщение будет доставлено в почтовый ящик пользователя, /var/spool/mail/
user-name. Другие случаи включают псевдонимы, имена списков рассылки и пересылку почты. В этих случаях локальный адрес расширяется до нового списка адресов, которые могут быть локальными или удаленными.
Доставка писем на локальные адреса
Обычно локальный адрес задает только имя входа пользователя в систему, тогда сообщение будет доставлено в почтовый ящик пользователя, /var/spool/mail/
user-name. Другие случаи включают псевдонимы, имена списков рассылки и пересылку почты. В этих случаях локальный адрес расширяется до нового списка адресов, которые могут быть локальными или удаленными.
Кроме этих "нормальных" адресов Exim может обрабатывать другие типы локальных адресатов сообщения, подобные командам канала и именам файла. При доставке в файл Exim добавит в него сообщение, создавая файл в случае необходимости. Файл и адресаты канала не являются адресами в обычном смысле, так что Вы не можете посылать почту, скажем, на /etc/passwd@vbrew.com и перезаписывать файл пароля; доставка в специфический файл имеет силу только, если она исходит из файлов псевдонима или из команды пересылки. Обратите внимание, что адрес /etc/passwd@vbrew.com синтаксически имеет силу, но если Exim получил такой адрес, он обычно будет искать пользователя, чье имя входа в систему /etc/passwd, что приведет к сбою и сообщению об ошибке.
В списке псевдонима или файле пересылки имя файла начинается со слэша (/?), если оно не является полным адресом почты. Например, /tmp/junk в файле пересылки или псевдонимов интерпретируется как имя файла, но /tmp/junk@vbrew.com будет воспринят как адрес email, хотя это вряд ли будет очень полезным. Однако имеющий силу адрес этого типа замечен при посылке почты через шлюзы X.400, потому что в X.400 адреса начинаются с наклонной черты вправо. В общем, маршрутизация почты всегда была сложной.
Командой канала (pipe command) может быть любая команда Unix, которой предшествует символ канала (|), если строка не является полным адресом email с указанием домена. Если Вы не изменили конфигурацию, Exim не использует оболочку, чтобы выполнить команду; вместо этого он разделяет ее на команду и параметры, сам и выполняет непосредственно. Сообщение будет подано команде на стандартном вводе.
Например, для пересылки из списка рассылки в локальную группу новостей Вы могли бы использовать скрипт gateit и установить локальный псевдоним, который доставляет все сообщения от этого списка адресатов до скрипта, используя |gateit. Если командная строка содержит запятую, команда и предшествующий символ канала должны быть заключены в двойные кавычки.
Драйверы PPP и SLIP Point-to-Point
Для запуска PPP или SLIP не нужно никаких изменений оборудования: Вы можете использовать любой последовательный порт. Так как конфигурация последовательного порта не специфическая для работы с сетями TCP/IP, она рассмотрена в отдельной главе. Подробности есть в главе 4. PPP детально рассмотрен в главе 8, а SLIP в главе 7.
Другие полезные инструменты
Есть несколько инструментальных средств, которые могут помочь Вам в решении задач. Здесь кратко описаны два таких средства.
Другие полезные инструменты
Есть несколько инструментальных средств, которые могут помочь Вам в решении задач. Здесь кратко описаны два таких средства.
Программа hostcvt помогает Вам построить конфигурацию с нуля, преобразуя файл /etc/hosts в главные файлы для named. Она генерирует прямой (A) и обратный (PTR) коды отображения и заботится о псевдонимах. Конечно, она не сделает всю работу за Вас, поскольку Вам все еще нужно настраивать значения времени ожидания в записи SOA или добавить MX-записи. Утилита hostcvt входит в пакет BIND, но доступна и отдельно с нескольких Linux FTP-серверов.
После установки сервера имен Вы должны проверить его конфигурацию. Некоторые хорошие инструментальные средства делают эту работу проще. Во-первых, это dnswalk, основанный на Perl. Во-вторых, nslint. Они оба обходят базу данных DNS, ищут общие ошибки и проверяют, что информация является непротиворечивой. Два других полезных инструментальных средства, host и dig, являются универсальными средствами для запроса базы данных DNS. Вы можете использовать эти инструментальные средства, чтобы вручную осматривать и диагностировать записи базы данных DNS.
Скорей всего, все эти средства доступны в откомпилированном виде. Утилиты dnswalk и nslint доступны в исходниках с http://www.visi.com/~barr/dnswalk и ftp://ftp.ee.lbl.gov/nslint.tar.Z. Утилиты host и dig доступны в исходниках с ftp://ftp.nikhef.nl/pub/network и ftp://ftp.is.co.za/networking/ip/dns/dig.
Два формата почтовых адресов
При работе с почтой часто возникает необходимость обмена почтой между системами с разными системами адресации. Конечно, есть ряд шлюзов, которые обеспечивают хождение почты, но это приводит к проблемам задания адресов. Я не буду рассматривать шлюзы подробно, но давайте изучим некоторые из осложнений адресации, которые могут возникать, когда используются шлюзы.
Два формата почтовых адресов
При работе с почтой часто возникает необходимость обмена почтой между системами с разными системами адресации. Конечно, есть ряд шлюзов, которые обеспечивают хождение почты, но это приводит к проблемам задания адресов. Я не буду рассматривать шлюзы подробно, но давайте изучим некоторые из осложнений адресации, которые могут возникать, когда используются шлюзы.
Основная проблема: смшивание UUCP стиля bang-path и формата RFC-822. Эти два типа адресации соединить не так-то просто. Допустим, есть адрес domainA!user@domainB. Неизвестно, что важнее: знак @ или путь. Другими словами: мы должны послать сообщение на domainB, который отправляет его на domainA!user, или письмо надо послать domainA, который отошлет его user@domainB?
Адреса, в которых операторы адресации смешаны, называются гибридными (hybrid addresses). В только что приведенном примере считается, что знак @ важнее пути. Запись domainA!user@domainB означает послать сообщение сначала на domainB.
Имеется способ определить маршруты RFC822-совместимыми способами: обозначает адрес пользователя user в домене domainC, где domainC должен быть достигнут через domainA и domainB (именно в этом порядке!). Этот тип адресов часто называется адресом, направленным источником (source routed). Положиться на это поведение не очень хорошая идея, поскольку изменения в RFC, описывающие маршрутизацию почты, рекомендуют, чтобы маршрутизация источника в адресе почты игнорировалась, а взамен должна быть сделана попытка доставить письмо непосредственно удаленному адресату.
Когда имеется оператор адреса % (например, user%domainB@domainA), письмо будет сначала послано domainA, который превратит знак процента в знак @. Теперь адрес user@domainB, и почтовая программа передаст Ваше сообщение на domainB, который перешлет его пользователю user. Этот тип адреса иногда упоминается как "Ye Olde ARPAnet Kludge" и его использование не приветствуется. Однако, много средств транспортировки почты генерируют этот тип адреса.
Но лучше всего использовать адрес именно в виде абсолютного адреса RFC-822 user@host.domain, если это позволяет Ваша система.
Файл active Файл active расположен
newsgroup, конечно, имя группы. low и high
задают предельное число статей, доступных в настоящее время. Если ни одна не является доступной в настоящее время, low =high+1.
По крайней мере предполагается, что поле low это хранит. Но, из соображений эффективности, C-News не модифицирует это поле. Это не было бы большой потерей, если бы не имелось программ чтения новостей, которые зависят от этого поля. Например, trn проверяет это поле, чтобы видеть, может ли он очистить свою базу данных статей. Для обновления поля
low надо регулярно выполнять команду updatemin (или в более ранних версиях C-News скрипт upact).
perm представляет собой параметр, детализирующий доступ пользователей в зависимости от группы. Он принимает одно из следующих значений:
y
Пользователям разрешают отправлять статьи в эту группу.
n
Пользователям не разрешают отправлять статьи в эту группу. Однако группа может читаться.
x
Эта группа была локально заблокирована. Это случается, когда администраторы новостей закрывают статьи, зарегистрированные в некоторых группах.
Статьи, полученные для этой группы, не сохраняются локально, хотя они будут посланы абонентам, которые запрашивают их.
m
Это обозначает модерируемую группу. Когда пользователь пробует отправлять статью в эту группу, интеллектуальный newsreader сообщит, какая она, и пошлет статью модератору. Адрес модератора берется из файла moderators в /var/lib/news .
=real-group
Это отмечает newsgroup как локальный псевдоним для другой группы, а именно real-group. Все статьи, зарегистрированные в newsgroup, будут переназначены в real-группу.
В C-News, Вы вообще не должны обращаться к этому файлу непосредственно. Группы могут быть добавлены или удалены, используя
addgroup и delgroup (см. ниже ). Когда группы добавляются или удаляются для всего Usenet, это обычно делается, посылая сообщение управления newgroup или rmgroup соответственно. Никогда не посылайте такое сообщение самостоятельно!
О том, как создавать newsgroup, читайте ежемесячник в news.announce.newusers.
Файл, близко связанный с active, active.times. Всякий раз, когда группа создается, C-News пишет в этот файл сообщение, содержащее имя созданной группы, дату ее создания, было ли это выполнено в соответствии c сообщением управления newgroup или локально, и кто сделал это. Это сделано для удобства программ чтения новостей, которые могут сообщать пользователю о любой недавно созданной группе. Это также используется командой NEWGROUPS протокола NNTP.
Файл exports Рассмотрим, как настроить
По умолчанию, rpc.mountd не позволяет кому угодно монтировать файловые системы по сети, что является довольно разумной позицией. Для того, чтобы разрешить одному или большему количеству хостов монтировать nfs-каталог, он должен быть экспортирован, то есть определен в файле exports. Типовой файл может выглядеть следующим образом:
|
# exports file for vlager /home vale(rw) vstout(rw) vlight(rw) /usr/X11R6 vale(ro) vstout(ro) vlight(ro) /usr/TeX vale(ro) vstout(ro) vlight(ro) / vale(rw,no_root_squash) /home/ftp (ro)
Каждая строка определяет каталог и хост, которому можно монтировать его. Имя хоста обычно задает его полное доменное имя, но может содержать универсальные символы * и ?, которые действуют аналогично их действию в оболочке Bourne. Например, lab*.foo.com
соответствует lab01.foo.com также, как и laboratory.foo.com. Если имя хоста не задано, как с каталогом /home/ftp в примере выше, то любому хосту позволено монтировать этот каталог. Хост может быть также задан его IP-адресом в форме address/ netmask.
При проверке клиентского хоста по файлу exports, rpc.mountd будет искать имя клиента, используя вызов gethostbyaddr. С DNS этот вызов возвращает каноническое имя машины клиента, так что Вы должны удостовериться в том, не используются ли псевдонимы в exports. Без использования DNS, возвращенное имя будет первым подходящим именем, найденным в файле hosts, которое соответствует адресу клиента.
Имя хоста сопровождается произвольным, разделенным запятыми списком параметров, приведенных в скобках. Эти параметры могут принимать следующие значения:
secure
Запрос должен прийти с одного из зарезервированных портов, то есть с порта, номер которого меньше 1024. Задан по умолчанию.
insecure
Задает действие, обратное действию параметра
secure.
ro
Монтировать каталог NFS только для чтения. Задан по умолчанию.
rw
Монтировать каталог NFS для чтения и записи.
root_squash
Все обращения по NFS выполнять от имени пользователя nobody (uid 65534) на сервере независимо от того, пользователь с каким uid послал запрос с клиента.
no_root_squash
Не отображать uid 0 на uid 65534. Задан по умолчанию.
link_relative
Преобразовывает абсолютные символьные связи (где имя объекта назначения начинается с наклонной черты вправо) в относительные связи, вводя необходимое число ../, чтобы добраться из каталога, содержащего связь, до корневого каталога на сервере. Этот параметр имеет смысл только тогда, когда монтируется целая файловая система хоста, иначе некоторые связи будут указывать в пустоту. Задан по умолчанию.
link_absolute
Оставляет все символьные связи такими, какими они и были (нормальное поведение для Sun NFS серверов).
map_identity
Клиентские uids и gids соответствуют серверным. Задан по умолчанию.
map_daemon
Клиент и сервер не разделяют пространство uid/gid.
rpc.nfsd построит карту отображений ID клиента и сервера, запрашивая на клиенте демон rpc.ugidd.
map_static
Этот параметр позволяет Вам определять имя файла, который содержит статическую карту uids и gids. Например,
map_static=/etc/nfs/vlight.map определит файл
/etc/nfs/vlight.map как карту uid/gid. Синтаксис файла карты описан на man-странице exports(5).
map_nis
Предписывает NIS-серверу выполнять работу по отображению uid и gid.
anonuid и anongid
Эти параметры позволяют Вам определять uid и gid анонимного пользователя. Это полезно, если Вы имеете том, экспортируемый для монтирования всеми желающими.
Все ошибки при обработке файла exports будут переданы syslogd daemon на уровне notice при запуске rpc.nfsd или rpc.mountd.
Заметьте, что имена хостов будут получены из IP-адресов клиентов обратным поиском, так что Вы должны иметь правильно сконфигурированный сервер имен. Если Вы используете BIND, то Вы должны включить контроль спуфинга в Вашем файле host.conf. Подробно это рассмотрено в главе 6.
имеет много новых свойств,
BIND Version 8 имеет много новых свойств, а с ними пришел и новый синтаксис файла конфигурации. Старый named.boot
с простыми одиночными инструкциями был заменен на
named.conf с синтаксисом, аналогичным gated, похожий на C-синтаксис.
Файл host.conf в BIND 8
BIND Version 8 имеет много новых свойств, а с ними пришел и новый синтаксис файла конфигурации. Старый named.boot
с простыми одиночными инструкциями был заменен на
named.conf с синтаксисом, аналогичным gated, похожий на C-синтаксис.
Новый синтаксис более сложен, но есть инструмент, который автоматизирует преобразование старого синтаксиса в новый. В пакете исходников BIND 8 есть perl-программа named-bootconf.pl , которая занимается этим преобразованием. Чтобы использовать этот инструмент, Вы должны иметь установленный интерпретатор
perl.
Вы должны использовать скрипт так:
|
# cd /etc
# named-bootconf.pl named.conf
Скрипт изготовит named.conf, похожий на приведенный в примере 6-9.
Файл named.boot
Файл конфигурации BIND до Version 8 был очень прост. BIND Version 8 имеет совсем другую структуру файла настройки, чтобы использовать новые свойства. Имя файла настройки сменилось с /etc/named.boot на /etc/named.conf. Мы сосредоточимся на конфигурировании старой версии, потому что многие дистрибутивы ее еще используют, но рассмотрим и отличия. К тому же мы рассмотрим, как преобразовать старый файл named.conf в новый.
Файл named.boot
Файл конфигурации BIND до Version 8 был очень прост. BIND Version 8 имеет совсем другую структуру файла настройки, чтобы использовать новые свойства. Имя файла настройки сменилось с /etc/named.boot на /etc/named.conf. Мы сосредоточимся на конфигурировании старой версии, потому что многие дистрибутивы ее еще используют, но рассмотрим и отличия. К тому же мы рассмотрим, как преобразовать старый файл named.conf в новый.
Файл named.boot вообще маленький и содержит мало данных, но указывает на главные файлы, содержащие зональную информацию и хранит указатели на другие серверы имен. Комментарии в файле начинаются с символов # или ; и заканчиваются в конце строки. Прежде чем мы обсудим формат named.boot более подробно, рассмотрим типовой файл для vlager в примере 6-8.
Файлы базы данных DNS
Главные (Master) файлы, поставляемые с named, подобно named.hosts, всегда имеют домен, связанный с ними, называемый origin. Это имя домена, указанное с параметрами cache и primary. Внутри главного файла Вы можете определить домен и связанные с ним имена файлов. Имя, заданное в файле конфигурации, рассматривается абсолютно (absolute), если оно заканчивается одной точкой, иначе оно рассматривается относительно origin. Можно и прямо сослаться на origin знаком (@).
Файлы базы данных DNS
Главные (Master) файлы, поставляемые с named, подобно named.hosts, всегда имеют домен, связанный с ними, называемый origin. Это имя домена, указанное с параметрами cache и primary. Внутри главного файла Вы можете определить домен и связанные с ним имена файлов. Имя, заданное в файле конфигурации, рассматривается абсолютно (absolute), если оно заканчивается одной точкой, иначе оно рассматривается относительно origin. Можно и прямо сослаться на origin знаком (@).
Данные, содержащиеся в главном файле, разделены на записи ресурсов (resource records, RRs). RRs самые маленькие модули информации, доступные через DNS. Каждая запись ресурса имеет тип. Например, A-записи отображают имя хоста на IP-адрес, а CNAME-записи связывают псевдоним для хоста с его официальным именем. Пример 6-11 показывает главный файл named.hosts для Virtual Brewery.
Записи ресурсов в главных файлах совместно используют общий формат:
|
[domain] [ttl] [class] type rdata
Поля отделяются пробелами или позициями табуляции. Запись может быть продолжена после перевода строки, если открывающаяся фигурная скобка стоит перед первым переводом строки и последнее поле сопровождается заключительной фигурной скобкой. Все между точкой с запятой и символом перевода строки игнорируется. Описание формата:
domain
Задает имя домена, к которому относится запись. Если никакое имя не задано, RR применяется к домену предыдущей RR.
ttl
Чтобы сервер имен обновлял информацию, RR ограничен по времени работы (ttl). Это поле определяет время в секундах, которое информация имеет силу после того, как была получена с сервера. Это десятичное число из восьми цифр.
Если значение ttl не дано, ему присваивается значение поля minimum предыдущей SOA-записи.
class
Класс адреса, например, IN для адресов IP или HS для объектов в Hesiod-классе. Для TCP/IP Вы должны определить IN.
Если никакое поле класса не задано, берется класс предшествующей RR.
type
Описывает тип RR. Наиболее часто встречаются типы A, SOA, PTR и NS. Следующие разделы описывают различные типы RR.
rdata
Хранит данные, связанные с RR. Формат этого поля зависит от типа RR. Дальше это будет описано для каждого RR отдельно.
Дальше приведен частичный список RR, которые нужно использовать в файлах DNS.
SOA
Описывает зону авторитета (SOA или "Start of Authority"). Эта запись сообщает о том, что записи после SOA RR содержат авторитетную информацию для домена. Каждый главный файл, включенный в инструкцию primary, должен содержать SOA-запись для этой зоны. Данные ресурса содержат следующие поля:
origin
Это каноническое имя хоста основного сервера для этого домена. Обычно задается как абсолютное имя.
contact
Это e-mail адрес человека, ответственного за поддержание домена, со знаком "@" замененным на точки. Например, если ответственный в Virtual Brewery janet, это поле содержит janet.vbrew.com.
serial
Номер версии зонального файла, выраженный как единственное десятичное число. Всякий раз, когда данные меняются в зональном файле, это число должно быть увеличено.
Серийный номер используется вторичными серверами, чтобы распознать, когда зональная информация была изменена. Чтобы оставаться на уровне современных требований, вторичные серверы запрашивают SOA-запись первичного сервера в определенные промежутки времени и сравнивают порядковый номер с кэшируемой SOA-записью. Если номер изменился, то вторичные серверы перенесут целую зону баз данных из основного сервера.
refresh
Определяет интервал в секундах, который вторичные серверы должны использовать между проверками SOA-записей основного сервера. Это десятичное число более, чем с восемью цифрами.
retry
Это число определяет интервалы, за которые вторичный сервер должен повторить соединение с основным сервером, если запрос или зональная регенерация терпит неудачу. Он не должен быть слишком маленьким, потому что даже временный отказ сервера или сетевая проблема могут потратить впустую все сетевые ресурсы. Один час или, возможно, полчаса оптимальное значение.
expire
Определяет время в секундах, после которого сервер должен отбросить все зональные данные, если невозможно было войти в контакт с основным сервером. Этот промежуток времени должен быть очень большим. Craig Hunt рекомендует 42 дня.
minimum
Задает по умолчанию значение ttl для исходных записей, которые точно не определяют его. Требует другого сервера, чтобы отбросить RR при проверки после определенного времени.
Ничего нельзя сделать со временем, после которого вторичный сервер попробует модифицировать зональную информацию. Значение minimum должно быть большим, особенно для LAN, где сетевая топология почти никогда не меняется. В случае, когда единственные RR могут часто изменяться, Вы можете приписывать им различные ttl.
A
Ассоциирует IP-адрес с именем. Содержит адрес в dotted quad notation. Для каждого хоста должна быть только одна запись. Hostname, используемый в этой А-записи, считается служебным или каноническим hostname. Все другие hostname расцениваются как псевдонимы и должны быть отображены на канонический (canonical) hostname, используя запись CNAME. Если каноническое имя нашего хоста vlager, его и надо вписать в A-запись с его IP-адресом. Если мы связываем с этим адресом другое имя, например news, надо использовать запись CNAME, которая свяжет его с альтернативным именем.
NS
Указывает на главный (primary) сервер подчиненной зоны. Содержит hostname сервера.
Вы встретите записи NS в двух ситуациях: Когда Вы делегируете авторитет зависимой зоне.
Внутри главной зональной базы данных зависимой зоны.
Наборы серверов в родительских и делегированных зонах должны соответствовать друг другу, иначе опознание имен работать не будет.
Запись NS определяет имена первичного и вторичного серверов для зоны. Эти имена должны быть разрешимы к используемому адресу. Иногда серверы не принадлежат к обслуживаемому домену, что порождает проблему: нельзя обратиться к серверу, пока не получен его адрес, но получить адрес нельзя, пока не обратимся к серверу (неоткуда). Можно конфигурировать специальные записи непосредственно на сервере имен родительской зоны. Они позволяют серверу из родительской области преобразовывать IP-адрес делегированного зонального сервера. Эти записи обычно названы приклеенными записями (glue records), поскольку они "склеивают" делегированную зону с родительской.
CNAME
Ассоциирует псевдоним хоста с его каноническим hostname. Каноническиий hostname указан в файле, который обеспечивает А-запись, а псевдонимы просто связаны с этим именем CNAME-записью, но не имеют собственных записей.
PTR
Этот тип записи используется, для того, чтобы соединить имена домена in-addr.arpa с именами хостов (hostnames). Это используется для обратного отображения IP-адресов к hostnames. Данное имя должно быть каноническим.
MX
Эта RR объявляет преобразователь почты (mail exchanger) для домена. Для чего надо иметь преобразователи почты, рассказано в главе 17 . Синтаксис MX-записи следующий:
|
[domain] [ttl] [class] MX preference host
Имя host объявляет преобразователь почты для домена domain. Каждый преобразователь почты имеет целое число preference , связанное с ним. Агент транспортировки почты, желающий доставить почту в домен, будет перебирать все хосты, не имеющие MX-записей в этом домене, пока все не пройдет успешно. Сначала будет проверяться тот хост, у которого самое низкое число, а затем все хосты по возрастанию числа.
HINFO
Эта запись предоставляет информацию относительно аппаратных средств системы и программного обеспечения. Синтаксис этой записи:
|
[domain] [ttl] [class] HINFO hardware software
Поле hardware идентифицирует аппаратные средства, используемые этим хостом. Имеются специальные соглашения, чтобы точно определить их. Список подходящих имен дан в "Assigned Numbers" (RFС 1340). Если область содержит пробелы, то ее содержимое надо заключить в двойные кавычки. Имена областей
software используются операционной системой. Подходящее имя может быть выбрано из "Assigned Numbers" RFC.
Запись HINFO для Intel Linux-машин может выглядеть примерно так:
|
tao 36500 IN HINFO IBM-PC LINUX2.2
А для Linux-машины на процессоре Motorola 68000 так:
|
cevad 36500 IN HINFO ATARI-104ST LINUX2.0 jedd 36500 IN HINFO AMIGA-3000 LINUX2.0
Файлы настройки Taylor
Теперь мы вернемся к файлам конфигурации. Taylor UUCP получает информацию из следующих файлов:
config
Это основной файл конфигурации. Вы можете определить Ваше имя UUCP именно в нем.
Файлы настройки Taylor
Теперь мы вернемся к файлам конфигурации. Taylor UUCP получает информацию из следующих файлов:
config
Это основной файл конфигурации. Вы можете определить Ваше имя UUCP именно в нем.
sys
Описывает все участки сети, известные Вам. Для каждого участка он определяет имя, в какое время вызывать его, какой номер набрать, какое устройство использовать и как регистрироваться.
port
Описывает все доступные порты, вместе с обеспечиваемой ими скоростью и программами соединения, которые нужно использовать.
dial
Описывает программы номера, используемые, чтобы установить телефонное соединение.
dialcode
Содержит расширения для символьных номеров (dialcodes).
call
Содержит имя входа в систему и пароль, который нужно использовать при вызове системы.
passwd
Содержит имена входов в систему и пароли, используемые при регистрации. Этот файл используется только, когда uucico делает собственную проверку пароля.
Файлы конфигурации Taylor состоят из строк, содержащих пары "ключевое слово=значение". Знак hash (#) представляет собой комментарий, действующий до конца строки. Чтобы использовать знак # просто так, Вы можете ввести его с наклонной чертой влево \#.
Есть очень много опций, которые Вы можете изменять в этих файлах конфигурации. С их помощью вы сможете сконфигурировать модемную связь UUCP. Дополнительные разделы описывают изменения, необходимые, если Вы хотите использовать UUCP поверх TCP/IP или поверх последовательного соединения. Полное описание дается в Texinfo-документах, которые распространяются вместе с исходным текстом Taylor UUCP.
Если Вы думаете, что сконфигурировали вашу систему UUCP полностью, можете проверить конфигурацию, используя uuchk
(находится в /usr/lib/uucp).
uuchk читает ваши файлы конфигурации и печатает детализированный отчет о значениях, используемых для каждой системы.
Файлы псевдонимов
Exim способен обработать файлы псевдонимов, совместимые с файлами псевдонимов Berkeley's sendmail. Записи в файле псевдонима могут иметь следующую форму:
|
alias: recipients
Файлы псевдонимов
Exim способен обработать файлы псевдонимов, совместимые с файлами псевдонимов Berkeley's sendmail. Записи в файле псевдонима могут иметь следующую форму:
|
alias: recipients
recipients задает разделяемый запятыми список адресов, на которые будет заменяться псевдоним. Список получателей может быть продолжен на другой строке, если следующая строка начинается с символа пробела.
Специальное свойство позволяет Exim обрабатывать списки адресатов, которые хранятся в отдельном файле псевдонимов: если Вы определяете :include: filename
как получателя, Exim читает этот файл и рассматривает его содержимое как список получателей. Обработка списков рассылки будет показана в этой главе ниже, в разделе списки рассылки .
Главный файл псевдонимов /etc/aliases. Если Вы сделаете этот файл доступным на запись для группы или прочих пользователей, Exim откажется использовать его и задержит локальные доставки. Вы можете управлять проверкой прав доступа, задавая modemask
в редиректоре system_aliases.
Пример файла aliases:
|
# vbrew.com /etc/aliases file hostmaster: janet postmaster: janet usenet: phil # The development mailing list. development: joe, sue, mark, biff, /var/mail/log/development owner-development: joe # Announcements of general interest are mailed to all # of the staff announce: :include: /etc/Exim/staff, /var/mail/log/announce owner-announce: root # gate the ppp mailing list to a local newsgroup ppp-list: "|/usr/local/bin/gateit local.lists.ppp"
Когда имеются имена файла и команды канала в файле псевдонима, как здесь, Exim должен знать, от имени какого пользователя ему выполнять доставку. Опция user (и, возможно, group) должна быть установлена в файле конфигурации Exim для редиректора, который обрабатывает псевдонимы, или на транспорте, который доставляет эти письма.
Если ошибка происходит при доставке на адрес, сгенерированный из файла псевдонимов, Exim пошлет сообщение отправителю, но этого может быть мало. Опция errors_to может использоваться для определения, что сообщения об ошибке должны быть посланы в другое место, например, на локальный адрес postmaster.
Форматы почтовых адресов
В оригинале среды UUCP распространенная форма была path!host!user (путь!машина назначения! пользователь), где path описывал последовательность машин для достижения машины адресата (host). Эта конструкция называется записью bang path, потому что метка восклицания называется "bang". Сегодня много uucp-подобных сетей приняли стандарт RFC-822 и понимают этот тип адреса.
Форматы почтовых адресов
В оригинале среды UUCP распространенная форма была path!host!user (путь!машина назначения! пользователь), где path описывал последовательность машин для достижения машины адресата (host). Эта конструкция называется записью bang path, потому что метка восклицания называется "bang". Сегодня много uucp-подобных сетей приняли стандарт RFC-822 и понимают этот тип адреса.
Другие сети имеют различные способы адресации. Decnet-сети, например, используют два двоеточия как разделитель адресов, производя адрес так: host::user. Стандарт X.400 использует совсем другую схему, описывая получателя (без связи с машиной!) набором пар свойств, например, страна и организация.
В сети FidoNet каждый пользователь идентифицирован кодом, подобным 2:320/204.9, состоящим из четырех чисел, обозначающих: зону (2 для Европы), сеть (320 для Парижа), узел и указатель (машину индивидуального пользователя). Fidonet-адреса могут быть отображены на RFC-822; вышеупомянутое написали бы как Thomas.Quinot@p9.f204.n320.z2.fidonet.org.
Linux network инструкция администратора
Subnetting не только организационное деление, но часто и естественное следствие границ аппаратных средств. Знания хостов о строении данной физической сети, типа Ethernet, являются очень ограниченными: единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateway (шлюз). Gateway, это хост, который связан с двумя или больше физическими сетями одновременно и конфигурирован так, чтобы перекачивать пакеты между ними.
Gateways
Subnetting не только организационное деление, но часто и естественное следствие границ аппаратных средств. Знания хостов о строении данной физической сети, типа Ethernet, являются очень ограниченными: единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateway (шлюз). Gateway, это хост, который связан с двумя или больше физическими сетями одновременно и конфигурирован так, чтобы перекачивать пакеты между ними.
IP достаточно легко распознать, находится ли хост в местной физической сети: различные физические сети должны принадлежать различным IP-сетям. Например, сетевой адрес 149.76.4.0 зарезервирован для хостов в локальной сети математиков. При посылке пакетов машине quark сетевое программное обеспечение на машине erdos немедленно увидит по IP-адресу 149.76.12.4, что хост места назначения находится в другой физической сети, и поэтому может быть достигнут только через gateway (допустим, машину sophus ).
Машина sophus непосредственно связана с двумя подсетями: отделом математики и университетской магистралью. Они доступы через различные интерфейсы (eth0 и fddi0 соответственно). Но какой IP-адрес мы ей назначаем? 149.76.1.0 или 149.76.4.0?
Ответ: оба. При работе с сервером в локальной сети математиков машина sophus использует IP-адрес 149.76.1.1, а при работе с хостом на магистрали она должна использовать 149.76.1.0 . Таким образом, gateway получает по одному IP-адресу на каждую сеть, к которой подключен. Эти адреса (вместе с netmask) привязаны к интерфейсу, через который обращаются подсети. Значит, интерфейсы и адреса sophus связаны так:
Интерфейс
Адрес
Маска подсети
eth0 |
149.76.4.1 |
255.255.255.0 |
fddi0 |
149.76.1.1 |
255.255.255.0 |
lo |
127.0.0.1 |
255.0.0.0 |
Последняя запись определяет loopback интерфейс lo .
Вообще, вы можете не обращать внимание на различия между адресами хоста и интерфейса. Относитесь к адресу хоста, который находится только в одной сети, как к адресу того и другого, хотя строго говоря, это Ethernet-интерфейс имеет IP-адрес. Однако, это различие ощутимо только, когда вы работаете с gateway.
Введение в сети Локальное
Немного истории
Идея сетей также стара, как и вообще идея телекоммуникаций. Рассмотрим людей, живших в каменном веке, когда для обмена сообщениями между людьми использовались барабаны. Предположим пещерный человек А хочет пригласить пещерного человека Б поиграть, но тот живет слишком далеко и не может услышать барабан, в который бьет А. Каковы же могут быть действия А? Он может пешком добраться до Б, взять барабан побольше или попросить В, живущего на полпути между А и Б, передать сообщение. Позже это стали называть сетями.
Конечно, мы далеко ушли от примитивных занятий и устройств наших предков. В наши дни мы пользуемся компьютерами которые общаются между собой посредством проводов, оптоволоконных кабелей коротких волн, и т.д., позволяющих легко обмениваться данными. Далее мы с Вами будем обсуждать способы и пути, с помощью которых это можно сделать.
Я опишу три типа сетей в этом руководстве. Мы с вами сосредоточимся на сетях TCP/IP, потому что это наиболее популярный набор протоколов в локальных (Local Area Networks, LAN) и глобальных сетях (Wide Area Networks, WAN), типа Internet. Мы будем также изучать сети UUCP и IPX. Протокол UUCP раньше обычно использовался для транспортировки новостей и сообщений почты по dialup телефонным подключениям. Это менее распространено сегодня, но все еще полезно в ряде ситуаций. Протокол используется обычно IPX в Novell NetWare, и я опишу как использовать его, чтобы подключить вашу Linux-машину к Novell-сети. Все это протоколы работы с сетями, которые используются, чтобы передавать данные между компьютерами. Мы обсудим, как они используются и их основные принципы.
Мы определяем сеть как совокупность компьютеров (хостов, от hosts), которые могут связаться друг с другом, часто полагаясь на услуги ряда выделенных компьютеров, передающих данные между участниками. Хостом может являться не обязательно полноценный компьютер, им вполне может быть X-терминал или интеллектуальный принтер. Маленькие скопления компьютеров также называют сайтами (sites).
Связь невозможна без некоторого языка или кода. В компьютерных сетях эти языки коллективно упоминаются как протоколы. Однако, здесь речь идет не о письменных протоколах, а скорее о высоко формализованном коде поведения, вроде встреч на высшем уровне между главами правительств или брачной песни лебедей. Протоколы (protocols), используемые в компьютерных сетях, это только очень строгие правила для обмена сообщениями между компьютерами.
На английском языке есть прекрасная
На английском языке есть прекрасная книга (трехтомник) о TCP/IP Internetworking with TCP/IP, автор Douglas R. Comer (издательство Prentice Hall). Более подробно сети a TCP/IP рассмотрены в книге TCP/IP Network Administration, автор Craig Hunt (издательство O'Reilly).
Настройка сетевого оборудования
Во-первых, конечно, имеются непосредственно аппаратные средства, например, Ethernet-карта: пластина из эпоксидной смолы, усыпанная большим количеством крошечных чипов с номерами на них, и воткнутая в слот Вашего компьютера. Это то, что мы обычно называем устройством.
Для того чтобы использовать Ethernet-карту, необходимы специальные функции, расположенные в ядре Linux, которые знают, как работать с этим устройством. Это так называемые драйверы устройств. Например, Linux имеет драйверы устройства для нескольких марок плат Ethernet, которые очень похожи по выполняемым функциям. Они известны как "Becker Series Drivers", и называются так по имени их автора, Donald Becker. Другой пример: драйвер D-link, который работает с адаптером пакетов D-link, присоединяемым к параллельному порту. Linux имет драйверы для разных интерфейсов сетевых карт: ISA, PCI, MCA, EISA, Parallel port, PCMCIA, не так давно появились и адаптеры на USB.
Но что мы подразумиваем, когда говорим, что драйвер управляет устройством? Давайте вернемся к плате Ethernet, которую мы уже упоминали. Драйвер должен быть способен работать с переферией этой платы: он должен посылать команды и данные плате, в то время как плата должна передавать полученные данные драйверу.
В PC-компьютерах эта связь устанавливается через область памяти ввода-вывода, которая является отображением регистров платы и т.п. Все команды и данные, которые ядро посылает плате, проходят через эти регистры. Память ввода-вывода описывается указанием начального адреса (base address). Типичные основные адреса для Ethernet-плат 0x280 или 0x300. Сетевые карты на интерфейсе PCI обычно получают адрес ввода-вывода автоматически.
Обычно можно не беспокоиться о проблемах аппаратных средств, типа адреса ввода-вывода потому, что ядро делает попытку во время загрузки обнаружить местоположение платы. Это называется autoprobing
(автопоиск), который означает, что ядро во время загрузки считывает несколько участков памяти и сравнивает считанные данные с теми, которые должны быть получены, если установлена плата Ethernet. Однако, существуют Ethernet-платы, которые ядро не может автоматически обнаружить. Это часто случается с дешевыми картами Ethernet.
Другой параметр, который Вы могли бы сообщить ядру, interrupt request channel (канал запроса прерывания). Компоненты аппаратных средств обычно прерывают ядро, когда они нуждаются во внимании, например, когда прибыли данные или произошли другие события. В PC прерывание может происходить на одном из каналов (0, 1, 3 и до 15). Номер прерывания, назначенный компоненту аппаратных средств называется interrupt request number или IRQ.
Как описано в главе 2, ядро обращается к устройствам через так называемый интерфейс. Интерфейсы предлагают абстрактный набор функций, которые являются стандартными для всех типов аппаратных средств, типа посылки или получения пакетов данных.
Интерфейсы идентифицируются посредством имен. Эти имена определены внутри ядра, это файлы устройств в каталоге /dev. Если ввести команду ls -las /dev/, Вы увидите много файлов. В колонке прав доступа Вы увидите, что первым символом прав доступа здесь является не такой символ, как для обычных имен файлов. Он показывает тип интерфейса. Символ b задает блочное (block) устройство. Символ c
задает символьное (character) устройство, которое обрабатывает данные посимвольно, а не блоками. В поле длины файла Вы увидите два числа, которые называются старшим и младшим номерами устройства.
Каждый драйвер имеет уникальный старший номер в ядре. Каждая копия драйвера (по одной на устройство) имеет свой младший номер. Интерфейсы tty с именами /dev/tty* являются символьными, и имеют первый символ в правах доступа c”, все они имеют общий старший номер 4, но младшие номера у каждого свои: /dev/tty1 имеет младший номер 1 и /dev/tty2 имеет 2.
Наиболее типичные имена перечислены в разделе
"Обзор сетевых устройств в Linux". Типичные имена для интерфейсов Ethernet: eth0, eth1 и т.д. Назначение интерфейсов для определенных устройств обычно зависит от способа, которым устройства сконфигурированы. Например, первая установленная Ethernet-плата станет eth0, следующая eth1 и так далее. Исключение из этого правила: интерфейсы SLIP, которые назначаются динамически, То есть: всякий раз, когда устанавливается SLIP-связь, последовательному порту назначается интерфейс.
При загрузке ядро показывает, какие интерфейсы установлены и устройства найдены. Вот образец типичного сообщения при загрузке:
|
. . This processor honors the WP bit even when in supervisor mode./ Good. Swansea University Computer Society NET3.035 for Linux 2.0 NET3: Unix domain sockets 0.13 for Linux NET3.035. Swansea University Computer Society TCP/IP for NET3.034 IP Protocols: IGMP,ICMP, UDP, TCP Swansea University Computer Society IPX 0.34 for NET3.035 IPX Portions Copyright (c) 1995 Caldera, Inc. Serial driver version 4.13 with no serial options enabled tty00 at 0x03f8 (irq = 4) is a 16550A tty01 at 0x02f8 (irq = 3) is a 16550A CSLIP: code copyright 1989 Regents of the University of California PPP: Version 2.2.0 (dynamic channel allocation) PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. PPP line discipline registered. eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 a0 24 0e e4 e0,/ IRQ 10. 3c509.c:1.12 6/4/97 becker@cesdis.gsfc.nasa.gov Linux Version 2.0.32 (root@perf) (gcc Version 2.7.2.1) #1 Tue Oct 21 15:30:44 EST 1997 . .
Этот пример показывает, что ядро построено с поддержкой сетевого протокола TCP/IP и включает драйверы для SLIP, CSLIP и PPP. Третья строка снизу говорит об обнаружении платы 3C509 Ethernet и установке ее интерфейса eth0. Если у Вас другой тип сетевой карты, будет выведена соответствующая строка, обычно с ее названием. Например, для адаптера D-Link используется имя dl0. А вот если сетевая карта есть, а сообщения о ней нет, тогда плохо дело. Ядро не нашло карту при загрузке. Эта ситуация будет рассмотрена позже.
Настройка сети TCP/IP
Большинство работ, охваченных этой главой, Вы должны сделать только один раз. Впоследствии, Вы будете изменять конфигурационные файлы только в случае добавления новой системы к сети, или когда Вы повторно полностью переконфигурируете систему. Некоторые из команд конфигурирования TCP/IP, однако, должны выполнятся каждый раз, когда загружается система. Это обычно делают скрипты /etc/rc*.
Обычно специфическая сетевая часть загрузки системы содержится в скрипте rc.net или rc.inet. Иногда Вы увидете два скрипта rc.inet1 и rc.inet2. В таких случаях вышеупомянутый скрипт инициализирует сетевую часть ядра в то время, как последние запускают основные сетевые приложения. Дальше я буду твердо придерживаться этой концепции. В новых дистрибутивах скрипты семейства rc структурированы иначе: они лежат в каталоге
/etc/init.d/ (или /etc/rc.d/init.d/).
TCP/IP Firewall Локальное
Недобросовестный человек может предполагать пароли системы или эксплуатировать ошибки и особое поведение некоторых программ, чтобы получить доступ к Вашей машине. А получив доступ, сделать можно немало. Есть люди, которые изучают и меняют систему, просто из любви к совершенству. Как ни странно, даже в России в наше время, таких хватает. Но есть и хулиганы. Есть люди, которым очень нужна информация с Вашей машины, и тут никогда не знаешь, что им может понадобиться.
Самый безопасный способ избежать такого широко распространенного явления состоит в том, чтобы предотвратить получение несанкционированного сетевого доступа к машине. Именно этим занимается firewall.
Предупреждение |
|
Построение безопасного firewall является искусством. Это включает хорошее понимание технологии, но одинаково важно понимание философии проектов firewall. Я при всем желании не смогу изложить в этой книге все по этому вопросу: он слишком велик. Возможно, когда-нибудь я посвящу ему отдельную книгу. Я настоятельно рекомендую ознакомиться с дополнительной литературой по этому вопросу.
Увы, на русском языке такой литературы до обидного мало. Есть очень хорошие книги на английском и, возможно, они со временем выйдут и на русском. Назову основные:
Building Internet Firewalls
Авторы: D. Chapman и E. Zwicky (издательство O'Reilly). Это полная энциклопедия по созданию и использованию firewall для Unix, Linux и даже Windows NT. Рассмотрены также вопросы о том, как настроить службы Internet для работы через firewall.
Firewalls and Internet Security
Авторы: W. Cheswick и S. Bellovin (издательство Addison Wesley). Книга скорее о философии построения firewall, чем о конкретных программах, но в ней есть немало ценного по реализации этой философии.
В этой главе я ориентируюсь на специфичные для Linux технические проблемы и методы. В конце главы я приведу пример конфигурации firewall, который является неплохой базой для Ваших опытов.
IP Accounting Локальное
Имеются другие применения для сетевого учета, которые не имеют никакого отношения к долларам и счетам. Если Вы управляете сервером, который предлагает ряд различных типов сетевых услуг, для Вас иногда полезно знать точно, сколько данных генерируется каждым типом услуг. Эта информация могла бы помочь Вам в принятии решений, какие аппаратные средства покупать, или сколько серверов выполнить.
Ядро Linux обеспечивает средство, которое позволяет Вам собирать все типы полезной информации относительно сетевого трафика. Это средство названо IP accounting.
IP Masquerade и Network
Одной из частей этого сервиса является сетевая трансляция адресов (Network Address Translation, NAT). NAT описывает процесс изменения сетевых адресов, содержащихся в заголовках пакетов. Этот подход является идеальным для решения проблемы. Таким образом, ВСЯ сеть может реально работать с Internet через ОДИН IP-адрес!
IP masquerading позволяет использовать частный IP-адрес в локальной сети и поручить маршрутизатору преобразование адресов с учетов сервисов и портов. Когда такой маршрутизатор получает пакет из внутренней сети, он меняет его так, будто пакет пришел на самом деле от маршрутизатора. Затем пакет отсылается в сеть. С пакетами ответов из сети выполняется то же самое, но в обратном порядке.
Мы имеем маленькую сеть Ethernet на частных адресах, которые не могут использоваться в Internet. Сеть имеет Linux-маршрутизатор, обеспечивающий доступ к Internet. Одно из автоматизированных рабочих мест в сети (192.168.1.3) пожелало установить подключение к удаленному компьютеру 209.1.106.178 через порт 8888. Автоматизированное рабочее место направляет пакет маршрутизатору, который идентифицирует этот запрос подключения как требование услуг masquerade. Он принимает пакет, выделяет для него порт 1035, заменяет адрес и номер порта в пакете и передает пакет в сеть. Компьютер адресата полагает, что получил подключения из Linux-компьютера, который обеспечивает masquerade, и посылает ответ. Маршрутизатор после получения этого ответа находит связь в таблице masquerade и производит обратную замену адреса и порта. Локальный компьютер полагает, что он работает непосредственно с удаленным компьютером. Удаленный главный компьютер не знает ничего относительно локального компьютера вообще и полагает, что получил подключение с Linux-компьютера, обеспечивающего masquerade.
А вот этот последний компьютер знает, что эти два компьютера говорят друг другу на каких портах, и выполняет прозрачную подстановку адресов и портов. Внешне выглядит сложно, но реальная настройка отличается простотой.
я не могу описать все
Конечно, я не могу описать все сетевые приложения в этой работе. Если Вы хотите установить то приложение, которое здесь не обсуждается, обратитесь к руководству по этому приложению.
Сетевая информационная
Поэтому фирма Sun разработала Network Information System (NIS). NIS обеспечивает универсальные средства доступа к базе данных, которая может использоваться, например, чтобы распределять информацию, содержащуюся в файлах passwd и groups на все компьютеры в Вашей сети. Точно так же Вы можете использовать NIS, чтобы распределить информацию о hostname из файла /etc/hosts на все машины в сети.
NIS основан на RPC, включает сервер, клиентскую библиотеку и несколько административных инструментальных средств. Первоначально NIS был назван желтыми страницами или YP (Yellow Pages), это название все еще используется, чтобы обратиться к нему. К сожалению, это имя является маркой компании British Telecom, которая требовала, чтобы Sun отказалась от его использования. Тем не менее, YP остался префиксом в именах команд, относящихся к NIS таких, как ypserv и ypbind.
Сегодня NIS доступен фактически для всех Unix, и имеются свободные реализации. BSD Net-2 был основан на публичной версии, выпущенной Sun. Код клиентской библиотеки из этого релиза долго присутствовал в Linux libc, а административные программы были перенесены в Linux Swen ThЭmmler. Сервер NIS в публичной версии отсутствовал.
Peter Eriksson разработал новую версию под именем NYS. Она поддерживает как NIS, так и Sun NIS+. NYS не только обеспечивает набор инструментальных средств NIS и сервер, но также добавляет целый набор новых библиотечных функций, которые должны компилироваться в libc, если Вы желаете использовать этот пакет. Это включает новую схему конфигурации преобразования имен, которая заменяет текущую схему, использующую host.conf.
GNU libc, известная как libc6, в сообществе Linux, включает модифицированную версию традиционной поддержки NIS, разработанную Thorsten Kukuk. Она поддерживает все библиотечные функции NYS и также использует расширенную схему конфигурации NYS. Вам все еще нужны инструментальные средства и сервер, но использование GNU libc избавляет от проблем с библиотеками.
Эта глава в основном рассматривает поддержку NIS в GNU libc. Для двух других пакетов приведенные здесь инструкции тоже могут пригодиться. Подробнее о вопросе можно узнать в NIS-HOWTO, кроме того на английском языке есть книга Managing NFS and NIS (автор Hal Stern, издательство O'Reilly).
Сетевая файловая система
NFS предлагает ряд преимуществ:
Данные, к которым обращаются все пользователи, могут быть сохранены на центральном хосте, клиенты будут монтировать этот каталог при начальной загрузке. Например, Вы можете сохранить все логины пользователей на одном хосте, настроить все хосты Вашей сети на монтирование каталога /home с этого хоста. Если все это установлено в паре с NIS, то пользователи смогут войти в любую систему и работать на одном множестве файлов.
Данные, потребляющие большие количества дискового пространства, могут быть сохранены на единственном хосте. Например, все файлы и программы, относящиеся к LaTeX и METAFONT могут быть сохранены и поддерживаться в одном месте. Мало того, что удобно ими управлять, так еще и место экономится.
Административно-управленческая информация может быть сохранена на одном хосте. Нет нужды использовать rcp для того, чтобы установить один и тот же файл на 20 различных машинах.
Linux NFS в значительной степени работа Rick Sladkey, написавшего код NFS kernel и большие части NFS-сервера. Последний был создан из unfsd, NFS-сервер уровня пользователя, первоначально написанного Mark Shand, и hnfs Harris NFS-сервера, написанного Donald Becker.
Давайте теперь посмотрим, как NFS работает: клиент может запросить смонтировать каталог с удаленного хоста в локальный каталоге тем же способом, как он может установить физическое устройство. Однако, синтаксис, используемый для этого, несколько иной. Например, чтобы смонтировать каталог /home с хоста vlager в каталог /users на машине vale, администратор использовал бы следующую команду на vale:
|
# mount -t nfs vlager:/home /users
Команда mount попробует соединиться с rpc.mountd, daemon монтирования на vlager через RPC. Сервер проверит, разрешается ли vale смонтировать каталог, и если все нормально, вернет file handle. Этот handle будет использоваться во всех последовательных запросах к подкаталогам /users.
Когда кто-то обращается к файлу по NFS, kernel RPC-сайта вызовет rpc.nfsd (NFS daemon) на машине сервера. Это обращение берет handle файла, имя файла, к которому обращаются, идентификаторы группы и пользователя как параметры. Они используются в определении прав доступа к точно определенному файлу. Чтобы защититься от несанкционированного чтения или модифицирования файла, идентификаторы пользователя и группы должны быть одними и теми же на обоих хостах.
В большинстве реализаций Unix, функциональные возможности NFS клиента и сервера выполнены как демоны kernel-уровня, которые запускаются из пространства пользователя при начальной загрузке системы. Это NFS Daemon (rpc.nfsd) на хосте сервера и Block I/O Daemon
(biod) на клиентском хосте. Чтобы улучшить производительность, biod выполняет асинхронный ввод-вывод, используя упреждающее чтение и отложенную запись. К тому же, несколько демонов rpc.nfsd обычно запускаются совместно.
Реализация NFS в Linux немного отличается в клиентском коде: она объединена с файловой системой VFS на уровне ядра и не требует дополнительного управления. Обычно код сервера запускается полностью в пространстве пользователя, так что управление несколькими копиями затруднено. Текущая реализация rpc.nfsd предлагает экспериментальную ограниченную поддержку нескольких серверов. Olaf Kirch разработал NFS-сервер уровня ядра, который появился в ядрах Linux 2.2 и выше. Эффективность заметно выросла. Позже мы поговорим об этом отдельно.
IPX и файловая система
Linux поддерживает не только протоколы TCP/IP, но также и набор протоколов, используемых операционной системой Novell Corporation's NetWare. Эти протоколы дальние родственники TCP/IP, и хотя они делают то же самое, но работают совсем иначе, что делает их несовместимыми с TCP/IP.
Linux имеет свободное и коммерческое программное обеспечение, чтобы обеспечить поддержку интеграции с Novell.
E-Mail Локальное оглавление
Были изобретены различные стандарты обмена почтой. В RFC-822 описывается машинно-независимый способ обмена специальными символами в почтовых сообщениях. Много усилий было приложено для создания "мультимедийной почты", которая включает изображения и звук в сообщения почты.
Огромное количество программ транспортировки почты было написано для систем Un*x. Одна из наиболее известных, sendmail
университета Berkeley. Первоначальный автор, Eric Allman, теперь снова активно работает над sendmail. Подробно о Linux-версии пакета sendmail мы поговорим в главе 18.
Linux также использует сервер Exim (автор Philip Hazel, место создания University of Cambridge). О нем мы поговорим в главе 19.
Пакеты Exim и sendmail
поддерживают набор файлов конфигурации, которые должны быть настроены для Вашей системы. Кроме информации, которая требуется, чтобы почта вообще работала (например, имя машины), имеется много параметров, которые могут быть настроены. Основной файл конфигурации sendmail сначала очень трудно понять. Выглядит, как будто Ваша кошка ходила по клавиатуре с нажатой клавишей SHIFT. Файлы конфигурации Exim более структурированы и проще в понимании, чем у sendmail. Но Exim не обеспечивает прямую поддержку для UUCP и обрабатывает только доменные адреса. Сегодня это не такое уж страшное ограничение. Однако, для малого сайта работа, требуемая для установки любого из них, приблизительно одна.
В этой главе я опишу, что такое email, и с какими проблемами Вы, как администратор будете иметь дело. Глава 18 и глава 19 описывают установку и настройку sendmail и Exim. Приводимой здесь информации хватит, чтобы создать небольшой почтовый сервер, но помните, что можно провести много часов за настройкой поистине фантастического количества параметров.
К концу текущей главы я кратко опишу настройку elm, клиента почты очень распространенного на многих Unix-подобных системах, включая Linux.
Для получения более подробной информации относительно электронной почты в Linux, пожалуйста, обратитесь к Electronic Mail HOWTO (автор Vince Skahan), который регулярно отсылается в comp.os.linux.answers . Дистрибутивы elm, Exim
и sendmail также поставляются с хорошей документацией. Можно также почитать RFC-документы для знакомства с теорией вопроса.
Получение и запуск Exim
Основной файл конфигурации обычно назван
/etc/exim.conf или /etc/exim/config в большинстве дистрибутивов Linux, или /usr/lib/exim/config в старых версиях. Вы можете выяснить, где искать файл конфигурации командой:
|
$ exim -bP configure_file
Вам, вероятно, придется редактировать файл конфигурации, чтобы внести в него значения, специфические для Вашего сайта. В наиболее общих конфигурациях изменить надо очень мало, a рабочую конфигурацию редко придется изменять.
По умолчанию Exim обрабатывает и доставляет всю входящую почту немедленно. Если Вы имеете значительный трафик, Вы можете настроить Exim, чтобы собирал сообщения в очередь и обрабатывал их только в определенные интервалы.
Когда почта ходит внутри TCP/IP-сети, Exim часто выполняется в режиме daemon: при загрузке системы он вызывается из
/etc/init.d/exim и помещает себя в фоновый режим, где ждет входящие TCP-подключения на порте SMTP (обычно порт 25). Это полезно, когда Вы ожидаете большой трафик, потому что Exim не должен запускаться для каждого входящего подключения. Альтернативно, inetd мог бы контролировать порт SMTP и порождать Exim всякий раз, когда имеется подключение на этом порте. Эта конфигурация могла бы быть полезна, когда Вы ограничены в памяти и имеете небольшой трафик почты.
Exim имеет сложный набор параметров командной строки, многие из которых соответствуют таким же параметрам sendmail. Вместо поиска нужных параметров можно выполнять многие общие действия, вызывая соответствующие команды, например, rmail или rsmtp. Они являются символическими связями с Exim. Когда Вы выполняете одну из команд, Exim проверяет имя, которое Вы используете, чтобы вызвать его, и устанавливает соответствующие параметры самостоятельно.
Имеются две связи с Exim, которые Вы должны иметь при любых обстоятельствах: /usr/bin/rmail и
/usr/sbin/sendmail. Когда Вы составляете и посылаете сообщение почты пользовательским агентом, подобным elm, оно направляется по каналу к sendmail или rmail для доставки. Именно поэтому /usr/sbin/sendmail и /usr/bin/rmail должны указывать на Exim. Список получателей сообщения будет передан Exim в командной строке. То же самое случается с почтой, приходящей через UUCP. Вы можете устанавливать требуемые имена пути, чтобы указать на Exim, печатая следующее в ответ на приглашение оболочки:
|
$ ln -s /usr/sbin/exim /usr/bin/rmail
$ ln -s /usr/sbin/exim /usr/sbin/sendmail
Если Вы хотите детально изучить настройку Exim, Вы должны ознакомиться с полной спецификацией Exim. Если она не входит в Ваш дистрибутив Linux, ее можно получить на сайте Exim по адресу
http://www.exim.org.
C-News Локальное оглавление
C-News хранит файлы настроек в /etc/news, большинство исполняемых модулей лежит в иерархии
/usr/lib/news. Статьи хранятся в иерархии
/var/spool/news. Все файлы в этих каталогах должны принадлежать пользователю news или группе news. Большинство проблем возникает из-за того, что C-News не имеет прав доступа к своим файлам. Прежде чем что-то править в них, используйте команду su, чтобы стать пользователем news. Исключением является программа setnewsids, которая используется для установки реального user ID для программ работы с новостями. Она должна принадлежать пользователю root и иметь бит setuid.
В этой главе я подробно опишу все файлы конфигурации C-News и покажу, что именно нужно делать для поддержания пакета в рабочем состоянии.
Internet News Локальное
Сервер INN включает ряд компонентов, каждый с их собственными файлами конфигурации, которые мы обсудим в свое время. Конфигурация INN довольно сложна, но я рассмотрю ее детально.
Настройка программ работы
Один из наиболее эффективных newsreaders это:
|
$ find /var/spool/news -name '[0-9]*' -exec cat {} \;|more
Это способ, которым Unix читает новости.
Большая часть newsreaders, однако, является намного более сложной. Они обычно предлагают полноэкранный интерфейс с отдельными уровнями для отображения всех групп, на которые пользователь подписался, для отображения краткого обзора всех статей в одной группе и для индивидуальных статей.
В уровне newsgroup большинство newsreaders отображает список статей, показывая их темы и авторов. В больших группах невозможно для пользователя уследить за связями всех статей друг с другом, хотя возможно идентифицировать ответы на более ранние статьи.
Тема ответа обычно повторяет тему исходной статьи, начинаясь с Re:. Дополнительно в поле References: заголовка включается message ID статьи, на которую текущая статья является ответом. Сортировка статей по теме и связям создает деревья статей, именуемые потоками (threads). Одна из задач при написании newsreader, создание эффективной схемы построения потоков (threading), потому что время, требуемое для этого, является пропорциональным квадрату числа статей.
Здесь мы не будем детализировать то, как интерфейсы пользователя сформированы. Все newsreaders, в настоящее время доступные для Linux, имеют хорошую функцию справки, так что Вы должны исследовать их сами.
В следующих разделах мы будем иметь дело только с административными задачами. Большинство их касается создания баз данных и учета.
Глобальные опции elm
В глобальном файле elm.rc, Вы должны установить опции, которые относятся к имени Вашей машины. Например, в Virtual Brewery у пользователя vlager файл содержал бы следующее:
|
# # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com
Глобальные опции elm
В глобальном файле elm.rc, Вы должны установить опции, которые относятся к имени Вашей машины. Например, в Virtual Brewery у пользователя vlager файл содержал бы следующее:
|
# # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com
Этот набор опций ориентирует elm относительно имени локальной машины. Хотя эта информация редко используется, Вы должны установить эти опции. Заметьте, что эти опции не будут работать в частном файле elmrc.
ICMP-расширения: использование с опциями -m icmp -p icmp
- -icmp-type [!] typename
Указывает подходящие этому правилу сообщения ICMP. Типы сообщений можно задать номерами или именами. Допустимые имена: echo-request, echo-reply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable и port-unreachable.
ICMP-расширения: использование с опциями -m icmp -p icmp
- -icmp-type [!] typename
Указывает подходящие этому правилу сообщения ICMP. Типы сообщений можно задать номерами или именами. Допустимые имена: echo-request, echo-reply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable и port-unreachable.
Имена переменных
dip понимает только предопределенное множество переменных. Имя переменной всегда начинается с символа доллара и должно быть написано в нижнем регистре.
Имена переменных
dip понимает только предопределенное множество переменных. Имя переменной всегда начинается с символа доллара и должно быть написано в нижнем регистре.
Переменные $local и $locip хранят имя и IP-адрес локальной машины. При сохранении в $local канонического имени, dip автоматически преобразует его в IP-адрес и запишет результат в переменную $locip. То же самое, но в обратном порядке произойдет при записи в $locip : dip получит имя для этого адреса и запишет его в переменную $local.
Переменные $remote и $rmtip делают то же самое для удаленной машины. $mtu хранит значение MTU для связи.
Эти пять переменных единственые, которые могут быть заданы непосредственно, используя команду get. Другие переменные могут быть установлены только через соответствующие команды, но можно использовать и операторы print ; это $modem, $port и $speed .
$errlvl переменная, через которую Вы можете обращаться к результату последней выполненой команды. Уровень ошибки 0 указывает на успех, в то время, как ненулевое значение, обозначает ошибку.
Имена сайтов
Как и при работе с сетями TCP/IP, Ваш компьютер должен иметь имя для UUCP-сетей. Пока Вы просто хотите использовать UUCP для передачи файлов, это имя не должно удовлетворять никаким стандартам. Единственое ограничение в том, что имя не должно быть больше, чем 7 символов, чтобы не путать машину с файловыми системами, которые накладывают ограничения на имя файла.
Имена сайтов
Как и при работе с сетями TCP/IP, Ваш компьютер должен иметь имя для UUCP-сетей. Пока Вы просто хотите использовать UUCP для передачи файлов, это имя не должно удовлетворять никаким стандартам. Единственое ограничение в том, что имя не должно быть больше, чем 7 символов, чтобы не путать машину с файловыми системами, которые накладывают ограничения на имя файла.
Однако, если Вы используете UUCP для почты или новостей, Вы должны подумать о наличии имени, зарегистрированного в UUCP Mapping project. UUCP Mapping project описан в главе 17. Даже если Вы делите домен с кем-то, Вы можете получить официальное имя UUCP для своего участка сети.
Часто люди выбирают свое UUCP имя так, чтобы соответствовать первому компоненту имени домена. Предположим, что адрес Вашего домена swim.twobirds.com, тогда имя главной машины UUCP было бы swim. Обычно именно так и бывает. Конечно, Вы можете также использовать любое UUCP имя.
Однако, не стоит использовать имя в адресе почты, пока Вы не зарегистрировали его как Ваше официальное имя UUCP. В лучшем случае, почта на незарегистрированную машину UUCP отправится в мусорную корзину. Если Вы используете имя, уже присвоенное некоторому другому сайту, эта почта не будет направлена ему и причинит администратору почты много проблем.
По умолчанию, набор программ UUCP использует hostname как имя UUCP. Это имя обычно устанавливается в скрипте rc и хранится в /etc/hostname. Если ваше имя UUCP отлично от того, что Вы устанавливаете в качестве имени своей машины, Вы должны использовать опцию hostname в файле config, чтобы сообщить uucico о Вашем имени UUCP. Это будет рассмотрено чуть позже.
Имя системы
Команда system задает имя удаленной системы. Вы должны определить правильное имя удаленной системы, не псевдоним, потому что uucico сравнит это значение с ответом системы.
Имя системы
Команда system задает имя удаленной системы. Вы должны определить правильное имя удаленной системы, не псевдоним, потому что uucico сравнит это значение с ответом системы.
Каждое имя системы может появляться только один раз. Если Вы хотите использовать несколько наборов конфигураций для той же самой системы (различные номера телефонов, которые uucico должен пробовать по очереди), Вы можете определять альтернативы (alternates). Альтернативы описаны ниже.