Server: ALES_F1 Queue: NPI223761_P1 Queue ID: 6A0E000C Seq Name Description Status Form Job ID ---------------------------------------------------------------------- 1 TOTRAN LyX document - proposal.lyx Active 0 02660001
Вы может видеть только одно задание по выводу на печать в очереди, принадлежащей пользователю TOTRAN. Остальная часть параметров включает описание работы, состояние и идентификатор работы.
|
$ pqrm -S ALES_F1 NPI223761_P1 02660001
Команда довольно проста, но неуклюжая для того, чтобы использовать ее в спешке. Было бы неплохо написать скрипт, чтобы упростить эту операцию.
Установка Ethernet Сейчас Linux
Когда-то раньше в руководствах по Linux пытались перечислить все допустимые карты. Сейчас такой список займет слишком много места. К счастью, Paul Gortmaker поддерживает Ethernet HOWTO, в котором есть список всех карт и информация о том, как заставить их работать в Linux. Документ рассылается в группу новостей comp.os.linux.answers и доступен на зеркалах Linux Documentation Project.
Даже если Вы уверены, что знаете, как установить специфический тип платы Ethernet на своей машине, все равно стоит ознакомиться с Ethernet HOWTO на предмет возможных хитростей. Это поможет сэкономить немало сил для DMA-карт Ethernet, которые используют тот же канал DMA, что и контроллер Adaptec 1542 SCSI. Если их не разделить, Вы получите карту Ethernet, записывающую данные пакетов в произвольное место на Вашем жестком диске.
Чтобы использовать любую из поддержанных плат Ethernet с Linux, Вы можете использовать готовое ядро из одного из дистрибутивов Linux. Они вообще имеют модули для всех поддерживаемых драйверов, и процесс установки обычно позволяет Вам выбирать, какие драйверы Вы хотите загружать. Однако, лучше формировать собственное ядро и компилировать только те драйверы, в которых Вы фактически нуждаетесь: это сохраняет дисковое пространство и память.
Установка Hostname Большинство
Обычной практикой является использование локального имени (без имени домена). Например, машины Virtual Brewery (описаны в
приложении A) могут иметь имена vale.vbrew.com и vlager.vbrew.com. Эти имена полные, то есть с именем домена (fully qualified domain names, FQDNs. Их локальные имена будут первыми компонентами полных, например, vale. Однако, поскольку локальные имена часто используется, чтобы искать IP-адрес компьютера, Вы должны удостовериться, что сервер имен способен найти адрес по имени. Это обычно означает, что Вы должны внести имя в файл /etc/hosts.
Некоторые люди предлагают использовать команду
domainname, чтобы сообщить ядру оставшуюся часть FQDN. Этим путем Вы могли бы объединять вывод из hostname и domainname для получения FQDN. Однако, это в самом лучшем случае только наполовину верно. domainname
вообще используется, чтобы установить домен NIS, который может полностью отличаться от домена DNS, к которому компьютер принадлежит. Вместо этого, чтобы гарантировать, что короткая форма пригодна к использованию в поиске, все новые версии hostname добавляют соответствующую запись в сервер имен или пишут полное доменное имя в файл /etc/hosts. Затем можно использовать параметр --fqdn в команде
hostname для получения полного имени.
Установка IP-адресов Если Вы конфигурируете
Дела немного более сложны с реальными сетями, подобными Ethernet. Если Вы хотите подключить Ваш компьютер к существующей сети, Вы должны просить, чтобы администраторы дали Вам IP-адрес в этой сети. Если сеть строите сами, можете назначать IP-адреса лично.
Компьютеры в локальной сети обычно должны совместно использовать адреса из той же самой логической IP-сети. Следовательно, Вы должны назначить сетевой адрес IP. Если Вы имеете несколько физических сетей, Вы должны назначить им различные сетевые адреса или использовать подсети, чтобы разделить адресный интервал IP на несколько подсетей. Последний способ подробно рассмотрен в разделе "Создание подсетей".
При выборе сетевого IP-адреса многое зависит от того, предполагаете ли Вы выходить в Internet в ближайшем будущем. Если да, получите официальный IP-адрес сейчас, чтобы потом не перенастраивать систему. Попросите, чтобы Ваш провайдер помог Вам. Если Вы хотите получить сетевой адрес на всякий случай, запросите Сетевое Заявление: анкету адреса с hostmaster@internic.net или Network Information Center Вашей страны, если он имеется.
Если Ваша сеть не связана с Internet и не будет связана в ближайшем будущем, Вы свободны выбрать любой допустимый сетевой адрес. Только убедитесь, что никакие пакеты не могут из Вашей сети попасть в Internet! Чтобы быть уверенным в том, что даже в случае их попадания в Internet, они не создадут проблем, используйте один из сетевых адресов, зарезервированных для частного использования. Internet Assigned Numbers Authority (IANA) отложил несколько сетевых адресов из классов A, B и C, которые Вы можете использовать без регистрации. Эти адреса имеют силу только внутри частной сети и непригодны для сетевого взаимодействия в Internet. Они определены в RFC 1597 и перечислены в
таблице 2-1 в главе 2. Обратите внимание, что вторые и третьи блоки содержат 16 и 256 подсетей соответственно.
Выбор адресов из одной из этих подсетей не только полезен для сетей, полностью не связанных с Internet; Вы можете выполнять немного более ограниченный доступ, использующий одну машину как шлюз. Вашей локальной сети шлюз доступен по внутреннему IP-адресу в то время, как внешний мир знает их официально зарегистрированный адрес (назначенный Вам провайдером). Мы вернемся к этому понятию на описании подключения с IP masquerade в главе 11.
В дальнейшем мы предполагаем, что используется сеть класса B, скажем 172.16.0.0. Конечно, сети класса C определенно удовлетворит почти всех, но я использую именно сеть класса B ради простоты; это сделает примеры подсетей в следующем разделе этой главы немного более интуитивными.
Установка исполняемых модулей
Если Вы хотите компилировать и устанавливать сетевые прикладные программы стандарта TCP/IP самостоятельно, Вы можете получать их исходные тексты с большинства Linux FTP серверов. Все современные дистрибутивы Linux включают богатый набор сетевых прикладных программ TCP/IP, например, браузеры World Wide Web, программы telnet и ftp и второстепенные сетевые утилиты, вроде talk. Все это компилируется довольно просто, при условии пунктуального следования инструкциям в пакете исходного кода.
Установка параметров синхронизации для IP Masquerade
Когда новое подключение установлено, программное обеспечение IP masquerade создает ассоциацию в памяти между компьютерами, связанными с подключением. Вы можете рассматривать эти ассоциации в любое время в файле /proc/net/ip_masquerade Эти ассоциации имеют время ожидания бездеятельности. После окончания этого времени связь удаляется.
Установка параметров синхронизации для IP Masquerade
Когда новое подключение установлено, программное обеспечение IP masquerade создает ассоциацию в памяти между компьютерами, связанными с подключением. Вы можете рассматривать эти ассоциации в любое время в файле /proc/net/ip_masquerade Эти ассоциации имеют время ожидания бездеятельности. После окончания этого времени связь удаляется.
Вы можете устанавливать время ожидания, используя
ipfwadm. Синтаксис в общем виде такой:
|
ipfwadm -M -s
Для ipchains:
|
ipchains -M -S
Реализация iptables использует намного более длинные значения по умолчанию для таймеров и не позволяет Вам устанавливать их. Каждое из этих значений представляет таймер, используемый программным обеспечением IP masquerade. Следующая таблица описывает таймеры и их назначение:
Имя
Описание
tcp |
|
Время ожидания сеанса TCP. Задает как долго TCP-подключение может оставаться неактивным до того, как ассоциация для него удалится.
tcpfin |
|
Время ожидания TCP после FIN. Как долго ассоциация останется после того, как TCP-подключение было разъединено.
udp |
|
Время ожидания сеанса UDP. Как долго UDP-подключение может оставаться неактивным перед тем, как ассоциация для него удалится.
Устаревшие новости В Bnews, устаревание
Иногда Вы хотите сохранять статьи из некоторых групп даже после того, как они устарели; например, программы, зарегистрированные в comp.sources.unix. Это называется архивированием. Файл explist разрешает Вам отмечать группы для архивирования.
Записи в explist имеют следующий формат:
|
grouplist perm times archive
grouplist представляет собой разделенный запятыми список newsgroups (групп новостей), к которым применяется эта запись. Иерархии могут быть определены префиксом имени группы, необязательно добавляется ключ all. Например, для записи, обращающейся ко всем группам ниже иерархии comp.os, Вы могли бы ввести comp.os или
comp.os.all.
При устаревании новости из группы, имя будет проверено для всех записей в explist в данном порядке. Применяется первая соответствующая запись. Например, чтобы отбросить большую часть comp через четыре дня, кроме comp.os.linux.announce, которую Вы хотите хранить в течение недели, Вы просто должны иметь запись для comp.os.linux.announce, которая определяет семидневный период хранения, сопровождаемую записью для comp, которая определяет четыре дня.
Поле perm задает детали, если запись применяется к модерируемой или другой группе с особым статусом. Оно может принимать значения m, u или x, которые обозначают модерируемый, немодерируемый или любой тип.
Третье поле, times, обычно содержит только одно число. Это число дней, после которых статьи будут устаревать, если им не были назначены особые даты в поле Expires: в заголовке статьи. Обратите внимание, что это число дней подсчитывается с момента поступления
на Вашу машину, а не с даты отправки статьи в группу!
Поле times может быть и более сложным. Оно может быть комбинацией до трех чисел, отделяемых от друг друга тире. Первое обозначает число дней, которые должны пройти прежде, чем статья будет рассматривается кандидатом на устаревание. Использовать значение отличное от нуля редко бывает нужно. Второе поле определяет вышеупомянутое заданное по умолчанию число дней, после которых статья будет устаревать. Третья часть определяет число дней, после которых статья устареет безоговорочно независимо от того, имеет ли она поле Expires: или нет. Если задано только среднее число, другие два принимают значения по умолчанию. Они могут быть определены, используя специальную запись /bounds/, которая описана ниже.
Четвертое поле, archive, обозначает, должна ли newsgroup быть заархивирована и, если да, то где. Если никакого архивирования не нужно, должно использоваться тире. Иначе Вы либо используете полное имя (указывающее на каталог), либо знак (@). Знак обозначает заданный по умолчанию каталог архивов, который должен быть задан doexpire, используя параметр
–a в командной строке. Каталог архивов должен принадлежать news. Когда doexpire
архивирует статью из, скажем, comp.sources.unix , он сохраняет ее в подкаталоге comp/sources/unix в каталоге архивов, создавая его если он не существует. Но сам каталог архивов не будет создан автоматически.
Имеется две специальных записи в файле explist, на которые полагается doexpire. Вместо списка newsgroups, они имеют ключевые слова /bounds/ и /expired/. Запись /bounds/ содержит значения по умолчанию для трех значений поля times, описанного выше.
Поле /expired/ определяет, как долго C-News будет хранить строки в файле хронологии. Это необходимо, потому что C-News не будет удалять строку из файла хронологии, если соответствующая статья устарела, но будет хранить ее в случае, если дубликат должен прибыть после этой даты. Если Вы подпитываетесь новостями с одного сайта, можете задать небольшое значение. Иначе установите порядка двух недель, в зависимости от времени хранения статей (особенно в UUCP-сетях).
Простой файл explist воспроизведен ниже:
|
# keep history lines for two weeks. No article gets more than three months /expired/ x 14 - /bounds/ x 0-1-90 - # groups we want to keep longer than the rest comp.os.linux.announce m 10 - comp.os.linux x 5 - alt.folklore.computers u 10 - rec.humor.oracle m 10 - soc.feminism m 10 - # Archive *.sources groups comp.sources,alt.sources x 5 @ # defaults for tech groups comp,sci x 7 - # enough for a long weekend misc,talk x 4 - # throw away junk quickly junk x 1 - # control messages are of scant interest, too control x 1 - # catch-all entry for the rest of it all x 2 -
С устареванием в C News имеется ряд потенциальных проблем при чистке. Например, Ваша программа чтения новостей (newsreader) могла бы полагаться на третье поле файла active, которое содержит номер самой старой статьи. При устаревании статьи C-News не модифицирует это поле. Если Вы хотите, чтобы это поле представляло реальную ситуацию, Вы должны выполнить программу, называемую updatemin, после каждого выполнения doexpire. В старых версиях C-News аналогичные задачи возложены на скрипт upact.
Кроме того, C-News не сканирует каталоги новостей в поисках устаревших. Вместо этого он анализирует файл хронологии (файл
history). А ведь совсем не факт, что этот файл соответствует реальному положению дел! Например, если он оказался неправильным, на диске появятся "вечные" статьи, которые не удалятся никогда, а вот место занимать будут. Для борьбы с ними есть скрпт addmissing в каталоге /usr/lib/news/maint, который добавляет потерянные статьи в файл, или mkhistory, который просто заново создает файл history. Эти команды должны выполняться от имени пользователя news, иначе Вы получите еще худшую ситуацию, когда C-News вообще не может прочитать или обновить файл history.
Утилита ipchains
Аналогично ipfwadm, утилита
ipchains может несколько сбивать с толку, пока к ней не привыкнешь. Она обеспечивает всю гибкость ipfwadm с упрощенным синтаксисом и дополнительно обеспечивает механизм наборов или цепочек (“chaining”), который позволяет Вам управлять множеством правил и связывать их друг с другом. Я рассмотрю формирование цепочки правил в отдельном разделе чуть позже.
Утилита ipchains
Аналогично ipfwadm, утилита
ipchains может несколько сбивать с толку, пока к ней не привыкнешь. Она обеспечивает всю гибкость ipfwadm с упрощенным синтаксисом и дополнительно обеспечивает механизм наборов или цепочек (“chaining”), который позволяет Вам управлять множеством правил и связывать их друг с другом. Я рассмотрю формирование цепочки правил в отдельном разделе чуть позже.
Команда ipchains появилась в дистрибутивах Linux на ядрах серии 2.2. Исходники можно взять на
http://www.rustcorp.com/linux/ipchains. В этот пакет исходников входит скрипт ipfwadm-wrapper, который имитирует работу ipfwadm, используя возможности
ipchains. Это существенно упрощает к новой версии firewall.
Утилита ipfwadm
Утилита ipfwadm (IP Firewall Administration) нужна для управления правилами в ядрах до версии 2.2.0. Ее синтаксис очень сложен, но я приведу несколько наиболее простых примеров.
Утилита ipfwadm
Утилита ipfwadm (IP Firewall Administration) нужна для управления правилами в ядрах до версии 2.2.0. Ее синтаксис очень сложен, но я приведу несколько наиболее простых примеров.
Утилита ipfwadm есть во всех современных дистрибутивах Linux, но, возможно, не ставится по умолчанию. Может иметься специальный сетевой пакет, который надо поставить отдельно. Найти исходный код можно на ftp.xos.nl в каталоге /pub/linux/ipfwadm.
Утилита iptables
Синтаксис iptables очень похож на синтаксис ipchains. Разница в поддержке модулей расширения и ряде новшеств в фильтрации пакетов. Разумеется, я приведу пример и для iptables, так что Вы сможете сравнить эти две утилиты.
Утилита iptables
Синтаксис iptables очень похож на синтаксис ipchains. Разница в поддержке модулей расширения и ряде новшеств в фильтрации пакетов. Разумеется, я приведу пример и для iptables, так что Вы сможете сравнить эти две утилиты.
Утилита iptables входит в пакет netfilter, исходники которого можно скачать с http://www.samba.org/netfilter. Она также входит в дистрибутивы Linux на ядре 2.4. Правда, поскольку это ядро еще находится на стадии тестирования, я пока не встречал дистрибутивов на нем.
Мы будем говорить относительно огромного шага вперед, сделанного netfilter, в соответствующем разделе этой главы чуть позже.
Утилиты настройки интерфейса IPX
Greg Page разработал набор утилит настройки IPX, который является обычным пакетом в современных дистрибутивах и может быть также получен в исходной форме по anonymous FTP с http://metalab.unc.edu/
(файл /pub/Linux/system/filesystems/ncpfs/ipx.tgz).
Утилиты настройки интерфейса IPX
Greg Page разработал набор утилит настройки IPX, который является обычным пакетом в современных дистрибутивах и может быть также получен в исходной форме по anonymous FTP с http://metalab.unc.edu/
(файл /pub/Linux/system/filesystems/ncpfs/ipx.tgz).
Скрипт rc обычно выполняет инструментальные средства IPX при загрузке.
Uucico сообщает, что сайт уже заблокирован
Это означает, что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться от прошлого обращения к системе, если ее работа была прервана некорректно. Однако, также правдоподобно, что есть другой процесс uucico, который пробует вызвать удаленную систему, но по какой-то причине связь пока не установил. Если этот процесс не преуспел в соединение с удаленной системой, уничтожьте его и удалите все файлы блокировки, которые он оставил.
Uucico сообщает, что сайт уже заблокирован
Это означает, что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться от прошлого обращения к системе, если ее работа была прервана некорректно. Однако, также правдоподобно, что есть другой процесс uucico, который пробует вызвать удаленную систему, но по какой-то причине связь пока не установил. Если этот процесс не преуспел в соединение с удаленной системой, уничтожьте его и удалите все файлы блокировки, которые он оставил.
Самое лучшее решение проблем маршрутизации
Самое лучшее решение проблем маршрутизации почты в UUCP-сетях: принятие системы имен доменов в UUCP-сетях. Конечно, Вы не можете сделать запрос серверу преобразования имен по UUCP. Однако, многие UUCP-абоненты сформировали малые домены, которые внутренне координируют маршрутизацию. В картах эти области объявляют одну или две машины как их шлюз почты так, чтобы не было записи карты для каждой машины в области. Шлюз обрабатывает всю почту области. Схема маршрутизации внутри области (домена) полностью невидима для внешнего мира.
UUCP и RFC-822
Самое лучшее решение проблем маршрутизации почты в UUCP-сетях: принятие системы имен доменов в UUCP-сетях. Конечно, Вы не можете сделать запрос серверу преобразования имен по UUCP. Однако, многие UUCP-абоненты сформировали малые домены, которые внутренне координируют маршрутизацию. В картах эти области объявляют одну или две машины как их шлюз почты так, чтобы не было записи карты для каждой машины в области. Шлюз обрабатывает всю почту области. Схема маршрутизации внутри области (домена) полностью невидима для внешнего мира.
Это очень хорошо работает со схемой smart-host routing
маршрутизации, описанной выше. Глобальная информация маршрутизации поддерживается шлюзом, а машины внутри области получают только маленький файл paths, который перечисляет маршруты внутри их области и маршрут к хабу почты. Даже шлюз почты не должен иметь информации маршрутизации для каждой UUCP-машины в мире. Например, запись pathalias, показанная ниже направляет всю почту для абонента в домене sub.org на машину smurf:
|
.sub.org swim!smurf!%s
Любая почта, адресованная claire@jones.sub.org будет послана на машину swim с адресом smurf!jones!claire.
Иерархическая организация области имен позволяет серверам почты смешивать более специфические маршруты с менее специфическими. Например, система во Франции может иметь специфические маршруты для подобластей fr, но направлять любую почту для машин в области США на некоторую систему в США. Таким образом, основанная на областях маршрутизация значительно уменьшает размер баз данных маршрутизации и административные затраты.
Основная польза от применения имен области в UUCP-среде в том, что согласие с RFC 822 разрешает простой переход между UUCP-сетями и Internet. Многие UUCP области в настоящее время имеют связь со шлюзами Internet, которые действуют как их smart-host routing. Посылка сообщений через Internet быстрее, и информация маршрутизации намного более надежна, потому что машины Internet могут использовать DNS вместо карт Usenet.
Чтобы быть доступными из Internet, uucp-домены обычно имеют шлюз в Internet и объявляют запись MX для них (MX-записи были описаны выше). Например, допустим, что moria принадлежит к домену orcnet.org. Машина gcc2.groucho.edu действует как шлюз в Internet. Следовательно, moria использовала бы gcc2 как smart-host так, чтобы вся почта для иностранных областей была передана через Internet. С другой стороны, gcc2 объявил бы запись MX для *.orcnet.org и передавал всю входящую почту для абонентов orcnet через машину moria.
Единственая остающаяся проблема состоит в том, что транспортные программы UUCP не могут иметь дело с именами области. Большинство UUCP программ было разработано, чтобы справиться с именами длиной до восьми символов. Использование не алфавитно-цифровых символов, например, точек, полностью вне правил.
Следовательно, некоторое отображение между именами RFC 822 и UUCP hostname необходимо. Один общий способ отображения FQDN на имена UUCP состоит в том, чтобы использовать для этого файл pathalias:
|
moria.orcnet.org ernie!bert!moria!%s
Это создаст чистый путь uucp-стиля из адреса, который определяет имя домена. Некоторые почтовые программы имеют для этого специальные файлы: sendmail, например, использует
uucpxtable.
Обратное преобразование (domainizing)) иногда требуется при посылке почты из UUCP-сети в Internet. Как только отправитель почты использует имя домена в адресе назначения, этой проблемы можно избежать. не удаляя имя области из адреса конверта при пересылке сообщения на smart-host. Однако, все еще есть абоненты UUCP, которые не являются частью домена. Они обычно определяются добавлением псевдодомена uucp.
База данных pathalias обеспечивает направляющую информацию в uucp-сетях. Типичная запись походит на эту (имя сервера и путь отделяются метками табуляции):
|
moria.orcnet.org ernie!bert!moria!%s moria ernie!bert!moria!%s
Это направляет любое сообщение к moria через ernie и bert . Полное доменное имя moria и его имя в UUCP должны быть заданы, если почтовая программа не имеет отдельного способа связи имен.
Если Вы хотите направлять все сообщения на машины внутри некоторой области на сервер почты, Вы можете также определять путь в базе данных pathalias, давая имя области как целевой с предшествующей точкой. Например, если все машины в sub.org могут быть достигнуты через swim!smurf, запись pathalias могла бы выглядеть следующим образом:
|
.sub.org swim!smurf!%s
Запись в файл pathalias является допустимой только, когда Вы имеете сервер, который не должен делать много маршрутизации. Если Вы должны делать маршрутизацию для большого количества машин, лучший способ использовать команду pathalias, чтобы создать файл из файлов карты. Карты могут поддерживаться намного проще, потому что Вы можете просто добавлять или удалять систему, редактируя запись карты системы, и вновь создавать файл карты. Хотя карты, изданные Usenet Mapping Project, не очень хороши для маршрутизации, UUCP-сети могут обеспечивать информацию маршрутизации в их собственном наборе карт.
Файл карты в основном состоит из списка абонентов, печатая абонентов каждого опроса системы. Имя системы начинается в первом столбце и сопровождается отделенным запятой списком связей. Список может быть продолжен через символ перевода строки, если следующая строка начинается с метки табуляции. Каждая связь состоит из имени машины, сопровождаемого стоимостью, данной в скобках. Доступность определяется выражением, состоящим из чисел с ключевыми словами, например, DAILY или WEEKLY. Строки, начинающиеся знаком #, игнорируются.
Например, рассмотрим moria, который опрашивает swim.twobirds.com два раза в день, и bert.sesame.com только раз в неделю. Кроме того, связь с bert использует медленный модем на 2400bps. Машина moria издаст следующую запись карты:
|
moria.orcnet.org bert.sesame.com(DAILY/2), swim.twobirds.com(WEEKLY+LOW) moria.orcnet.org = moria
Последняя строка делает moria известной под именем UUCP. Обратите внимание, что для этой связи должно быть DAILY/2, при вызове два раза в день.
Используя информации из таких файлов карты, pathalias способна вычислить оптимальные маршруты к любому адресату, перечисленному в файле путей, и создать базу данных pathalias, которая может использоваться для маршрутизации до этого абонента.
Команда pathalias обеспечивает пару других возможностей, подобно скрывающемуся пункту (то есть абонент, доступный только через шлюз) и т.д. См. man-страницу 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 наиболее забавно: оно задает Вашу географическую позицию в latitude/longitude и используется, чтобы рисовать карты postscript, которые показывают всех абонентов для каждой страны.
UUCP поверх TCP
В первый момент это может показаться абсурдом, но на самом деле UUCP поверх TCP не такая уж плохая идея, особенно при пересылке большого количества данных, типа новостей Usenet. На TCP-узлах новостями в основном обмениваются, используя NNTP протокол, в котором статьи запрашиваются и посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая для больших узлов с большим объемом новостей, эта методика не подходит для небольших участков сети, которые получают новости медленным соединением типа ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в больших пакетах, которые могут быть сжаты и таким образом перемещаться с очень низкими затратами. Стандартный способ передать эти пакеты состоит в том, чтобы использовать UUCP поверх TCP.
UUCP поверх TCP
В первый момент это может показаться абсурдом, но на самом деле UUCP поверх TCP не такая уж плохая идея, особенно при пересылке большого количества данных, типа новостей Usenet. На TCP-узлах новостями в основном обмениваются, используя NNTP протокол, в котором статьи запрашиваются и посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая для больших узлов с большим объемом новостей, эта методика не подходит для небольших участков сети, которые получают новости медленным соединением типа ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в больших пакетах, которые могут быть сжаты и таким образом перемещаться с очень низкими затратами. Стандартный способ передать эти пакеты состоит в том, чтобы использовать UUCP поверх TCP.
В файле sys Вы определяете систему, которую нужно вызвать через TCP.
|
system gmu address news.groucho.edu time Any port tcp-conn chat ogin: vstout word: clouseau
Команда address задает IP-адрес машины или ее полное доменное имя. Соответствующий участок файла port выглядел бы так:
|
port tcp-conn type tcp service 540
Этот пример говорит, что TCP-соединение должно использоваться, когда файл sys ссылается на tcp-conn , и что uucico должен пытаться соединяться с TCP-портом 540 на удаленной машине. Это заданный по умолчанию номер порта для обслуживания UUCP. Вместо номера порта, Вы можете также давать символическое имя порта командой service. Номер порта, соответствующий этому имени будет найден в файле
/etc/services. Общее имя для UUCP-сервиса uucpd .
Вернемся к нашему примеру
Снова предположим, что мы имеем сеть в нашей организации, и используем Linux firewall для предоставления доступа к нашим серверам WWW из Internet, но при этом хотим блокировать любой другой трафик.
Вернемся к нашему примеру
Снова предположим, что мы имеем сеть в нашей организации, и используем Linux firewall для предоставления доступа к нашим серверам WWW из Internet, но при этом хотим блокировать любой другой трафик.
Если наша сеть имеет 24-битную маску подсети (класс C) и имеет сетевой адрес 172.16.1.0, следует использовать такое правило
ipchains:
|
# ipchains -F forward
# ipchains -P forward DENY
# ipchains -A forward -s 0/0 80 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 80 -p tcp -b -j ACCEPT
Первая команда удаляет все правила из набора forward , вторая устнавливает действие по умолчанию для
forward в DENY. Третья и четвертая команды делают специфическую фильтрацию, которую мы хотим. Четвертая команда разрешает доступ к web-серверам, а третья запрещает входящие TCP-подключения с порта 80.
Если мы теперь хотим добавить правила, которые предоставят только пассивный режим доступа к FTP-серверу снаружи сети, мы добавим правила:
|
# ipchains -A forward -s 0/0 20 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 20 -p tcp -b -j ACCEPT # ipchains -A forward -s 0/0 21 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 21 -p tcp -b -j ACCEPT
Вернемся к нашим примерам
Теперь используя netfilter, Вы могли бы просто загружать модуль ipchains.o и работать с ним, как с ipchains. Вместо этого, мы повторно напишем наши правила, используя iptables.
Вернемся к нашим примерам
Теперь используя netfilter, Вы могли бы просто загружать модуль ipchains.o и работать с ним, как с ipchains. Вместо этого, мы повторно напишем наши правила, используя iptables.
Как и раньше, мы предполагаем, что есть сеть некоей организации, на Linux-машине запущен firewall. Все внутренние пользователи имеют доступ к WWW-серверам в Internet, но и только.
Если сеть использует сетевую маску в 24 бита (класс C) и имеет адрес сети 172.16.1.0, нужно использовать правила iptables:
|
# modprobe ip_tables # iptables -F FORWARD # iptables -P FORWARD DROP # iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 172.16.1.0/24 / --syn -j DROP # iptables -A FORWARD -m tcp -p tcp -s 172.16.1.0/24 --sport / 80 -d 0/0 -j ACCEPT # iptables -A FORWARD -m tcp -p tcp -d 172.16.1.0/24 --dport 80 -s 0/0 -j / ACCEPT
В этом примере iptables работает точно как команда ipchains. Вся разница в том, что надо предварительно загрузить модуль ip_tables.o. Обратите внимание, что iptables не поддерживает опцию
-b, так что мы должны отдельно задать правило для каждого направления.
Все про ifconfig Имеются еще несколько
interface имя интерфейса и address IP-адрес, который требуется назначить интерфейсу. Это может быть IP-адрес или имя, которое ifconfig будет искать в файле /etc/hosts.
Если ifconfig используется только с именем интерфейса, он показывает конфигурацию этого интерфейса. Когда он вызывается без параметров, он показывает все интерфейсы, которые Вы отконфигурировали; опция –a вынуждает его показать и бездействующие. Вывод для Ethernet-интерфейса eth0
может напоминать это:
|
# ifconfig eth0
eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 0 RX packets 3136 errors 217 dropped 7 overrun 26 TX packets 1752 errors 25 dropped 0 overrun 0
Поля MTU и Metric
показывают текущее MTU и метрическое значение для этого интерфейса. Метрическое значение традиционно используется некоторыми операционными системами, чтобы вычислить сложность маршрута. Linux не использует это значение, но определяет его для совместимости.
Строки RX и TX
показывают, сколько пакетов были получены или переданы без ошибок, сколько произошло ошибок, сколько пакетов были потеряны, вероятно, из-за нехватки памяти и сколько были потеряны из-за переполнения. Переполнение приемника обычно случается, когда пакеты ходят быстрее, чем ядро может их обслужить. Значения флагов, выводимые ifconfig, передают дополнительную информацию об именах и опциях командной строки, они будут объяснены ниже.
Следующий список параметров используется ifconfig с соответствующими названиями флагов, заданными в скобках. Опция которая просто включает некоторую возможность, также позволяет ее выключать, если названию опции предшествует тире (-).
up
Эта опция делает интерфейс доступным для IP-уровня. Она подразумевается, когда задается IP-адрес. Также используется для перезапуска интерфейса, который временно выключен опцией down.
Соответствует флагам UP и
RUNNING.
down
Она делает интерфейс недоступным IP-уровню. Эффективно отключает любой IP-трафик через интерфейс. Обратите внимание, что она не удаляет все маршрутизационные записи, которые используют этот интерфейс. Если Вы постоянно выключаете некий интерфейс, Вы должны удалить эти записи сами и предоставить, если возможно, альтернативные маршруты.
netmask mask
Назначает маску подсети для использования интерфейсом. Здесь можно задавать как любое шестнадцатиричное число с 32 битами, которому предшествует 0x, так и десятичные числа, разделенные точками.
pointopoint address
Эта опция используется для point-to-point IP-соединений. Необходима, чтобы отконфигурировать, например, SLIP или PLIP интерфейсы. Если адрес для point-to-point был установлен, ifconfig показывает флаг POINTOPOINT.
broadcast address
Широковещательный адрес обычно создается из сетевого адреса установкой всех бит части машины. Некоторые реализации IP используют другую схему, эта опция помогает приспособиться к этим странным средам. Если широковещательный (broadcast) адрес был установлен, ifconfig показывает флаг BROADCAST .
irq
Задает номер IRQ для устройства. Обычно используется для PLIP, но может пригодиться и для некоторых карт Ethernet.
metric number
Эта опция может использоваться для назначения метрического значения записи таблицы маршрутизации, созданной для интерфейса. Эта метрика используется в RIP для построения таблиц маршрутизации. Установленное по умолчанию значение равно нулю. Если Вы не используете RIP-демон, Вы не нуждаетесь в этой опции вообще; если используете, Вы редко должны будете изменять это значение.
mtu bytes
Эта опция устанавливает Maximum Transmission Unit (максимальную длину передаваемого пакета). Для Ethernet MTU по умолчанию 1500, для SLIP интерфейсов 296.
arp
Это опция определена для широковещательных сетей типа пакетного радио или Ethernet. Она позволяет использовать ARP, протокола поиска адреса, используемый для определения физического адреса машины, включенной в сеть. Для широковещательных сетей, включен по умолчанию. Если ARP выключен, ifconfig отобразит флаг NOARP.
-arp
Запрещает использование ARP на этом интерфейсе.
promisc
Помещает интерфейс в состояние promiscuous. В широковещательной сети это заставляет интерфейс получать все пакеты независимо от того, были ли они предназначены для этой машины или нет. Это позволяет, используя фильтры пакетов, анализировать сетевой трафик. Обычно, это хорошая техника охоты на сетевые проблемы, которые иначе трудно отловить. Здесь весьма полезна утилита tcpdump. С другой стороны, это позволяет хакерам исследовать движение паролей по сети и делать другие черные дела. Одна защита против этого типа нападения: не позволять присоединяться к сети чужим компьютерам. Другой способ: использовать безопасные опознавательные протоколы, типа Kerberos, или SRA login. Эта опция соответствует флагу PROMISC.
–promisc
Запрещает режим promiscuous.
allmulti
Multicast-адреса представляют собой особый подвид широковещательных адресов позволяющих обращаться к группе машин, которые не обязательно должны быть в той же самой подсети. Они весьма полезны при сетевых голосовых переговорах и видеоконференциях. Поддерживаются многими, но не всеми картами Ethernet. Эта опция соответствует флагу ALLMULTI.
-allmulti
Запрещает multicast-адреса.
Введение в Taylor UUCP
Сказать, что конфигурация UUCP является тяжелой, было бы замалчиванием фактов. Это, действительно, запутанная тема, и иногда краткий формат файлов конфигурации не делает вещи проще (хотя формат Talyor читается очень просто по сравнению с более старыми форматами в HDB или Version 2).
Введение в Taylor UUCP
Сказать, что конфигурация UUCP является тяжелой, было бы замалчиванием фактов. Это, действительно, запутанная тема, и иногда краткий формат файлов конфигурации не делает вещи проще (хотя формат Talyor читается очень просто по сравнению с более старыми форматами в HDB или Version 2).
Чтобы дать Вам понять, как взаимодействуют все эти файлы, представим наиболее важное и будем просматривать типовые записи этих файлов. Мы не будем объяснять все подробно; более точные сведения даны в отдельных разделах ниже. Если Вы хотите установить на Вашу машину UUCP, лучше всего начать с типовых файлов и адаптировать их постепенно. Вы можете выбирать из предложенного ниже набора примеров или того, что есть в Вашем дистрибутиве Linux.
Все файлы, описанные в этом разделе хранятся в
/etc/uucp или в его подкаталогах. Некоторые дистрибутивы Linux содержат код UUCP, который поддерживает HDB и Taylor конфигурации, и используют различные подкаталоги для каждого набора файлов конфигурации. Обычно есть файл README в каталоге
/usr/lib/uucp.
Чтобы UUCP работал правильно, эти файлы должны принадлежать пользователю uucp. Некоторые из них содержат пароли и номера телефона, и следовательно, должны иметь права доступа 600. Обратите внимание, что хотя большинство команд UUCP должно иметь бит setuid на имя uucp, Вы должны удостовериться, что программа uuchk такого бита не имеет. Иначе, пользователи будут способны отобразить пароли системы даже при том, что файлы имеют режим доступа 600.
Центральный файл конфигурации UUCP называется
/etc/uucp/config. Он используется, чтобы установить общие параметры. Наиболее важный из них (и теперь единственный), является именем UUCP Вашей системы. Для нашей модельной сети Virtual Brewery использован vstout в качестве шлюза UUCP:
|
# /etc/uucp/config - UUCP main configuration file nodename vstout
Следующий важный файл конфигурации называется sys . Он содержит всю системно-специфическую информацию об участках сети, с которыми Вы связаны. Она включает имя участка и информацию относительно связи, например, номера телефонов при использовании связи по модему. Типичный скрипт для модемной связи с машиной pablo:
|
# /usr/lib/uucp/sys - name UUCP neighbors # system: pablo system pablo time Any phone 555-22112 port serial1 speed 38400 chat ogin: vstout ssword: lorca
Ключевое слово port задает порт, который нужно использовать, time определяет время, в которое система может вызываться. chat описывает сценарии входа в систему: последовательность строк, которыми нужно обменяться, чтобы uucico зарегистрировали на pablo. Мы опишем сценарий входа позже. Команда port не называет конкретный файл устройства, например, /dev/cua1, она указывает на файл с соответсвующими записями. Вы можете назначить любое походящее имя.
Файл port содержит информацию о связи непосредственно. Для модемной связи он описывает специальный файл устройства, который нужно использовать, скорость и тип оборудования, соединенного с портом. Пример ниже описывает /dev/ttyS1 (он же COM2), с которым соединен модем NakWell способный к передаче на скорости до 38400bps. Имя порта должно соответствовать имени, заданному в файле sys.
|
# /etc/uucp/port - UUCP ports # /dev/ttyS1 (COM2) port serial1 type modem device /dev/ttyS1 speed 38400 dialer nakwell
Информация, имеющая отношение к программам набора номера, cохраняется в другом файле, называемом dial. Для каждого типа программы набора номера он содержит последовательность команд, которые требуются, чтобы вызвать удаленную машину по номеру телефона. Все это называется chat script (сценарий дружеской системы). Пример для вышеупомянутого NakWell мог бы выглядеть следующим образом:
|
# /etc/uucp/dial - per-dialer information # NakWell modems dialer nakwell chat "" AT&F OK ATDT\T CONNECT
<
/p>
Строка, начинающаяся с chat, определяет скрипт модема, который является последовательностью команд, посланных и полученных от модема, чтобы инициализировать его и набрать желательный номер. Последовательность \T будет заменена на номер телефона uucico.
Чтобы в общем показать Вам, как uucico работает с этими файлами конфигурации, предположим, что Вы дали команду:
|
$ uucico -s pablo
Первым делом uucico ищет pablo в файле sys. Из строки в файле sys для pablo она видит, что должна использовать порт serial1 для установки соединения. Файл port сообщает uucico, что serial1 является портом модема, и что есть подключенный модем NakWell.
uucico теперь ищет запись dial , описывающую модем NakWell, и найдя первую такую запись, открывает последовательный порт /dev/cua1 и выполняет "дружескую беседу" программы набора номера. То есть, посылает AT&F, ждет в ответ OK и т.д. При столкновении со строкой \T, она заменяет эту строку на номер телефона (555-22112), извлеченный из файла sys.
После того, как соединение будет установлено (модем вернет CONNECT), uucico возвращается к файлу sys и выполняет дружескую беседу входа в систему (login chat). В нашем примере она ждет приглашения login: затем посылает имя пользователя (vstout), ждет приглашения password: и посылает пароль (lorca).
После завершения авторизации удаленная система активизирует собственный uucico. Две копии uucico
проводят фазу рукопожатия (handshake phase), описанную в предыдущем разделе. Я прекрасно понимаю, что термины "фаза рукопожатия" и "дружеская беседа входа в систему" звучат не очень удачно, но эквивалентная русская терминология в этой области отсутствует.
Вы можете соединиться с удаленной системой, но происходит сбой скрипта регистрации
Рассмотрите текст, который Вы получаете с удаленного сайта. Если он искажен, это может быть связано с быстродействием. Иначе, подтвердите, соглашается ли он, действительно, с тем, что ожидает Ваш скрипт. Помните, что скрипт начинается ожидающейся строкой. Если Вы получаете подсказку входа в систему, затем посылаете имя, но не получаете подсказку пароля, вставьте некоторые задержки перед посылкой. Может быть, параметры заданы как слишком быстрые для Вашего модема.
Вы можете соединиться с удаленной системой, но происходит сбой скрипта регистрации
Рассмотрите текст, который Вы получаете с удаленного сайта. Если он искажен, это может быть связано с быстродействием. Иначе, подтвердите, соглашается ли он, действительно, с тем, что ожидает Ваш скрипт. Помните, что скрипт начинается ожидающейся строкой. Если Вы получаете подсказку входа в систему, затем посылаете имя, но не получаете подсказку пароля, вставьте некоторые задержки перед посылкой. Может быть, параметры заданы как слишком быстрые для Вашего модема.
Вы регистрируетесь, но происходит сбой авторизации
Может быть ряд проблем. Посмотрите, какими протоколами пользуется удаленная система (она посылает строку P protlist
в течение авторизации). Обе стороны должны поддерживать по крайней мере один общий протокол, так что проверьте, что они делают.
Вы регистрируетесь, но происходит сбой авторизации
Может быть ряд проблем. Посмотрите, какими протоколами пользуется удаленная система (она посылает строку P protlist
в течение авторизации). Обе стороны должны поддерживать по крайней мере один общий протокол, так что проверьте, что они делают.
Если удаленная система посылает RLCK, имеется просроченный lockfile (файл блокировки) для Вас на удаленной системе. Если Вы еще не соединены с удаленной системой на другой линии, попросите удалить его.
Если удаленная система посылает RBADSEQ, она проверила Ваш логин, но числа опознания не совпали. Если она посылает RLOGIN, Вам не разрешили входить в систему под этим идентификатором.
Выбор IP-адресов
Все IP-интерфейсы требуют назначения им IP-адресов. Поэтому устройство PPP тоже должно иметь IP-адрес. Протокол PPP предоставляет механизм, который позволяет автоматически присваивать IP-адреса PPP-интерфейсам.
Выбор IP-адресов
Все IP-интерфейсы требуют назначения им IP-адресов. Поэтому устройство PPP тоже должно иметь IP-адрес. Протокол PPP предоставляет механизм, который позволяет автоматически присваивать IP-адреса PPP-интерфейсам.
Некоторые PPP-серверы, которые обрабатывают множество клиентов, приписывают адреса динамически: адреса назначены системам только, когда существует обращение и освобождаются после того, как сеанс связи закончен. Это позволяет ограничить число требуемых адресов числом линий dialup. В то время, как ограничение удобно для администраторов PPP dialup-сервера, оно часто куда менее удобно для пользователей. Мы обсуждали путь, которым имена преобразуются в адреса, в главе 6. Когда происходит соединение с таким сервером, вы должны удостовериться, что pppd не запрашивает какой-либо IP-адрес с него, но когда адрес будет выдан, сервер попросит вас, чтобы вы использовали именно его. Это означает, что если кто-то пытается связаться с вашим компьютером, он должен будет знать его текущий адрес, а обеспечить это не так-то просто.
В примере выше, у нас был pppd, связывающейся с c3po и устанавливающий IP-связь. Никакие условия не принимались для того, чтобы выбрать частный адрес IP на любом конце связи. Взамен мы выбрали адрес vlager как локальный адрес IP и позволили c3po обеспечить себя собственным. Иногда полезно иметь контроль над тем, какой адрес используется на одном или другом конце связи.
Чтобы просить о частных адресах, вы вызываете pppd
со следующеми опциями:
|
local_addr:remote_addr
local_addr и remote_addr могут быть определены в dotted quad notation или как имена машин. Это заставит
pppd попытаться использовать первый адрес как собственный адрес IP, а второй как адрес удаленной машины. Если удаленная машина отклоняет любой из них в течение IPCP-переговоров, связь IP не будет установлена.
Если вы звоните на сервер и ожидаете, что он назначит вам IP-адрес, надо гарантировать отсутствие неожиданных инициатив со стороны
pppd. Чтобы сделать это, используйте опцию noipdefault и оставьте поле local_addr пустым. Опция noipdefault избавит от попытки pppd использовать адрес IP, связанный с именем машины как локальный адрес.
Если Вы хотите устанавливать только локальный адрес, но удаленный адрес примете любой, просто не указывайте remote_addr . Чтобы vlager использовал IP-адрес 130.83.4.27 вместо своего, укажите 130.83.4.27: в командной строке. Точно так же, чтобы установить только удаленный адрес, оставьте пустым поле local_addr. По умолчанию pppd использует адрес, связанный с вашим именем машины (hostname).
Выполнение заданий NetWare на
Единственная требуемая опция для nprint имя файла для печати. Если имя файла не задано, nprint примет задание по выводу на печать из stdin. Наиболее важные параметры nprint определяют сервер и очередь. Таблица 15-4
перечисляет наиболее важные параметры.
Взаимодействие nntpd и C-News
Чтобы правильно выполнить протокол ihave/sendme, nntpd должен обратиться к файлу history. Во время компиляции, Вы должны удостовериться, что путь установлен правильно. Вы должны также удостовериться, что C-news и nntpd
договорятся о формате вашего файла history. C-news использует dbm-функции, чтобы обратиться к нему, однако, имеются несовместимые реализаций библиотеки dbm . Если C-news был связан с одной библиотекой dbm , а ваша библиотека libc с другой, они точно передерутся. Значит, Вы должны пересобрать nntpd с правильной библиотекой.
Типичный признак того что nntpd и C-news не соглашаются относительно формата базы данных, это сообщения об ошибках в файле регистрации системы о том, что nntpd не может открыть его правильно, или двойные статьи, полученные через NNTP. Хороший тест: выбрать статью из вашей области spool, сделать telnet к порту nntp и попробовать обратиться к
nntpd как показано в примере ниже. Конечно, вы должны заменить msg@id на ID-сообщение статьи, которую хотите передать nntpd:
|
$ telnet localhost nntp
Trying 127.0.0.1... Connected to localhost Escape characters is '^ ]'. 201 vstout NNTP[auth] server version 1.5.11t (16 November 1991) ready at Sun Feb 6 16:02:32 1194 (no posting)
IHAVE msg@id
435 Got it. QUIT
Этот диалог показывает реакцию nntpd. Сообщение Got it покажет, что эта статья уже имеется. Если вы получаете сообщение 335 Ok, поиск в файле history потерпел неудачу. Завершите диалог нажатием Ctrl-D. Вы можете проверять, что пошло неправильно, проверяя файл регистрации системы:
nntpd регистрирует все виды сообщений в syslog. Несовместимая библиотека dbm обычно проявляется в сообщении о том, что dbminit потерпел неудачу.
Xerox, Novell и немного истории
Novell Corporation создала свой набор протоколов на основе протоколов XNS. Novell слегка расширила IDP и SPP и переименовала их соответственно в IPX (Internet Packet eXchange) и SPX (Sequenced Packet eXchange). Novell добавила новые протоколы, типа NetWare Core Protocol (NCP), который обеспечил свойства разделения файлов и принтеров по сети IPX, и Service Advertisement Protocol (SAP), который давал возможность компьютерам в Novell-сети знать, который компьютер какие услуги обеспечивает.
Таблица 15-1 показывает связь между наборами XNS, Novell и TCP/IP в терминах функций. Связи только приблизительные, но они должны помочь вам понять, что там происходит, когда мы займемся этими протоколами позже.
Запуск Exim Для запуска Exim
Любой режим работы Вы выбираете для каждого компьютера индивидуально. Вы должны удостовериться, что имеете следующую запись в файле /etc/services:
|
smtp 25/tcp # Simple Mail Transfer Protocol
Это определяет номер порта TCP для протокола SMTP. Он определен как 25 в "Assigned Numbers" RFC (RFC-1700).
При запуске в режиме демона Exim переходит в фоновый режим и ждет соединений через SMTP-порт. Когда подключение происходит, он разветвляется, и порожденный процесс проводит сеанс связи SMTP с таким же процессом на удаленной машине. Exim daemon обычно вызывается из rc скрипта при загрузке командой:
|
/usr/sbin/exim -bd -q15m
Параметр –bd включает режим daemon, а –q15m заставляет обрабатывать любые сообщения, накопленные в очереди сообщений, каждые 15 минут.
Если нужно использовать inetd, впишите в файл /etc/inetd.conf такую строку:
|
smtp stream tcp nowait root /usr/sbin/exim in.exim -bs
Помните, что после изменений этого файла нужно сообщить inetd, чтобы он перечитал
inetd.conf. Для этого после внесения изменений пошлите ему сигнал HUP.
Режимы daemon и inetd взаимоисключающие. Если Вы запускаете Exim в режиме daemon, удостоверьтесь, что в
inetd.conf закомментированы все строки для протокола smtp. Аналогично, при запуске Exim через inetd проверьте, чтобы в скриптах rc не было команды на загрузку Exim как daemon.
Вы можете проверять, что Exim правильно установлен для получения входящих SMTP-сообщений, соединяясь программой telnet с SMTP-портом на Вашей машине. При нормальной работе системы Вы увидите примерно следующее:
|
$ telnet localhost smtp
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 richard.vbrew.com ESMTP Exim 3.13 #1 Sun, 30 Jan 2000 16:23:55 +0600 quit
221 richard.brew.com closing connection Connection closed by foreign host.
Если этот тест не выдаст приглашение SMTP (строка, начинающаяся с кода 220), проверьте правильно ли запущен Exim. Если все в порядке, смотрите протоколы Exim (описаны ниже) в случае, если имеется ошибка в файле конфигурации Exim.
Запуск named Пакет named обеспечивает
Этот раздел требует понимания принципов работы DNS. Если такого понимания нет, обратитесь к разделу "Как работает DNS".
Пакет named обычно запускается при начальной загрузке системы. Реализации BIND до Version 8 берут информацию из файла конфигурации /etc/named.boot и различных файлов, которые отображают имена домена к адресам. Последние называются зональными файлами (zone files). Версии BIND после Version 8 используют /etc/named.conf вместо /etc/named.boot.
Для запуска named скомандуйте:
|
# /usr/sbin/named
Пакет named запустится и прочитает named.boot и заданные в нем зональные файлы. Он пишет свой process ID в файл /var/run/named.pid в ASCII, загружает все зональные файлы с первичного сервера и начинает слушать порт 53 в ожидании запросов DNS.
Запуск NFS Прежде, чем Вы сможете
Если nfs отсутствует в этом списке, Вы должны скомпилировать собственное ядро с включенным NFS. Конфигурирование сетевых опций ядра объяснено в разделе "Настройка ядра" главы 3.
Защита от перехватчиков почты
Одна из самых больших проблем UUCP в том, что вызывающая система может назвать не свое имя; она объявляет имя вызываемой системе после фактического входа, но сервер не может проверить этого. Таким образом, нападающий может войти под своим именем UUCP, симулировать, что был кем-то еще, и прочитать чужую почту. Это особенно опасно, если Вы предлагаете вход в систему через анонимный UUCP, чей пароль общеизвестен.
Защита от перехватчиков почты
Одна из самых больших проблем UUCP в том, что вызывающая система может назвать не свое имя; она объявляет имя вызываемой системе после фактического входа, но сервер не может проверить этого. Таким образом, нападающий может войти под своим именем UUCP, симулировать, что был кем-то еще, и прочитать чужую почту. Это особенно опасно, если Вы предлагаете вход в систему через анонимный UUCP, чей пароль общеизвестен.
Вы должны принять меры против самозванцев! Для этого необходимо потребовать, чтобы каждая система использовала имя входа в Вашу систему, заданное called-login в sys. Например:
|
system pablo ... usual options ... called-login Upablo
В результате этого всякий раз, когда система говорит, что она pablo, uucico
проверит, регистрировалась ли она как Upablo. Если нет, вызов будет отвергнут, а соединение разорвано. Вы должны сделать привычкой добавлять команду called-login к каждой записи системы, которую Вы добавляете к Вашему файлу sys . Важно, что Вы делаете это для всех систем, независимо от того, будут ли они когда-либо вызывать Вас или нет. Для тех машин, которые никогда не вызывают Вас, Вы, возможно, должны установить called-login на некоторое полностью поддельное имя пользователя, типа neverlogsin , дабы никто точно не мог зайти.
.
Знакомство с NIS NIS хранит информацию
Карты обычно генерируются из текстовых файлов типа /etc/hosts или /etc/passwd . Для некоторых файлов будет создано несколько карт, по одной для каждого типа ключа поиска. Например, Вы можете искать в файле hosts имя машины или ее IP-адрес. Соответственно, из этого файла будут получены две NIS-карты hosts.byname и hosts.byaddr . Таблица 13-1 перечисляет наиболее распространенные карты и файлы, из которых они сгенерированы.