Книги, научные публикации Pages:     | 1 | 2 | 3 | 4 | 5 |   ...   | 14 | -- [ Страница 1 ] --

А TV AODISON WESLEY СЕТЕВЫЕ СРЕДСТВА РОДЕРИК В. Смит Сетевые средства Linux Advanced Linux Networking W. Smith A TT ADDISON-WESLEY Boston Х San Francisco Х New York Х Toronto Х Montreal

London Х Munich Х Paris Х Madrid Х Capetown Х Sydney Tokyo Х Singapore Х Mexico City Сетевые Linux В. Смит Москва Х Санкт-Петербург Х Киев 2003 32.973.26-018.2.75 С50 Издательский дом "Вильяме" Зав. редакцией С.

Перевод с английского и редакция В. В.

По общим вопросам обращайтесь в Издательский дом "Вильяме" по адресу:

info@williamspublishing.com, Смит, Родерик, В.

С50 Сетевые средства Linux. : Пер. с англ. Ч М. : Издательский дом "Вильяме", 2003. Ч 672 с. : ил. Ч Парал. тит. англ.

ISBN 5-8459-0426-9 В этой книге описаны принципы действия и область применения многих серверов, вы полняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забы ты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В дан ной книге нашли отражения также средства удаленного администрирования Ч инструменты Linuxconf, Webmin и SWAT.

Данная несомненно окажется полезной как начинающим, так и опытным системным администраторам.

ББК 32.973.26-018.2. Все названия программных продуктов являются зарегистрированными торговыми марками соответствую щих фирм.

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

Authorized translation from the English language edition published by Pearson Education, Inc., Copyright й All rights reserved. No part of this book may be reproduced, stored in retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without either the prior written permission о the Publisher.

Russian language edition published by Williams Publishing House according to the Agreement with Enter prises International, Copyright й ISBN 5-8459-0426-9 (рус.) й Издательский дом "Вильяме", ISBN 0-201-77423-2 (англ.) й Pearson Education, Inc., Оглавление Часть I. Низкоуровневая конфигурация системы Глава Настройка сетевых средств ядра Глава 2. Настройка сетевых средств ТСРЛР Глава 3. Альтернативные стеки протоколов Глава 4. Запуск серверов Часть П. Серверы в локальных сетях Глава 5. Распределение IP-адресов с помощью DHCP Глава 6. Аутентификация средствами Глава 7. Совместное использование файлов и принтеров с помощью Samba Глава 8. Совместное использование файлов с помощью NFS Глава 9. Совместное использование принтеров Глава Служба времени Глава Получение почты: протоколы POP и IMAP Глава Поддержка сервера новостей Глава 13. Удаленная регистрация на сервере Глава 14. Организация удаленного доступа с помощью X Window и Глава 15. Серверы шрифтов Глава 16. Удаленное администрирование системы Глава 17. Резервное копирование Часть III. Серверы Internet Глава Администрирование домена Глава 19. Передача почты: протокол SMTP Глава 20. Поддержка Web-сервера Глава Часть IV. Средства защиты и маршрутизации Глава 22. Общие вопросы защиты системы Глава 23. Создание поддерева chroot Глава 24. Расширенные средства маршрутизации Глава 25. Настройка средств обработки пакетов с помощью iptables Глава 26. Организация виртуальной частной сети Предметный указатель Содержание Отзывы о книге Сетевые средства Linux Введение На кого рассчитана эта книга Версии Linux Структура книги Соглашения, принятые в книге Контактная информация Благодарности Часть I. Низкоуровневая конфигурация системы Глава 1. Настройка сетевых средств ядра Конфигурация ядра Поддержка сетевых протоколов Опции для работы с пакетами и гнездами Опции сетевой фильтрации Опции маршрутизации TCP/IP Опции поддержки IPv6 Опции QoS Поддержка протоколов высокого уровня Ускорение HTTP-обмена Поддержка альтернативных сетевых протоколов Опции для работы с аппаратными средствами Устройства Ethernet Альтернативные средства для создания локальных сетей Устройства с широкой полосой пропускания и устройства, обеспечивающие связь на большой дальности Беспроводные устройства Устройства PC Card Устройства для связи по коммутируемым линиям Компиляция и установка ядра Драйверы, встроенные в ядро, и драйверы, реализуемые в виде модулей Компиляция ядра Проблемы, возникающие при компиляции ядра Инсталляция нового ядра и его использование Резюме Глава 2. Настройка сетевых средств TCP/IP Загрузка сетевых драйверов Использование клиента DHCP Использование статических IP-адресов Настройка сетевых интерфейсов Заполнение таблицы маршрутизации Настройка DNS Определение имени узла Сохранение внесенных изменений Использование Использование программы с графическим интерфейсом для обмена по коммутируемой линии Редактирование конфигурационных сценариев Установление соединения по запросу Резюме Глава 3. Альтернативные стеки протоколов Общие сведения о стеках протоколов Модель сетевого взаимодействия OSI Инкапсуляция и извлечение данных Роль стека протоколов TCP/IP в развитии сетей AppleTalk Особенности AppleTalk Возможности Программы поддержки IPX/SPX в системе Linux NetBEUI Возможности NetBEUI Средства поддержки NetBEUI для Linux Использование программ поддержки NetBEUI Резюме Глава 4. Запуск серверов Использование сценариев запуска SysV Расположение сценариев запуска и соглашения по их именованию Управление сценариями запуска вручную Использование утилит управления сценариями запуска Управление уровнями выполнения Использование inetd Формат файла /etc/inetd.conf Использование TCP Wrappers Использование xinetd Формат файла /etc/xinetd.conf Средства управления Использование локальных сценариев запуска 8 Содержание Использование инструментов с графическим интерфейсом Использование Linuxconf Использование YaST и YaST Использование ksysv Выбор способа запуска сервера Резюме Часть II. Серверы в локальных сетях Глава 5. Распределение IP-адресов с помощью DHCP Использование сервера DHCP Настройка ядра и сетевых интерфейсов Конфигурационные файлы DHCP Динамическое распределение IP-адресов Установка глобальных параметров Определение диапазона адресов Выделение фиксированных адресов Определение клиента Описание узлов с помощью Параметры для отдельных клиентов Интеграция с другими серверами Включение информации NetBIOS Взаимодействие с DNS-сервером Резюме Глава 6. Аутентификация средствами Kerberos Использование системы Kerberos Принцип действия Kerberos Взаимодействие компонентов Kerberos Требования к серверу Kerberos Версии и разновидности Kerberos Настройка сервера Kerberos Редактирование конфигурационных файлов сервера Определение области Создание основного ключа Администрирование области Запуск Настройка ведомого Настройка сервера приложений Kerberos Выбор конфигурации сервера приложения Запуск серверов Настройка клиентов Kerberos Обеспечение доступа к серверам Kerberos Применение Kerberos для регистрации пользователей Резюме Содержание Глава 7. Совместное использование файлов и принтеров с помощью Samba Использование сервера Samba Настройка Samba Конфигурационный файл Samba Идентификация сервера Samba Защита системы Samba как сервер имен NetBIOS Samba как основной броузер Samba как контроллер домена Организация файлового сервера с помощью Samba Описание разделяемых объектов Поддержка имен файлов Windows Владелец файла и права доступа Ограничение доступа к разделяемым объектам Организация сервера печати с помощью Samba Создание разделяемого объекта принтера Совместное использование PostScript-принтеров Совместное использование принтеров, не поддерживающих PostScript Сценарии Samba Сценарии и postexec Использование псевдопринтеров Пример использования средств Linux для записи компакт-дисков Пример создания PDF-файлов Резюме Глава 8. Совместное использование файлов с помощью NFS Использование серверов NFS Серверы NFS для системы Linux Пользовательский режим и режим ядра NFSv2 и NFSv3 Отображение портов Разделение файлов с помощью NFS Определение экспортируемых каталогов Средства контроля доступа Монтирование экспортируемых каталогов Повышение производительности системы Отображение пользовательских имен Согласование идентификаторов пользователей на клиентском компьютере и на сервере Средства синхронизации идентификаторов пользователей, выполняемые на стороне сервера Средства синхронизации идентификаторов пользователей, выполняемые на стороне клиента Резюме Глава 9. Совместное использование принтеров Использование сервера LPD Содержание Серверы печати для Linux Настройка сервера BSD LPD Редактирование файла Указание сервера на клиенте BSD LPD Настройка сервера Редактирование файла Указание на стороне клиента Настройка сервера CUPS Редактирование файла /etc/cups/cupsd.conf Получение заданий от клиентов BSD LPD и LPRng Определение сервера CUPS на стороне клиента Резюме Глава 10. Служба времени Использование временного сервера Настройка сервера NTP Функционирование временных серверов Временные серверы для Linux Структура конфигурационного файла ntp.conf Контроль операций NTP Использование клиентских средств NTP Использование Samba для предоставления данных о времени Опция временного сервера в конфигурационном файле Samba Настройка Windows-клиента для автоматической коррекции системного времени Резюме Глава 11. Получение почты: протоколы POP и IMAP Использование серверов доставки почты Принцип действия протоколов POP и IMAP Функции протоколов получения почты Хранение писем на стороне клиента и на стороне сервера Пример сеанса взаимодействия по протоколу POP Пример сеанса взаимодействия по протоколу IMAP Выбор протокола Обеспечение работы по протоколу POP Серверы POP для Linux Инсталляция и настройка сервера POP Обеспечение работы по протоколу IMAP Серверы IMAP для Linux Инсталляция и настройка сервера IMAP Использование Fetchmail Участие Fetchmail в процессе доставки почты Использование fetchmailconf Редактирование.fetchmailrc Резюме Содержание Глава 12. Поддержка сервера новостей Использование сервера новостей Принцип работы протокола Сервер INN Получение материалов групп Настройка INN Обеспечение выполнения сервера новостей Использование Leafnode Возможности Leafnode Настройка Leafnode Фильтрация сообщений Резюме Глава 13. Удаленная регистрация на сервере Использование сервера удаленной регистрации Настройка rlogind Запуск rlogind Средства защиты rlogind Управление доступом к rlogind Настройка Telnet Опции, используемые при запуске сервера Telnet Редактирование начального сообщения Telnet Средства защиты Telnet SSH Программное обеспечение для поддержки SSH Возможности SSH Опции, используемые при запуске сервера SSH Редактирование файла Аутентификация при SSH-взаимодействии Резюме Глава 14. Организация удаленного доступа с помощью X Window и VNC Использование серверов удаленного доступа, поддерживающих графический интерфейс Обеспечение удаленного доступа средствами X Window Взаимодействие клиента и сервера в системе X Window Настройка Х-сервера для взаимодействия с Настройка для работы с Х-сервером Туннелирование Х-соединений через SSH Основные действия по организации Использование сервера ХМСР Принцип действия XDMCP Настройка сервера регистрации для установления соединения Настройка клиента удаленной регистрации Обеспечение удаленного доступа с помощью сервера Взаимодействие клиента и сервера Инсталляция сервера 12 Содержание Запуск сервера Использование клиента для взаимодействия с сервером Настройка сервера Преимущества и недостатки различных технологий удаленной регистрации Резюме Глава 15. Серверы шрифтов Использование серверов шрифтов Форматы файлов шрифтов Форматы растровых шрифтов Форматы контурных шрифтов Обеспечение работы традиционного сервера шрифтов Программы, реализующие сервер шрифтов в Linux Конфигурация серверов шрифтов, установленная по умолчанию Настройка сервера шрифтов для работы в сети Обеспечение доступа к шрифтам Сервер шрифтов с расширенными возможностями Резюме Глава 16. Удаленное администрирование системы Использование средств удаленного администрирования Использование средств удаленного администрирования для настройки различных версий Linux Выполнение Linuxconf на удаленном компьютере Настройка Linuxconf для выполнения на удаленном компьютере Обращение к Linuxconf с помощью Web-броузера Удаленное администрирование с помощью Webmin Настройка Webmin Использование Webmin Настройка сервера Samba с помощью SWAT Запуск SWAT Использование SWAT Вопросы безопасности при удаленном администрировании Резюме Глава 17. Резервное копирование Использование серверов резервного копирования Способы резервного копирования Резервное копирование, инициируемое клиентом Резервное копирование, инициируемое сервером Использование tar Возможности tar Тестирование средств резервного копирования на локальном компьютере Резервное копирование, инициируемое клиентом Резервное копирование, инициируемое сервером Использование SMB/CIFS Создание резервной копии клиента Windows с помощью сервера Linux Содержание Разделяемые объекты резервного копирования Использование AMANDA Выполнение AMANDA Настройка клиентских машин для использования AMANDA Настройка сервера резервного копирования AMANDA Формирование конфигурационного файла AMANDA Создание резервных копий с помощью AMANDA Восстановление данных Резюме Часть III. Серверы Internet Глава 18. Администрирование домена Использование сервера DNS Сервер DNS, доступный из внешней сети Работа локального сервера DNS Получение доменного имени Серверы DNS для Linux Базовая конфигурация DNS Главный конфигурационный файл BIND Расположение других серверов имен Настройка сервера для перенаправления запросов Описание зоны Настройка ведомого сервера Управление доменом Пример конфигурационного файла зоны Формирование описания зоны Определение адресов и имен Конфигурация зоны для обратного преобразования Настройка сервера, предназначенного только для кэширования Взаимодействие с сервером DHCP Запуск и тестирование сервера Резюме Глава 19. Передача почты: протокол SMTP Использование сервера SMTP Программы, реализующие сервер SMTP в системе Linux Настройка домена для использования почтового сервера Передача данных с помощью протокола SMTP Специальные функции сервера SMTP Маскировка адреса Обработка локальных сообщений Ретрансляция писем Настройка сервера для борьбы со спамом Настройка sendmail Конфигурационные файлы sendmail 14 Содержание Маскировка адреса sendmail Настройка sendmail для получения почты Работа в режиме ретранслятора Конфигурация sendmail для противодействия попыткам передачи спама Настройка Конфигурационные файлы Exim Маскировка адресов Настройка Exim для приема почты Конфигурация Exim для ретрансляции писем Настройка Exim для противодействия распространению спама Настройка Postfix Конфигурационный файл Postfix Маскировка адресов Настройка Postfix для получения почты Конфигурация Postfix для ретрансляции писем Настройка Postfix для противодействия распространению спама Использование фильтров Procmail Роль Procmail в процессе доставки почты Создание рецепта Пример использования рецептов Использование существующих наборов фильтров Запуск Procmail Резюме Глава 20. Поддержка Web-сервера Использование Web-сервера Программы, реализующие Web-сервер в системе Linux Настройка основных функций Apache Конфигурационные файлы Apache Способы запуска сервера Apache Опции общего назначения Описание каталогов Загрузка модулей Apache Настройка Поддержка форм и сценариев Статические данные, формы и Поддержка Создание CGI-сценариев Повышение уровня защиты при использовании CGI-сценариев Поддержка защищенных Web-узлов Задачи, решаемые с помощью SSL Настройка средств поддержки SSL Установка компонентов Apache, предназначенных для поддержки SSL Организация виртуальных доменов Использование виртуальных доменов Конфигурация виртуальных доменов Создание содержимого Web-узла Форматы данных, используемых при создании Web-узла Инструментальные средства создания Web-страниц Особенности создания Web-страниц Анализ файлов протоколов Формат файла протокола Apache Использование Analog Использование Webalizer Резюме Глава 21. Использование Программы, реализующие FTP-сервер в системе Linux Настройка основных функций Запуск FTP-сервера Настройка Настройка ProFTPd Установка анонимного FTP-сервера Особенности работы анонимного FTP-сервера Обеспечение безопасности при работе анонимного FTP-сервера Опции, используемые для настройки анонимного FTP-сервера Резюме Часть IV. Средства защиты и маршрутизации Глава 22. Общие вопросы защиты системы Отключение ненужных серверов Выявление ненужных серверов Отключение серверов Использование учетных записей и паролей Политика использования учетных записей Контроль над учетными записями Выбор паролей Своевременное обновление системы Влияние ошибок на выполнение программ Источники информации о дополнениях к системе Автоматическое обновление программ Выявление случаев незаконного доступа к системе Инструменты, выявляющие попытки вторжения Способы, позволяющие выявить вторжение в систему Действия при обнаружении факта взлома системы Источники информации о защите систем Web-узлы, посвященные вопросам защиты Списки рассылки и группы новостей, посвященные вопросам защиты Резюме 16 Содержание Глава 23. Создание поддерева chroot Что такое поддерево chroot Формирование среды chroot Создание поддерева Копирование файлов сервера Копирование системных файлов Настройка сервера для работы в рамках поддерева chroot Запуск сервера в рамках поддерева chroot Управление доступом к каталогам поддерева chroot Запуск сервера BIND в рамках поддерева chroot Поддержка среды chroot Резюме Глава 24. Расширенные средства маршрутизации Использование расширенных средств маршрутизации Расширенные опции ядра Политика маршрутизации Тип сервиса Передача пакетов по различным маршрутам Протоколирование работы маршрутизатора Использование больших таблиц маршрутизации Поддержка группового вещания Качество сервиса Использование iproute2 Использование ip Использование tc Использование протоколов маршрутизации Принцип действия протоколов маршрутизации Использование routed. Использование GateD Использование Zebra Резюме Глава 25. Настройка средств обработки пакетов с помощью iptables Что такое iptables Конфигурация ядра для работы с iptables Проверка текущей конфигурации iptables Создание брандмауэра средствами iptables Что такое брандмауэр Формирование политики по умолчанию Определение правил Создание с помощью iptables Что такое NAT Опции iptables для осуществления Перенаправление портов Задачи, решаемые с помощью перенаправления портов Опции iptables для перенаправления портов Содержание Протоколирование хода обработки пакетов Резюме Глава 26. Организация виртуальной частной сети Использование VPN Инструменты, предназначенные для организации VPN Настройка РРТР в системе Linux Инсталляция РоРТоР Установка конфигурации сервера РоРТоР Обеспечение кодирования данных Настройка Настройка сервера Инсталляция Редактирование конфигурационных файлов Установление соединения Вопросы защиты при использовании VPN Резюме Предметный указатель Отзывы о книге Сетевые средства Linux Появилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.

Александр Стенцин, Help Net Security, Если вы стремитесь в полной мере использовать сетевые возможности Linux Ч эта книга для вас. Я настоятельно рекомендую прочитать ее.

Майкл Дж. Джордан, Linux Online Выхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими зна ниями с читателями.

Роджер West, DiverseBooks. com Посвящается жертвам сентября 2001 года.

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

Введение Компьютерные сети изменили нашу жизнь. Они были почти незаметны в 1970-х и да же в 1980-х. Однако в начале 1990-х годов что-то произошло. Возможно, это было появ ление World Wide Web и графических Web-броузеров, благодаря которым Internet пришла во многие семьи. Возможно, число сетевых соединений превысило какой-то критический предел. Может быть, этот предел превысило количество сетевых программ. Как бы то ни было, сейчас о сетях знают все. А самое главное, что каждый знает о существовании Internet.

Internet объединяет миллионы компьютеров, на многих из которых выполняются сер веры Ч программы, принимающие запросы от клиентов и обрабатывающие их. Благодаря тому что протоколы, на которых базируется Internet, допускают межплатформенное вза имодействие, в обмене данными могут участвовать клиенты и серверы, выполняющиеся на различных компьютерах и в разных операционных средах. В последние годы одной из самых популярных операционных систем стала Linux. Установленная на недорогом компьютере х86, система Linux обеспечивает эффективную работу серверов, поддержи вающих узлы небольшого и среднего размеров. С увеличением производительности ком пьютеров появляется возможность выполнения в среде Linux серверов, обрабатывающих большие объемы данных. В результате от системного администратора часто требуется умение настраивать систему Linux и серверы, выполняющиеся в ее среде.

На каких же серверах следует остановить свой выбор? Существуют сотни, если не тысячи, серверных программ. В большинстве книг, посвященных системе Linux, основ ное внимание уделяется нескольким популярным серверам: HTTP-серверу (обычно это Apache), серверам удаленной регистрации, таким как Telnet и SSH, файловым серве рам, примерами которых являются NFS и Samba, и некоторым другим типам серверов.

В данной книге рассматриваются самые различные серверы. Разнообразие рассматрива емых вопросов не дает возможности подробно изучить работу и особенности настройки каждого из серверов, но все же приведенной информации достаточно, чтобы обеспе чить выполнение соответствующих программ. Помимо наиболее популярных серверов, в настоящей книге также рассматриваются средства, которым обычно уделяется мало внимания, но которые, тем не менее, чрезвычайно важны для нормального функциони рования сети. Так, например, здесь есть главы, посвященные DHCP-серверу, временному серверу и системе Kerberos. В данной книге не излагаются основы функционирования се тей. Считается, что читатель уже имеет представление о сетевых средствах и собирается повысить свою квалификацию.

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

На кого рассчитана эта книга Данная книга содержит расширенные сведения о сетевых средствах Linux и ориенти рована на специалистов, которые уже работали с сетями и системой Linux. Первые главы содержат сведения о настройке низкоуровневых сетевых средств Linux. Чтобы материал этих глав был понятен, надо иметь общее представление о Linux, или, по крайней мере, UNIX, и знать терминологию, применяющуюся при описании сетевых средств. Если же вы незнакомы с системой Linux, вам имеет смысл прочитать вводные материалы, на пример, книгу Марселя Гагне (Marcel Linux System Administration: A User Guide 2002) или нашу с Вики (Vicki книгу Linux System Administration (Sybex, 2001).

Если вы хотите больше узнать о таких серверах, как Apache и Samba, но не собира етесь покупать книгу, полностью посвященную одному продукту, либо если вы хотите получить сведения о небольших, но очень важных серверах, таких как xntpd и s, эта книга Ч для вас. В ней вы также найдете многочисленные практические советы, напри мер, о том, как запустить сервер и завершить работу с ним, как создать резервную копию информации в сети, как ограничить сферу действий сервера chroot, как построить брандмауэр, и т. д. Эти сведения позволят вам по-новому взглянуть на процесс администрирования вашей сети и, возможно, повысить производительность и надежность ее работы.

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

Версии Linux Одна из причин возникновения проблем при администрировании Linux состоит в том, что Linux нельзя рассматривать как единую операционную систему;

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

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

Во многих книгах игнорируются различия между разными версиями Linux. Основное внимание в них уделяется одному дистрибутивному пакету, а остальные упоминаются лишь время от времени. При написании этой книги я ставил перед собой цель более или менее подробно описать все популярные версии. В частности, здесь рассматриваются особенности Caldera OpenLinux 3.1, Debian 2.2, Mandrake 8.1, Red Hat 7.2, Slackware 7.0, SuSE 7.3 и TurboLinux 7.0. У меня возможности детально рас смотреть каждую систему, я старался привлечь внимание читателя к главным различиям между ними. Так, например, в книге вы найдете сведения о том, какие средства использу ются в каждой версии Linux для запуска серверов, какие программы обеспечивают FTP взаимодействие, и т. д. В некоторых главах рассматриваются различные программы, ре ализующие конкретный тип сервера. Сделано это для того, чтобы вы могли составить представление о различиях в конфигурации, устанавливаемой по умолчанию в разных дистрибутивных пакетах.

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

Часть I. Эта часть короче других;

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

Часть II. В этой части рассматриваются серверы, к которым, вероятнее всего, бу дут обращаться лишь компьютеры вашей локальной сети. В ней обсуждаются сервер DHCP, система Kerberos, серверы Samba и NFS, организация печати с помощью LPD, временные серверы, почтовые серверы POP и IMAP, серверы новостей, серверы удален ной регистрации, система X Window и сервер сервер шрифтов, сервер удаленного администрирования и средства резервного копирования.

Часть III. Эта часть посвящена рассмотрению серверов, используемых для работы в Internet. В ней представлены сведения о серверах DNS, почтовых серверах, поддержи вающих протокол SMTP, Web- и FTP-серверах.

Часть IV. В этой части обсуждаются вопросы сетевой безопасности. Здесь рассмат риваются общие вопросы защиты, средства для создания поддерева chroot, настройка специальных функций маршрутизатора, создание брандмауэров с помощью iptables, средства NAT и настройка VPN.

принятые в книге Чтобы упростить восприятие излагаемого материала, в книге приняты следующие соглашения.

Основной текст отображается обычным пропорциональным шрифтом.

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

Моноширинным выделены имена файлов и узлов сети, фрагменты про граммного кода, содержимое файлов, команды, введенные с клавиа туры, и текст, выводимый на экран при выполнении программы.

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

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

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

Это может быть, например, информация об особенностях работы ранних версий программ.

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

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

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

При обсуждении вопросов сетевого взаимодействия часто бывает необходимо ука зать IP-адреса компьютеров. В большинстве случаев я использую адреса, выделенные для внутренних сетей (192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255 и 10.0.0.0 10.255.255.255). Я поступаю так для того, чтобы читатель, неудачно повторивший пример из книги, не нанести вред реальному компьютеру, подключенному к Internet.

Контактная информация Если во время чтения книги у вас возникнут вопросы, вы можете обратиться ко мне по адресу Я также поддерживаю Web-страницу, посвя щенную данной книге, которая находится по адресу Благодарности Я хочу выразить благодарность редактору Кэрен (Karen за кропот ливую работу, выполненную при подготовке данной книги к печати. В этом ей помогала координатор проекта Эмили Фрей (Emily Frey), которая сделала ряд ценных замечаний относительно текста книги. Ни одна техническая книга не может увидеть свет без по мощи консультантов, которые помогают убедиться, что при изложении материала автор не погрешил против истины. Консультантами при подготовке этой книги к печати были Белоун Эми Фонг (Amy Fong), Говард Ли (Howard Lee Гарольд Хоук (Harold Hauck), Эрик X. Херрин (Eric H. II), Дэвид Кинг (David King), Роб Колстэд (Rob Мэтью Миллер (Matthew Miller), Айэн Редферн (Ian и Элекси Зинин Zinin). После их работы над текстом в книге не могло остаться ни одной ошибки, если же такая будет обнаружена, то она, несомненно, была допущена лично мною. Я хочу также поблагодарить Дэвида Кинга (David King) за участие в многочисленных и плодотворных дискуссиях о сетевых средствах Linux. И, на конец, я выражаю благодарность моему агенту Нейлу Селкинду (Neil Salkind) из Studio В и Майклу Слоутеру (Michael Slaughter) из стараниями которых эта книга попала в руки читателей.

ЧАСТЬ I Низкоуровневая конфигурация системы Глава Настройка сетевых средств ядра "Все дороги ведут в Рим" Ч гласит пословица. Нечто подобное можно сказать и о сетевых средствах Linux;

в этом случае в роли Рима выступает ядро операционной систе мы. Рано или поздно весь сетевой трафик будет обработан ядром. Различные компьютеры и разные сети отличаются от друга, поэтому для ядра Linux предусмотрен ряд опций, изменяя значения которых вы можете оптимизировать систему с учетом задач, которые ей придется выполнять. Установку некоторых опций можно производить в процессе загрузки системы, передавая ядру необходимые параметры, либо впоследствии, после окончания загрузки. Подобные опции будут рассмотрены в последующих главах. Существуют также характеристики, для изменения которых надо перекомпилировать ядро системы.

В данной главе описаны опции, которые задают конфигурацию ядра. Сначала здесь рассматривается процедура настройки ядра. Затем обсуждаются опции, которые опреде ляют свойства TCP/IP и других сетевых протоколов, а также сетевых фильтров. Далее речь пойдет о драйверах Linux, предназначенных для поддержки различных сетевых устройств. В конце главы кратко описывается процесс компиляции ядра системы.

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

Конфигурация ядра Для того чтобы установить опции, определяющие процесс компиляции ядра, необхо димо иметь в наличии исходный код ядра. Исходный код входит в состав всех дистрибу тивных пакетов, но при установке системы можно либо разрешить, либо запретить копи рование исходного кода на жесткий диск компьютера. Следует заметить, что в некоторых случаях исходный код, поставляемый в составе дистрибутивного пакета, может быть из Глава 1. Настройка сетевых средств ядра менен по сравнению со стандартным кодом ядра (так, например, в состав кода могут быть включены специальные драйверы). Целесообразно вначале инсталлировать стандартное ядро, а затем, по мере необходимости, установить дополнительные модули (не исключено, что для выполнения ваших задач никакие дополнения не потребуются). Список основ ных узлов, содержащих архивы Linux, находится по адресу org.

В частности, там вы найдете ссылку на и адреса других уз лов, содержащих последние варианты исходного кода ядра Linux. (Конечно, вы можете работать с исходным кодом ядра, который входит в состав дистрибутивного пакета, но, как было сказано выше, в нем могут быть установлены дополнительные модули. Если в процессе работы возникнут проблемы, то устранить их будет легче, если у вас инстал лировано стандартное ядро.) Номер версии ядра системы состоит из трех чисел, разделенных точками. Если второе число четное (например, то ядро называется стабильным, или ра Нечетное второе число в номере версии (например, 2.5.2) указывает на то, что ядро находится в процессе разработки. Стабильное ядро обеспечивает более высокую надежность. Используя ядро, находящееся в процессе разработки, вы получаете возможность ознакомиться с новыми техническими решениями. Ча ще всего в ядре с нечетным вторым числом номера версии используются новые драйверы, реализованы новые варианты интерфейса или применяются другие подобные новшества. Устанавливая систему для практического использования, желательно использовать ядро с четным вторым числом номера версии. Исклю чением является ситуация, когда необходимый вам драйвер присутствует только в версии с нечетным вторым числом. В этом случае можно также использо вать обратный перенос (back-port) драйвера в одну из предыдущих стабильных версий.

Обычно исходный код ядра содержится в каталоге либо в одном из подкаталогов /usr/src (при этом в имени каталога присутствует номер версии ядра, например В последнем случае желательно создать ссылку /usr/src/linux, указывающую на каталог с исходным кодом ядра. Если вы поступите так, то обеспечите нормальную работу программ, которые предполагают, что исходный код ядра содержится в каталоге /usr/src/linux. Таким образом, удобно работать с несколькими версиями исходного кода ядра, а если надо перейти от одной версии к другой, достаточно лишь изменить символьную ссылку.

исходный код ядра в каталог /usr/src/linux, надо сделать это каталог рабочим в используемой вами оболочке. После этого можно задать одну из опи санных ниже команд конфигурирования ядра.

Х make ig. Данное средство конфигурирования является базовым. При этом у вас поочередно будут запрашиваться значения опций ядра. Отвечать на вопросы утомительно и при этом легко допустить ошибку. В случае ошибки придется начать всю процедуру сначала. Данная команда в настоящее время используется крайне редко.

Х make menuconfig. Это средство конфигурирования предоставляет меню, поз воляющее просматривать опции и задавать новые значения. Меню отображается в алфавитно-цифровом режиме. В этом случае изменить придется только те оп 28 Часть I. Низкоуровневая конфигурация системы Loadable module options [ Processor type and Packet socket Help General setup Help У | v { socket:

Memory De Help % emulation port support * У j filtering Plug and Play J * n | Network J Block devices Socket J support (F domain sockets Networking options v и networking Telephony Help I tteWter routing Help IP:

v Х v Mam Menu, | Рис. 1.1. Опции ядра Linux объединяются в категории и подкатегории, для каждой из которых предусмотрено отдельное меню ции, которых не устраивают вас. При работе в текстовом режиме данное средство применяется чаще других.

Х make ig. Данный способ установки конфигурации аналогичен make за исключением что меню отображается средствами графи ческого интерфейса. В этом случае выбор опций и установку их значений можно выполнять с помощью мыши. Это средство установки конфигурации применяется при работе в среде X Window (X Window иногда называют X).

Все три способа позволяют работать с одними и теми же опциями. Опции объединены в несколько категорий;

некоторые из категорий содержат подкатегории. Если вы исполь зуете make menuconf ig или make xconf ig, то для каждой категории отображается отдельное меню (пример работы с окном, отображаемым по команде make xconf ig, показан на рис. При настройке сетевых средств в основном используются категории Networking Options и Network Device Support, которые подробно рассматриваются в двух последующих разделах.

Для большинства опций предусмотрены переключатели. Примерами таких переклю чателей могут служить Y, М и N, показанные на рис. Y и N указывают на присутствие или отсутствие опции в составе ядра, а М (сокращение от modular compilation Ч модульная компиляция) указывает на то, что соответствующие средства должны быть скомпилиро ваны отдельный модуль, которые можно загружать и выгружать независимо от других компонентов ядра. Более подробно о настройке опций рассказывается ниже.

Глава 1. Настройка сетевых средств ядра Данная глава посвящена опциям версии 2.4.x ядра Linux, в частности, материал главы ориентирован на ядро 2.4.17. Опции, относящиеся к сетевым средствам, модифицировались раньше и, по-видимому, будут и в будущем.

В версиях 2.2.x ядра опции в основном совпадают;

различаются они лишь в дета лях. В состав разрабатываемого ядра 2.5.x включено инструментальное средство CML2, предназначенное для настройки. Дополнительную информацию об этом инструменте можно получить по адресу Поддержка сетевых протоколов Меню Networking Options содержит опции, влияющие на работу сетевых протоколов.

Вы можете включить или исключить средства поддержки стека протоколов либо от дельных протоколов (в основном данные опции касаются семейства протоколов TCP/IP).

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

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

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

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

Х Packet Socket. Эта опция позволяет приложениям непосредственно обращаться к требуемому протоколу, минуя некоторые уровни стека протоколов. Для боль шинства программ такая возможность не нужна;

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

Х Packet Socket: Mapped IO. Если данная Packet Socket включена, произ водительность инструментальных средств, использующих низкоуровневые соеди нения, повышается.

Х Unix Domain Sockets. Некоторые важные программы Linux используют сетевые про токолы для обмена данными даже в том случае, если они выполняются на одном и том же компьютере. В качестве примеров можно привести средство протоколи рования syslogd и программы, выполняющиеся в среде X Window используют сетевой протокол для взаимодействия с выполняющим 30 Часть I. Низкоуровневая конфигурация системы отображение данных). Опция Domain Sockets допускает взаимодействие в пре делах одной системы даже в тех случаях, когда на компьютере не установлено се тевое оборудование. Даже если средства поддержки сетевого обмена присутствуют, опция Unix Domain Sockets обеспечивает более высокую скорость обмена по срав нению с обычными TCP-гнездами. Обычно данная опция устанавливается;

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

По умолчанию все три указанные опции устанавливаются. При необходимости вы можете запретить Packet Socket.

Опции сетевой фильтрации Опции сетевой фильтрации блокируют или преобразуют пакеты, поступающие на компьютер или покидающие его. Данные опции используются при создании брандмауэ ров и выполнении IP-маскировки (подробно эти вопросы будут обсуждаться в главе 25).

Брандмауэры блокируют нежелательные обращения к компьютеру или сети, а IP-маски ровка позволяет организовать работу в Internet пользователей всей локальной сети при наличии одного IP-адреса. Опции ядра системы, предназначенные для фильтрации, пере числены ниже.

Х Socket Filtering. В обычных условиях ядро направляет все пакеты, полученные че рез некоторое гнездо, программе, которая создала это гнездо. Опция Socket Filtering позволяет указать ядру на то, что принятые пакеты должны быть сначала переда ны небольшой программе (которая называется фильтром). Эта программа способна блокировать некоторые из пакетов. Как правило, программы могут работать без дан ной опции. Исключение составляют последние варианты серверов DHCP и клиентов DHCP. Если в вашей сети используются средства DHCP (Dynamic Host Configuration Protocol Ч протокол динамической конфигурации узла), данная опция должна быть установлена.

Х Network Packet Filtering. Данная опция является наиболее важным средством филь трации, так как именно она делает возможной работу брандмауэра и IP-маскировку.

Обычно опция Network Packet Filtering устанавливается;

при этом становится до ступной опция Network Packet Filtering Debugging, которую можно использовать для решения возникающих проблем. Кроме того, становится также доступным под меню IP: Netfilter Configuration. В этом подменю отображаются описанные ниже опции.

Х Connection Tracking. Эта опция обеспечивает более высокую степень контроля над сетевыми соединениями, чем это возможно в обычных условиях. Как правило, маршрутизаторы ограничиваются пересылкой информационных пакетов между се тевыми интерфейсами. Если опция Connection Tracking активна, система запомина ет IP-адрес источника, IP-адрес назначения и порты для дальнейшего использова ния. Эта возможность необходима для реализации IP-маскировки. В других случаях опцию Connection Tracking можно отключить. Если данная опция установлена, до ступны опции поддержки FTP, что позволяет обеспечить работу данного протокола при наличии IP-маскировки.

Глава 1. Настройка сетевых средств ядра Х IP Tables Support. Данная опция включает поддержку ядром утилиты iptables, используемой для реализации и осуществления IP-маскировки (эти вопросы будут подробно обсуждаться в главе 25). При установленной опции IP Tables Support становятся доступны подопции, позволяющие настроить средства поддержки iptables для выполнения конкретных задач. Многие из этих подопции задают соответствие ядра определенному типу, и их имена имеют вид Тип Match Support. Из них очень важна опция Connection S*ate Match Support, которая позво ляет осуществлять проверку пакетов с учетом состояния packet inspection).

Эта операция применяется в и подробно рассматривается в главе 25.

Также важны опции Packet Filtering, Full NAT и LOG Target Support и их подопции.

Установив данные опции, вы можете использовать ваш компьютер как брандмауэр или осуществлять IP-маскировку. Для независимой рабочей станции или сервера опцию Full NAT можно не указывать.

Х Support. В некоторых случаях бывает необходимо обеспечить работу сценариев брандмауэра, ориентированных на использование утилиты ipchains (эта утилита применялась при работе с версиями ядра 2.2.x). Поддерж ку ipchains можно включить в том случае, если средства IP Tables Support не были скомпилированы непосредственно в ядро системы. (Средства iptables и ipchains выполняют приблизительно одинаковые действия, но они не совмести мы друг с другом.) Если вы создаете брандмауэр с нуля, можете смело отключить поддержку ipchains.

Х ipfwadm Support. При работе с версиями 2.0.x ядра для создания бранд мауэров использовалось инструментальное средство Чтобы использовать сценарии брандмауэра, ориентированные на ipfwadm, надо установить данную опцию. Следует помнить, что средства поддержки ipfwadm не совместимы ни с iptables, ни с ipchains. Если вы не используете либо твердо решили преобразовать их для работы с iptables, можете отказаться от установки данной опции.

По мере перехода от версий 2.0.x к версиям 2.4.x ядра Linux средства поддержки фильтрации пакетов становились все сложнее. В ядре 2.4.x предусмотрены многие допол нительные возможности;

создавая брандмауэр, важно активизировать те опции, которые необходимы для решения конкретной задачи. Если вы сомневаетесь, нужна ли та или иная опция из меню IP: Netfilter Configuration, рекомендую вам установить ее. В этом случае объем ядра несколько возрастет, но вы получите возможность использовать различные правила брандмауэра.

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

32 Часть I. Низкоуровневая конфигурация системы Опции маршрутизации TCP/IP Маршрутизатор Ч это компьютер, который непосредственно передает данные из одной сети в другую. Маршрутизаторы также часто называют шлюзами. Так, например, маршрутизатор может понадобиться для связи сети, принадлежащей отделу большой кор порации, с корпоративной сетью. Корпорация, в свою очередь, использует маршрутизатор для обеспечения связи своей сети с Internet. Рассмотрению опций маршрутизации посвя щена глава 24. Сейчас вам достаточно знать лишь то, что для ядра Linux предусмотрен ряд опций, являющихся IP: Advanced Router.

Опции поддержки IPv Работа Internet обеспечивается за счет протоколов семейства TCP/IP, в частности, для передачи пакетов используется протокол IP (IPv4). К сожалению, на сегодняшний день уже невозможно игнорировать тот факт, что версия IPv4 устарела. Для представления IP адреса в IPv4 используется 32-разрядное число, т. е. общее число адресов равно или 4294967296. Вследствие неэффективности механизма распределения адресов реальное их количество оказывается намного меньшим. В результате возникла проблема нехватки IP адресов. Кроме того, недостатки в защите IPv4 позволяют злоумышленникам вмешиваться в сеансы сетевого взаимодействия. На момент написания данной книги, т. е. в 2002 г., с проблемами, связанными с использованием IPv4, еще можно мириться, но их придется решить в течение ближайшего десятилетия.

В настоящее время разрабатывается версия IPv6, призванная заменить IPv4. В IPv поддерживаются 128-разрядные IP-адреса. Общее число IP-адресов равно или 3,4 х Ч приблизительно х адресов на квадратный миллиметр поверхности Земли.

IPv6 также обеспечивает дополнительные средства защиты. В настоящее время число сетей, в которых используется IPv6, очень мало. Если ваш компьютер подключен к такой сети или если вы собираетесь в качестве эксперимента организовать обмен данными во внутренней сети предприятия посредством IPv6, вам надо активизировать средства под держки IPv6, установив для этого опцию IPv6 Protocol (Experimental) в меню Networking Options. После установки данной опции вам станут доступны дополнительные опции, объединенные в подменю IPv6: Netfiler Configuration. В этом подменю также находятся описанные ранее опции фильтрации, но они ориентированы на работу с протоколом IPv6.

Чтобы активизировать средства поддержки IPv6, надо установить значения Yes опции Prompt for Development или Incomplete Code/Drivers в меню Code Matu rity Level Options. To же самое надо сделать при работе с любыми "эксперимен тальными" драйверами. Со временем эксперименты с IPv6 закончатся, и опция, включающая поддержку IPv6, будет относиться к числу основных опций. Пока это не произошло, при работе с IPv6, как и при использовании других "экспе риментальных" средств, следует соблюдать осторожность.

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

Очевидно, что в этом случае необходимы специальные средства планировки, которые Глава 1. Настройка сетевых средств ядра устанавливали бы очередность передачи пакетов. Как правило, в системе Linux исполь зуется стратегия FIFO (first out Ч "первый пришел Ч первый вышел"), согласно которой пакет, предназначенный для передачи, находится в очереди до тех пор, пока не будут переданы все пакеты, поставленные в очередь раньше него. Но в некоторых слу чаях необходимо предоставить пакетам определенного типа некоторые преимущества.

Это могут быть пакеты, адресованные в конкретную сеть, или пакеты, которые содер жат информацию, соответствующую определенному протоколу. Так, например, пакеты, содержащие информацию реального времени, например данные Internet-телефонии, целе сообразно передавать вне очереди. Назначать приоритеты пакетам позволяют опции QoS (quality of service Ч качество сервиса). Эти опции доступны посредством подменю QoS and/or Fair Queueing меню Networking Options.

Для того чтобы реализовать систему QoS, необходимо выбрать опцию QoS and/or Fair Queueing в одноименном меню. В результате автоматически устанавливается ряд оп ций этого меню. Другие опции задаются отдельно. Основными из них являются опции планирования передачи пакетов и организации очереди, такие как CBQ Packet Scheduler и SFQ Queue. Эти опции позволяют ядру выполнять более сложную обработку паке тов по сравнению с традиционно используемым принципом FIFO. Опции QoS Support и Packet>

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

На практике использование средств QoS предполагает применение расширенных средств маршрутизации, таких как ip и tc. Об этих инструментах речь пойдет в главе 24, однако они слишком сложны, чтобы привести их исчерпывающее описание в рамках од ной главы. Дополнительную информацию об ip и о tc можно найти в документах + tc Notes html) и Differentiated Services on Linux f sourcef net).

Поддержка протоколов высокого уровня В ядре Linux предусмотрена поддержка нескольких протоколов высокого уровня. Бла годаря этому коды, отвечающие за работу с этими протоколами, выполняются намного быстрее, чем соответствующие коды обычных пользовательских программ. Кроме того, поддержка высокоуровневых протоколов в ядре обеспечивает более тесную интеграцию этих протоколов с остальными компонентами операционной системы. Например, вклю чение в состав ядра средств поддержки NFS позволяет монтировать удаленные ресурсы и использовать их так же, как и компоненты локальной файловой системы. В версиях 34 Часть I. Низкоуровневая конфигурация системы 2.4.x ядра реализована поддержка трех важных высокоуровневых протоколов: HTTP, NFS и SBM/CIFS.

В приведенном перечне содержатся не все протоколы, поддерживаемые ядром.

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

Ускорение HTTP-обмена Работа World Wide Web в основном базируется на использовании протокола HTTP (Hypertext Transfer Protocol Ч протокол передачи гипертекстовой информации). По су ти, в ядре Linux реализован простой сервер HTTP, который включается при установке опции Kernel HTTPd Acceleration. Для настройки и активизации этого сервера в псевдо файлы, находящиеся в каталоге записываются специальные значения. Вопросы работы со встроенным сервером HTTP подробно рассматриваются в главе 20.

Реализовать сервер HTTP в составе ядра оказалось сравнительно не сложно, так как передача клиенту статических Web-страниц (документов, содержимое которых не изменя ется при различных обращениях клиентов) мало отличается от копирования файлов с дис ка на удаленные компьютеры. Ядро может выполнять эту операцию гораздо эффективнее, чем пользовательские программы. Для обслуживания запросов, связанных с предоставле нием динамических Web-страниц, а также запросов, предполагающих сложную обработ ку статических документов, ядро обращается к обычному Web-серверу, например Apache.

При этом нет необходимости в специальных настройках Apache;

этот сервер попросту "не видит" запросов на получение статических Web-страниц.

Опции для работы с NFS NFS (Network Filesystem Ч сетевая файловая система), разработанная Sun, предназна чена для организации совместного использования файлов несколькими компьютерами.

Благодаря NFS обращение к удаленным файлам осуществляется так же, как и обращение к файлам на локальной машине. Поддержка NFS реализована в ядре Linux. Подробно вопросы работы с NFS рассматриваются в главе 8. Для того чтобы иметь возможность монтировать каталоги, экспортируемые другими компьютерами, надо установить опции, отвечающие за поддержку NFS. Опции, включающие средства клиента и сервера NFS, содержатся в подменю Network File Systems меню File Systems (а не в меню Networking Options, как это можно было бы ожидать). Опции для работы с NFS перечислены ниже.

Х NFS File System Support. Эта опция включает базовые средства поддержки клиента NFS (т. е. средства, позволяющие монтировать удаленные каталоги NFS и пользо ваться ими так же, как и фрагментами локальной файловой системы).

Х Provide Client Support. За время своего развития система NFS претерпела многочисленные изменения. Последней была разработана версия 3 (NFSv3). Под держку этой версии необходимо задавать явно, так как стандартные средства, вклю чаемые с помощью NFS File System Support, не обеспечивают надежную работу Для поддержки опция NFS File System Support также должна быть установлена.

Глава Настройка сетевых средств ядра Х Root File System on NFS. Чтобы эта опция стала доступной, надо установить оп цию IP: Kernel Level Autoconfiguration в меню Networking Options. Опция Root File System on NFS позволяет монтировать внешний каталог как корневую файло вую систему Linux. Эта возможность обычно используется только на бездисковых рабочих станциях.

Х NFS Server Support. Чтобы компьютер под управлением Linux мог работать как сервер NFS (т. е. мог предоставлять свои каталоги другим компьютерам), жела тельно установить данную опцию. В большинстве случаев она позволяет ускорить работу сервера NFS.

Х Provide Server Support. Если вы хотите обеспечить работу сервера NFS, ориентированного на использование средств ядра, установите данную опцию. Как и в случае для поддержки NFSv3 должны также быть включены базовые средства NFS.

Чаще всего средства NFS используются в Linux и различных версиях UNIX.

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

Опции для работы с SMB/CIFS NFS Ч не единственный протокол, обеспечивающий разделение файлов. В Macin tosh для этой цели используется AppleTalk;

большой популярностью пользуются также протоколы разработанные Novell. В системе Linux, помимо NFS, часто приме няется система Samba, которая реализует протокол (Server Message Block Ч блок сообщений сервера). Эти средства известны также под названием (Common Internet Ч общая межсетевая файловая система). Подробно настройка и использование Samba рассматриваются в главе 7.

Samba предоставляет средства, необходимые для того, чтобы система Linux функци онировала как SMB/CIFS сервер;

при этом специальная настройка ядра не требуется.

Если вы хотите монтировать в Linux разделяемые каталоги SMB/CIFS, вам надо устано вить опцию File System Support, которая действует подобно опции NFS File System Support. Две подопции (Use a Default NLS и Default Remote NLS Option) обеспечивают преобразование имен файлов на основе NLS (National Language Support Ч поддержка национальных языков). Эти опции полезны при использовании алфавитов, отличных от латинского, например кириллицы, а также символов с дополнительными элементами.

Чтобы обеспечить работу Linux как клиента SMB/CIFS, не обязательно уста навливать опции ядра SMB/CIFS. Это также позволяет сделать программа Данная программа не монтирует ресурсы;

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

Поддержка альтернативных сетевых протоколов Несмотря на то что семейство протоколов TCP/IP, обеспечивающее работу глобаль ной сети Internet, пользуется широкой популярностью, в системе Linux также реализованы другие стеки протоколов. Опции, включающие поддержку различных сетевых протоко 36 Часть I. Низкоуровневая конфигурация системы лов, представлены в меню Networking Options. Многие из опций, содержащихся в этом меню, на самом деле являются подопциями TCP/IP Networking. За ними следуют опции, соответствующие другим протоколам;

некоторые из них перечислены ниже.

Х Asynchronous Transfer Mode (ATM). Этот набор экспериментальных опций предна значен для поддержки аппаратных средств и протоколов ATM. Опции ATM в рав ной мере относятся как к аппаратным средствам, так и к сетевым протоколам, но в версии ядра 2.4.x они, как и другие опции поддержки сетевых протоколов, сосре доточены в меню Networking Options.

Х The IPX Protocol. Семейство протоколов IPX (Internetwork Packet Exchange Ч межсе тевой обмен пакетами), разработанное Novell, применяется во многих сетях, в част ности в Netware. Для работы с этими протоколами вам потребуется дополнитель ное программное обеспечение, например (дополнительную информацию о нем вы можете получить по адресу Опция NCP File System Support, рас положенная в подменю Network File Systems меню File Systems, дает возможность монтировать тома Netware, подобно тому, как опции NFS и SMB/CIFS позволяют монтировать фрагменты файловой системы Windows.

Х AppleTalk Protocol Support. Компания Apple разработала стек протоколов Ар pleTalk, предназначенный для разделения файлов и принтеров на компьютерах Macintosh. Для поддержки AppleTalk в Linux используются средства ядра, а так же пакет Netatalk //netatalk, sourcef Х DECnet Support. Корпорация DEC (Digital Equipment Corporation) разработала для своих компьютеров сетевую технологию под названием DECnet. Система Linux включает средства поддержки DECnet, но для работы с данным стеком прото колов необходимо установить специальный программный пакет. Дополнительную информацию об использовании DECnet можно получить, обратившись по адресу В системе Linux также предусмотрены опции поддержки менее популярных протоко лов, например Acorn Econet. В большинстве случаев при установке системы достаточно включить поддержку TCP/IP и одного-двух дополнительных стеков протоколов. Вслед ствие бурного развития Internet производители, ранее использовавшие собственные стеки протоколов, модернизировали свои инструментальные средства для работы с TCP/IP. Так, например, несмотря на то, что Apple в течение длительного времени применяла AppleTalk, средства разделения файлов на компьютерах Macintosh сейчас используют как AppleTalk, так и TCP/IP.

В ядре Linux отсутствуют средства поддержки стека протоколов NetBEUI. Для работы с разделяемыми файлами Windows в настоящее время с успехом приме няются средства SMB/CIFS.

В главе 3 детально рассматриваются стеки сетевых протоколов и их использование.

Глава 1. Настройка сетевых средств ядра Опции для работы с аппаратными средствами В меню Network Device Support содержатся опции, определяющие взаимодействие системы с различными сетевыми Самые важные из этих опций управляют использованием драйверов сетевых карт. Несмотря на то что в настоящее время наибо лее распространены Ethernet-карты, в меню Network Device Support содержатся опции для работы и с другими устройствами, предназначенными для создания локальных сетей.

Кроме того, Linux предоставляет опции, включающие драйверы устройств дальней связи и драйверы беспроводных устройств. Устройства PC Card (применяющиеся в портатив ных компьютерах) описаны в отдельном подменю, которое входит в состав меню Network Device Support. Вы также можете выбрать устройства, позволяющие устанавливать со единения по телефонным линиям через модемы, и другие аппаратные средства.

Для того чтобы получить доступ к описанным выше опциям, надо установить опцию Network Device Support, которая находится в начале меню Network Device Support. Если вы не сделаете это, опции в данном меню будет не доступны.

Устройства Ethernet На момент написания данной книги, т. е. в 2002 г., подавляющее большинство ло кальных сетей строились на базе Ethernet. Беспроводные технологии также пользуются определенной популярностью, но сети, созданные на их основе, проигрывают сетям Eth ernet в скорости обмена. Одной из проблем, усложняющих процесс администрирования операционных систем, является тот факт, что число разновидностей Ethernet-карт исчис ляется сотнями и даже тысячами.

К счастью, при построении Ethernet-карт применяется ограниченный набор микро схем, поэтому для поддержки подавляющего большинства таких устройств достаточно Опции, управляющие использованием этих драйверов, сосредо точены в двух подменю: Ethernet (10 or и Ethernet (1000 Mbit). Большинство опций находится в первом меню. Соответствующие им драйверы, как следует из на звания подменю, ориентированы на устройства, обеспечивающие скорость обмена и 100 На момент написания этой книги наибольшей популярностью пользуются Ethernet-платы 100 Мбод Ethernet), а в некоторых случаях применя ются более новые платы 1000 Мбод (или Ethernet). Разрабатываются также 10 Гбод.

Ethernet-сети различаются не только по скорости обмена данными, но и по типу кабеля. Для соединения устройств применяются коаксиальные кабели (в некото рых типах мегабитовых Ethernet-сетей), витые пары (во всех Ethernet-сетях, а также в некоторых типах и Ether net-сетей) и волоконно-оптические кабели (в некоторых типах гигабитовых Eth ernet-сетей). Витые пары обеспечивают соединение на расстоянии до метров (обычно такое соединение устанавливается между компьютером и концентрато ром либо коммутатором). Волоконно-оптические соединения допускают обмен данными на расстоянии до 5 километров.

Структура меню Ethernet (10 or lOOMbit) далека от совершенства. В начале меню перечислены сетевые карты 3Com, SMC, и некоторых других производите лей. За ними расположены устройства ISA (Industry Standard Architecture), затем следуют устройства (Extended ISA), VLB (VESA Local Bus) и PCI (Peripheral Component In 38 Часть I. Низкоуровневая конфигурация системы terconnect). Завершается список группой параллельных Ethernet-адаптеров. В результате для поиска требуемого устройства приходится просматривать две-три группы опций.

Существуют также Ethernet-устройства, драйверы которых не устанавливаются по средством опций меню Network Device Support или его подменю. Так, например, для устройств PC Card используются специальные драйверы, а адаптеры USB Ч Ethernet описаны в меню USB Support. Для того чтобы использовать устройство USB, вам на до, в зависимости от контроллера, присутствующего на материнской плате, установить либо опцию Support, либо Support, а также включить опцию, которая соот ветствует требуемому драйверу, например USB ADMtek Pegasus-Based Ethernet Device Support.

Альтернативные средства для создания локальных сетей Несмотря на свою популярность, Ethernet Ч отнюдь не единственное устройство, позволяющее создать локальную сеть. В ядре Linux предусмотрена поддержка различных типов сетей. Число драйверов для устройств, отличных от Ethernet, невелико, но это не означает, что средства для организации соответствующих сетей разработаны недостаточно хорошо. Ниже приведены некоторые опции, присутствующие в меню Network Device Support.

Х Token Ring. В течение многих лет технология Token Ring, разработанная IBM, была главным конкурентом Ethernet, однако начиная с 1990 г. преимущество Ethernet стало очевидным. Большинство карт Token Ring поддерживают скорость обмена до 16 Мбод, но в настоящее время появились модели 100 Мбод. Максимальное расстояние между устройствами в сети Token Ring составляет 150-300 метров.

Средства поддержки устройств Token Ring сосредоточены в подменю Token Ring Devices меню Network Device Support.

Х LocalTalk. Для компьютеров Macintosh компания Apple разработала сетевую тех нологию, включающую протоколы как аппаратного (LocalTalk), так и программно го (AppleTalk) уровня. Для взаимодействия с сетями LocalTalk были разработаны устройства х86;

некоторые из них поддерживает система Linux. Соответствующие опции находятся в меню AppleTalk Devices. Как ни странно, версия Linux, разра ботанная для Macintosh, не поддерживает LocalTalk. На момент написания данной книги максимальная скорость обмена данными в сети LocalTalk составляла 2 Мбод.

Х ARCnet. Это сетевая технология, которая в основном используется в специальных целях, например, для подключения охранных устройств или для сбора результа тов научных экспериментов. Устройства ARCnet обеспечивают скорость обмена от 19 Кбод до 10 Мбод. Соединение устройств осуществляется с помощью коакси ального кабеля, витой пары или волоконно-оптического кабеля. Опции поддержки ARCnet находятся в подменю ARCnet Devices. Помимо драйвера устройства, вам необходимо включить драйвер, предназначенный для поддержки формата ARCnet пакетов (RFC или RFC Х FDDI и CDDI. (Fiber Distributed Data Interface Ч волоконно-оптический интер фейс распределенных данных) и CDDI (Copper Distributed Data Interface Ч "медный" Глава 1. Настройка сетевых средств ядра интерфейс распределенных данных) предназначены для создания сетей со скоро стью обмена информацией порядка Мбод. Преимущество FDDI перед 10 мега битовой Ethernet состоит в том, что данная технология обеспечивает связь на рассто янии до 2 километров. Следует заметить, что гигабитовая Ethernet с передачей дан ных по волоконно-оптическому кабелю обеспечивает дальность до 5 километров.

Для того чтобы опции ядра предназначенные для поддержки FDDI/CDDI, стали доступны, надо установить опцию FDDI Driver Support.

Х HIPPI. HIPPI (High Performance Parallel Interface Ч высокопроизводительный парал лельный интерфейс) обеспечивает скорость обмена данными 800 или 1600 Кбод.

При соединении с помощью витой пары максимальная дальность составляет до 25 метров, многорежимное волоконно-оптическое соединение обеспечивает даль ность до 300, а однорежимное волоконно-оптическое соединение Ч до 10 километ ров. Ядро 2.4.17 поддерживает единственное устройство HIPPI Essential RoadRun ner. Заметьте, что драйвер данного устройства считается экспериментальным.

Х Fiber Channel. Данный тип сетевого интерфейса поддерживает как волоконно-опти ческое соединение, так и соединение с помощью обычного кабеля и обеспечивает скорость передачи данных 133-1062 Мбод. При использовании волоконно-оптиче ского кабеля максимальная дальность составляет до 10 километров. Ядро поддерживает единственное устройство Fiber Channel 5526 Tachyon.

Некоторые из описанных выше сетевых сред, например Token Ring, используются для создания локальных сетей, компоненты которых размещаются в одном здании ли бо в нескольких зданиях, расположенных рядом. Другие, например FDDI и HIPPI, чаще применяются для организации соединения между компьютерами, расположенными на большом расстоянии, например, находящимися в различных помещениях на территории университетского городка. Поддержка этих технологий системой Linux означает, что ком пьютер под управлением Linux может выступать в роли маршрутизатора, связывающего между собой различные типы сетей.

Далее в этой книге мы будем предполагать, что локальная сеть, к которой под компьютеры под управлением Linux, создана на базе технологии Eth ernet. Если при решении конкретной задачи вам потребуется организовать под держку других сетей, то единственное, что вам придется для этого сделать, Ч это изменить имя сетевого интерфейса. Устройствам Ethernet имена присваива ются следующим образом. Первое устройство имеет имя ethO, второе Ч и т. д. Аналогично именуются другие устройства, например, первому устройству Token Ring присваивается имя а второму устройству FDDI Ч имя Устройства с широкой полосой пропускания и устройства, обеспечивающие связь на большой дальности Термин "устройства с широкой полосой пропускания" имеет несколько значений. Во первых, этот термин обозначает устройства, позволяющие одновременно передавать раз личные типы информации, например, видео, аудио и обычные цифровые данные. Во вторых, устройствами с широкой полосой пропускания называют устройства с большой 40 Часть I. Низкоуровневая конфигурация системы пропускной способностью, позволяющие увеличить скорость передачи данных по ком мутируемым линиям (например, реализовать скорость обмена до 200 Кбод). Конечно, величина 200 Кбод выглядит более чем скромно по сравнению со скоростями, которые обеспечивает технология Ethernet, но все же 200 Кбод Ч это значительно больше, чем скорость 56 Кбод, которой позволяют добиться обычные телефонные линии.

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

На момент написания данной книги наиболее популярными из устройств с широ кой полосой пропускания были DSL (Digital Subscribe Line Ч цифровая линия подпис ки) и кабельные модемы. Существует несколько разновидностей DSL, например ADSL (Asymmetric DSL Ч асимметричная DSL) и SDSL (Single-Line, или Symmetric DSL Ч оди ночная линия, или асимметричная DSL). В процессе работы передают высокочастотные сигналы по обычным телефонным линиям. Кабельные модемы пересы лают данные по кабельным телевизионным сетям и используют полосу частот свободного телевизионного калана. Некоторые из устройств с широкой полосой пропускания пере дают данные через спутниковые системы, по радиоканалам и по волоконно-оптическим кабелям.

Большинство соединений с широкой полосой пропускания используют специальные внешние модемы, а подключение к локальным компьютерам производится через Ethernet порты. Поэтому, для того, чтобы работа через такое соединение стала возможной, необ ходим Ethernet-адаптер, кроме того, надо обеспечить поддержку этого адаптера с помо щью стандартного драйвера Linux. Сам по себе широкополосный модем может работать без специального драйвера, но некоторые провайдеры используют РРРоЕ (Point-to-Point Protocol over Ethernet Ч протокол межузлового взаимодействия через Ethernet). В этом случае необходимо обеспечить поддержку данного протокола в системе Linux, для чего надо установить опцию РРР over Ethernet в меню Network Device Support (эта опция считается экспериментальной). Для того чтобы опция РРР over Ethernet была доступна, необходимо включить опцию РРР Support. Средства РРРоЕ понадобятся также в том слу чае, если вы собираетесь запускать на вашем компьютере пакет Roaring Penguin РРРоЕ (этот пакет находится по адресу com/pppoe/).

Некоторые широкополосные модемы используют вместо Ethernet интерфейс USB.

В ядре поддержка данных устройств не предусмотрена, но Alcatel предоставля ет Linux-драйверы для своего модема Speed Touch USB DSL Информацию о других можно найти по адресу Ряд широкополосных модемов, особенно предназначенных для установления низко уровневых ADSL-соединений, поставляются вместе с внутренними Лишь немногие из этих устройств поддерживаются в системе Linux. В частности, в ядре предусмотрена поддержка General Instruments Surfboard и некоторых односторонних модемов. Односторонними (one-way) называются модемы, которые могут только прини Глава 1. Настройка сетевых средств ядра мать При работе с такими модемами для передачи данных используются обычные модемы, взаимодействующие по телефонным линиям. В настоящее время односторонние модемы встречаются очень редко. Драйверы для модема Diamond 1MM DSL можно най ти по адресу однако они являются модернизацией существующих Ethernet-драйверов и при использовании их в 2.4.x и более старших версиях ядра могут возникать проблемы.

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

Роль выделенной линии чаще всего выполняет обычная телефонная линия, арендован ная у телефонной компании. По такой линии не передается тональный сигнал, все меры по организации взаимодействия модемов должны принять специалисты, занимающиеся созданием сети. Сети, созданные на базе выделенных линий, обычно региональ ными сетями, или WAN Network). При организации региональных сетей часто используются специальные внешние устройства, называемые WAN-маршрутизаторами.

Для создания региональных сетей могут также применяться специальные интерфейсные карты. В системе Linux предусмотрена поддержка таких устройств;

соответствующие опции находятся в подменю Wan Interfaces меню Network Device Support. Как и при работе со многими другими подменю, для того, чтобы получить доступ к опциям, кото рые соответствуют конкретным устройствам, необходимо включить опцию Wan Interfaces Support, расположенную в начале данного подменю.

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

К сожалению, на момент написания данной книги беспроводные сети по многим характеристикам уступают Ethernet-сетям. Беспроводные сети горазд9 дороже Ethernet сетей, скорость передачи данных относительно мала, а разработка стандартов, регла ментирующих структуру и работу таких сетей, еще продолжается. В настоящее время основными стандартами являются и Стандарт определяет ско рость обмена 2 Мбод со снижением до 1 Мбод. Снижением называется повторный обмен инициализационными параметрами в случае, если уровень сигнала слишком низкий или если помехи искажают сигнал. Стандарт определяет скорость Мбод со сниже нием до 5,5, 2 и 1 Мбод. Существует также беспроводная технология Bluetooth, которая поддерживает скорость обмена до 1 Мбод. Основное направление развития беспровод ных сетей связано с увеличением скорости передачи данных. Планируется разработать беспроводные версии ATM со скоростью обмена до 155 Мбод.

Как правило, беспроводные локальные сети создаются на базе беспроводных ус тройств PC Card, используемых в портативных компьютерах. В одних случаях эти устрой ства могут непосредственно обмениваться данными друг с другом, в других случаях для взаимодействия необходима базовая станция, которая может выполнять роль шлюза к се ти, созданной традиционными средствами. С помощью базовой станции можно также 42 Часть Низкоуровневая конфигурация системы организовать подключение к Internet. Существуют беспроводные ISA и ко торые позволяют подключать к беспроводным сетям настольные компьютеры и рабочие станции. Для поддержки устройств PC Card, ISA и PCI в системе Linux необходимо уста новить соответствующие драйверы;

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

Для включения средств поддержки беспроводных устройств в ядре Linux предусмот рены опции, которые содержатся в меню Wireless LAN (Non-Hamradio). Опции в данном меню расположены по типам устройств, а не по технологиям, используемым в них (напри мер, или Bluetooth). Кроме того, существуют пакеты Wireless Extensions и Wire less Tools, которые упрощают управление беспроводными сетями, созданными с помощью средств Linux. Информацию об этих пакетах можно найти по адресу Здесь же расположе ны дополнительные ссылки на документы, имеющие отношение к беспроводным сетям.

Устройства PC Card Большинство портативных компьютеров имеют как минимум одно гнездо PC Card.

(Часто в документации по системе Linux для обозначения устройств PC Card использу ется старый термин PCMCIA. Устройства PC Card можно подключать и удалять в про цессе работы компьютера. Поскольку при разработке системы Linux предполагалось, что сетевые интерфейсы не должны исчезать без предупреждения, для работы с устрой ствами PC Card создан специальный пакет Card Services. При подключении или уда лении устройств PC Card инструменты Card Services соответственно запускают или останавливают компоненты ядра, имеющие отношение к этим устройствам. Дополни тельную информацию о Card Services можно получить, обратившись по адресу В ядре опции поддержки многих устройств PC Card находятся в меню PCMCIA Network Device Support. Некоторые из опций, соответствующих беспроводным устрой ствам, находятся в меню Wireless LAN (Non-Hamradio). После того как вы включите со ответствующую опцию и сконфигурируете карту, она будет работать как обычное устрой ство ISA или PCI. Так, например, Ethernet PC Card распознается системой как устройство ethO, а для его настройки используются стандартные инструменты, которые будут рас смотрены в главе 2.

Версии ядра, предшествующие 2.4.x, требуют для поддержки устройств PC Card спе циальный пакет драйверов. Следует также заметить, что многие устройства PC Card до сих пор не поддерживаются стандартным ядром Linux. Упомянутый выше пакет драй веров входит в набор Card Services. Если вы используете ядро 2.4.x, для работы с PC Card вам вряд ли придется устанавливать специальные драйверы;

такие драйверы могут потребоваться для модемов, SCSI-адаптеров и других устройств.

Устройства для связи по коммутируемым линиям Для установления связи по коммутируемой линии чаще всего используются обыч ные модемы. Чтобы обмен данными был возможен, необходимо также включить средства поддержки протокола РРР (Point-to-Point Protocol Ч протокол межузлового взаимодей ствия). Соединение по коммутируемой линии устанавливается из командной строки либо с помощью инструмента, предоставляющего графический пользовательский интерфейс.

Подробно вопросы установления соединения будут рассматриваться в главе 2.

Глава 1. Настройка сетевых средств ядра Для того чтобы активизировать средства поддержки РРР, надо установить опцию РРР Protocol) Support в меню Network Device Support. Если вы включите эту опцию, станут доступны некоторые дополнительные опции, например РРР Support for Async Serial Ports и РРР Deflate Compression. Эти опции не всегда необходимы, но в некоторых случаях они могут повысить эффективность обмена информацией за счет сжатия данных, передаваемых по линии связи. Если вы собираетесь использовать средства ядра РРРоЕ для работы через DSL-соединение, вам придется установить экспе риментальную опцию РРР over Ethernet. Для некоторых дополнительных РРРоЕ-пакетов эта опция не нужна.

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

РРР Ч не единственный протокол, посредством которого может осуществляться связь по коммутируемой линии. В ядре Linux поддерживается также протокол SLIP (Serial Line Internet Protocol Ч протокол Internet для обмена по последовательной линии), который выполняет практически те же функции, что и РРР. Особенности протокола SLIP тако вы, что он плохо подходит для взаимодействия с Internet-провайдером, поэтому вам вряд ли придется использовать его. SLIP используется некоторыми инструментами Linux для выполнения действий на локальном компьютере. Например, утилита, поддерживающая т. е. устанавливающая РРР-соединение при обнаружении сетевой актив ности, использует SLIP для выявления попыток обращения к компьютерам за пределами локальной сети.

Помимо РРР и SLIP, для организации обмена данными между компьютерами может использоваться протокол (Parallel Line Internet Protocol Ч протокол Internet для обме на по параллельной линии). Как нетрудно догадаться, этот протокол применяется тогда, когда компьютеры соединены друг с другом через параллельный порт (порт принтера).

Параллельный порт позволяет гораздо быстрее передавать данные, чем последовательный порт RS-232;

несмотря на это, соединение через параллельный порт также применяется поскольку Ethernet обеспечивает более высокое быстродействие. Для того чтобы использовать протокол PLIP, надо установить опцию (Parallel Port) Support в меню Network Device Support;

при этом предварительно следует активизировать опцию Paral lel Port Support в одноименном меню, а при работе на х86 надо также выбрать опцию PC-Style Hardware. Информацию об организации сети PLIP можно получить в документе PLIP html). Если вы не можете воспользоваться кабелем Turbo Laplink, то найдете в этом документе реко мендации по изготовлению кабеля для соединения компьютеров.

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

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

ВНИМАНИЕ Если вы установили необходимые вам опции сетевого взаимодействия, это со | всем не означает, что вы полностью выполнили настройку ядра. Существуют также опции, предназначенные для управления контроллерами EIDE, адаптера ми SCSI, файловой системой на диске, а также многие другие опции. Несмотря на то что эти опции не рассматриваются в данной книге, они чрезвычайно важны для обеспечения нормальной работы операционной системы. Если вы неправильно установите значения соответствующих опций, система не будет загружаться либо будет работать некорректно (например, скорость обмена дан ными с диском может стать недопустимо низкой). Опции ядра подробно об суждаются в документе Linux Kernel который находится по адресу (и на многих других серверах). Вопросы настройки ядра также рассматриваются в ряде книг по Linux.

Драйверы, встроенные в ядро, и драйверы, реализуемые в виде модулей Как вы уже знаете, при настройке ядра можно включить или отключить некоторые свойства ядра, например, вы можете разрешить или запретить использование конкретного Ethernet-адаптера. На рис. видно, что существуют опции, значения которых можно вы бирать более чем из двух возможных вариантов. В качестве примера рассмотрим опцию Packet Socket. Для этой опции могут быть заданы значения Y, и N. Значение Y (Yes) указывает на то, что средства, соответствующие данной опции, должны быть включены в основной файл ядра, а значение N (No) запрещает использование этих средств. Зна чение М задает некоторое "промежуточное" решение. Если вы выберете значение М, то соответствующие средства будут скомпилированы, но не войдут в основной файл ядра.

Вместо этого фрагмент кода будет реализован как отдельный модуль ядра, который по ме ре надобности загружается или удаляется из памяти. Для опций, являющихся других опций (например, Packet Socket: Mmapped IO, показанной на рис. 1.1), значение М обычно не предусмотрено. Решение о включении их в основной файл ядра или реа лизации в виде отдельного модуля принимается в зависимости от значения родительской опции.

Средства, включенные в основной файл ядра, доступны с момента загрузки системы и до окончания ее работы. Ситуация, при которой фрагмент кода будет удален из памяти, возникнуть не может. Существуют опции, для которых реализующий их программный код должен быть включен в основной файл ядра. Так, например, файловая система, в ко торой содержится корневой каталог системы, должна быть доступна с момента загрузки, поэтому соответствующий драйвер должен быть включен непосредственно в ядро. Ес ли вы установили рассмотренную ранее опцию Root File System on NFS, вам придется скомпилировать средства поддержки сетевых устройств и включить их в ядро.

На первый взгляд может показаться, что все средства, которые будут использоваться при работе системы, следует включить в основной файл ядра, однако такой подход имеет серьезный недостаток: при этом увеличивается объем оперативной памяти, занимаемой Глава 1. Настройка сетевых средств ядра ядром. Кроме того, размер файла ядра на диске также увеличивается, что может создавать трудности при загрузке системы. Поэтому в системе Linux предусмотрена возможность компилировать средства, соответствующие большей части опций, в виде модулей. Это позволяет работать с ядром небольшого и в то же время обеспечивает поддержку большого количества разнообразных устройств. В частности, в виде модулей могут быть скомпилированы средства для работы с большинством сетевых устройств, поэтому драй веры, включаемые в состав дистрибутивных пакетов, обычно подготавливаются именно в таком виде.

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

Программные средства поддержки стека протоколов также могут быть непосредствен но включены в ядро или скомпилированы как модули. (Исключением являются протоколы TCP/IP;

их можно либо включить в основной файл ядра, либо не использовать вовсе;

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

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

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

Компиляция ядра После того как вы сконфигурировали ядро системы, выполнив make ig или другую команду, приведенную в начале данной главы, вы должны скомпилировать ядро и установить его модули. Для этого необходимо выполнить следующие команды:

I. Низкоуровневая конфигурация системы 4 make make make t make Первая из этих команд выполняет подготовительную работу. Слово сокращенно обозначает dependency, соответственно при выполнении команды make dep анализиру ются выбранные вами опции и определяется, какие исходные файлы зависят от других.

Если вы пропустите этот шаг, компиляция будет выполнена некорректно.

В результате выполнения второй команды строится основной файл ядра, который име ет имя и обычно размещается в каталоге boot. Существуют различные варианты данной команды. Например, при создании яд ра небольшого размера можно использовать команду make z Image (ядро в формате bzlmage дает возможность загрузчику, например LILO, обрабатывать ядро большего размера, чем это позволяет Image). Как Image, так и bzlmage представляют собой сжатые варианты ядра. Они являются стандартом для компьютеров х86, но на других платформах вам придется вместо make bzlmage вызвать команду make В результате выполнения данной команды строится несжатое ядро. Каталог, в который помещается основной файл ядра, может отличаться от приведенного выше. Если вы ра ботаете на компьютере, отличном от х86, вместо каталога будет использован каталог, имя которого соответствует текущей платформе. Так, например, на PowerPC этот каталог имеет имя ррс.

Команда make modules, как нетрудно догадаться, компилирует модули ядра. По ко манде make файлы, содержащие эти модули, копируются в соответ ствующие позиции в каталоге /lib/modules. В частности, в каталоге /lib/modules создается каталог, имя которого отражает версию ядра, а в нем, в свою очередь, Ч подка талоги для конкретных классов драйверов.

Команды dep, make bzlmage (или эквивалентную ей команду) make modules может выполнить любой пользователь, при условии, что он обладает правами чтения и записи данных в каталогах, содержащих исходные коды яд ра. Выполнить команду make может только пользователь root.

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

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

Глава 1. Настройка сетевых средств ядра Х Ошибки в исходном коде или несовместимость кода. Иногда встречаются драй веры, которые содержат ошибки в исходном коде либо несовместимы с остальными компонентами ядра. Такая ситуация может возникнуть при работе с ядром, находя щимся в процессе разработки, либо при попытке включить в состав ядра нестан дартный драйвер. В этом случае при компиляции отображается одно или несколько сообщений об ошибке. Чтобы избавиться от ошибок, надо обновить версию ядра или, по крайней мере, заменить драйвер, который стал источником проблем. Если без этого драйвера можно обойтись, лучше вовсе отказаться его использования.

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

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

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

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

Х Ошибка компилятора. GNU С Compiler (GCC) считается надежным компилято ром, но бывают случаи, когда он становится источником проблем. Версия GCC, которая входит в состав Red Hat 7.0, не может скомпилировать ядро 2.2.x, но эта проблема устранена в версии ядра 2.4.x. (С Red Hat 7.0 поставляются две версии GCC;

для того чтобы компиляция ядра была выполнена успешно, надо вместо дсс использовать kgcc.) Х Проблемы с использованием аппаратных средств. GCC более интенсивно ис пользует ресурсы компьютера по сравнению с другими программами, поэтому сбои аппаратных средств чаще проявляются в процессе компиляции ядра системы. Та кие ошибки называются signal так как GCC возвращает именно та кое сообщение. Причиной подобных как правило, являются неисправности в процессоре и оперативной памяти. Дополнительную информацию об этих пробле мах и способах их устранения можно найти по адресу 48 Часть I. Низкоуровневая конфигурация Если вы не можете самостоятельно разрешить проблемы, возникающие при компиля ции ядра, отправьте сообщение в одну из групп посвященных системе Linux, например в Подробно опишите ваш дистрибутивный укажите версию ядра, которую вы пытаетесь скомпилировать, и сообщения об ошибках.

(Сообщения компилятора, не связанные с возникновением ошибок, лучше не указывать.) Инсталляция нового ядра и его использование Чтобы готовое ядро можно было использовать, его необходимо инсталлировать.

Как было сказано ранее, скомпилированное ядро помещается в каталог (вместо i386 может присутствовать другой каталог, имя ко торого отражает название процессора). Файл ядра надо скопировать или переместить в каталог /boot. Желательно переименовать файл так, чтобы его имя отражало вер сию ядра и изменения, которые вы внесли в Например, вы можете назвать файл ядра. 4 или Если команда make до сих пор не выполнялась, надо вызвать ее, инсталлировав тем самым модули ядра в каталог у. z, где Ч это номер вер сии ядра.

Копирования файла ядра в каталог /boot недостаточно. Чтобы ядро можно было ис пользовать, необходимо также модифицировать загрузчик. Большинство дистрибутивных пакетов содержит Linux Loader (LILO);

настройка этого загрузчика на новое ядро осу ществляется путем редактирования файла конфигурации В листин ге 1.1 показано содержимое файла настроенного на загрузку одного ядра.

Листинг 1.1. Простой файл conf boot=/dev/sda prompt timeout= root=/dev/sda read-only LILO используется на компьютерах х86. Работая на других компьютерах, вам НА придется ориентироваться на другие типы загрузчиков. Эти загрузчики во мно ЗАМЕТКУ напоминают LILO и отличаются от него лишь некоторыми деталями. Опи сания этих загрузчиков можно найти в документации на конкретные дистрибу тивные пакеты.

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

Откройте файл conf в текстовом редакторе.

Глава 1. Настройка сетевых средств ядра 2. Продублируйте строки файла, описывающие текущее ядро, используемое по умол чанию. Первая из этих строк начинается символами Описание ядра про должается до конца файла либо до тех пор, пока не встретится выражение image= или В листинге ядро описывается в последних четырех строках.

3. Модифицируйте строку так, чтобы она указывала на новый файл яд ра. Например, вместо выражения включите выражение (Во многих дистрибутивных пакетах Linux по умолчанию загружается файл ядра 4. Измените строку label= для нового указав после символа = новое значение, например mykernel или 2417. Это значение позволит отличать новое ядро от прежнего. В процессе загрузки вам будет предложено выбрать имя требуемого ядра в меню или ввести его в командной строке.

5. Сохраните внесенные изменения.

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

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

При следующей загрузке компьютера LILO предложит вам указать, какое ядро долж но использоваться при работе системы. В зависимости от настройки, вы сможете либо выбрать ядро в меню, либо указать имя ядра в строке после символов Если качество нового ядра устраивает вас, модифицируйте файл так, что это ядро будет загружаться по умолчанию. Для этого надо изменить строку Измените текст после знака =, указав имя нового ядра, которое вы присвоили ему в п. 4, а затем в командной строке снова вызовите lilo.

Ядро Linux можно загрузить без использования LILO. В некоторых дистрибутивных пакетах вместо LILO содержится загрузчик Grand Unified Boot Loader (GRUB). Особен ности конфигурирования GRUB описаны в документации на этот загрузчик. Кроме того, для загрузки Linux также можно использовать DOS-программу LOADIN. Чтобы такая за грузка стала возможной, надо скопировать ядро на диск, доступный из DOS, например, в раздел DOS или на гибкий диск. Для загрузки Linux надо ввести следующую команду:

LOADIN ro В данном примере BZIMAGE Ч это имя файла ядра, который доступен из DOS, a Ч идентификатор корневого раздела, используемый в Linux. Опция ука зывает на то, что данный раздел должен монтироваться в режиме, допускающем только чтение (впоследствии Linux повторно смонтирует этот раздел в режиме чтения и записи).

LOADIN Ч удобный инструмент, позволяющий тестировать новые версии ядра, не изме няя настройку LILO. Кроме LOADIN дает возможность загрузить Linux, если LILO поврежден. Если на вашем компьютере отсутствует система DOS, вы можете воспользо ваться системой FreeDOS f reedos. org), которая также позволяет вы полнить данную задачу. Утилита LOADIN входит в состав большинства дистрибутивных версий Linux. На компакт-диске она обычно располагается в каталоге dosutils.

50 Часть I. Низкоуровневая конфигурация системы Резюме Ядро Linux непосредственно участвует в выполнении всех операций ввода-вывода, в частности в передаче данных по сети. Если компьютер под управлением Linux пла нируется подключать к сети, необходимо установить соответствующие опции ядра. Вы можете оптимизировать ядро для выполнения конкретной задачи, включив необходимые опции и отключив средства, которые не используются, а лишь напрасно занимают опера тивную память компьютера. Большинство опций, отношение к взаимодействию по сети, располагаются в двух меню: Networking Options и Network Device Support. Эти меню ряд подменю. Установив требуемые опции, надо скомпилировать ядро системы, для чего необходимо выполнить несколько команд. Для того чтобы обеспечить загрузку ядра, следует изменить конфигурацию LILO.

Глава Настройка сетевых средств TCP/IP Несмотря на то что ядро является главным компонентом системы Linux и помимо выполнения прочих задач контролирует процесс обмена данными по сети, настройка си стемы для работы в сети не исчерпывается конфигурированием ядра. В данной главе рассматриваются вопросы, имеющие непосредственное отношение к организации сете вого взаимодействия: использование статических IP-адресов, а также применение прото колов DHCP (Dynamic Host Configuration Protocol Ч протокол динамической настройки узла) и РРР (Point-to-Point Protocol). Протокол DHCP позволяет организовать автоматиче ское выделение IP-адресов, а протокол РРР обеспечивает соединение по коммутируемой линии. При использовании статических IP-адресов приходится устанавливать конфигура цию соответствующих компонентов системы вручную. Существует большое количество инструментальных средств, упрощающих как автоматическую, так и ручную установ ку конфигурации системы. Если вы собираетесь выполнять работы по администриро ванию системы, вам следует ознакомиться с этими инструментами. Однако, перед тем как приступать к обсуждению вопросов, связанных с настройкой системы, необходимо рассмотреть процесс загрузки сетевых драйверов.

Загрузка сетевых драйверов Первым шагом в настройке сетевых устройств является загрузка соответствующих драйверов. Как было сказано в главе драйверы подготавливаются к работе одним из двух способов: драйвер может быть непосредственно включен в состав ядра Linux либо скомпилирован в виде отдельного модуля. В первом случае загрузка сетевого драйве ра не вызывает затруднений. Драйверам некоторых сетевых карт приходится передавать параметры, используя для этого опции загрузки. Если вы применяете LILO, параметры передаются посредством опции append, содержащейся в файле На пример, приведенная ниже строка сообщает ядру о том, что устройство ethO (первая сетевая карта) подключено через порт с номером 0x240.

52 Часть Низкоуровневая конфигурация системы После ключевого слова append можно указать несколько значений, поместив их в ка вычки и разделив пробелами. Указание порта для конкретного устройства чаще всего ис пользуется в системах, содержащих несколько сетевых интерфейсов;

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

Если драйвер скомпилирован как отдельный модуль, параметры передаются ему по средством файла /etc/modules.conf (в некоторых системах этот файл имеет имя /etc/conf Например, данный файл может содержать следующие строки:

alias ne options ne io=0x Приведенные выше две строки сообщают системе о том, что для устройства ethO, подключенного через порт ввода-вывода 0x240, должен использоваться драйвер, содержа щийся в модуле пе. В большинстве случаев в подобном указании нет необходимости. Оно нужно в основном тогда, когда в системе присутствует несколько сетевых интерфейсов.

Инструментальные средства настройки, содержащиеся в составе многих дистрибутивных пакетов, позволяют автоматизировать этот процесс. Вам достаточно выбрать из спис ка модель сетевой карты и драйвер, после чего требуемые записи будут автоматически включены в файл /etc/modules включили требуемую запись в файл /etc/modules. то при попытке активизировать сетевой интерфейс система Linux автоматически загрузит сетевой драй вер. Если по каким-либо причинам вы хотите сделать это вручную, воспользуйтесь ко мандой # insmod ne В результате выполнения этой команды модуль пе будет загружен и готов к ис пользованию. Если средства автозагрузки модулей работают ненадежно, вам, возмож но, придется включить указанную выше команду в файл или В некоторых случаях передача данных происходит с помощью протоколов РРР, SLIP или PLIP, а компьютеры соединяются через последовательные или параллельные пор ты. При этом приходится отдельно загружать драйвер, предназначенный для управления устройством, и драйвер, поддерживающий протокол обмена данными. Такие драйверы подготавливаются так же, как и драйверы сетевых карт: они либо встраиваются непосред ственно в ядро, либо компилируются в виде отдельных модулей. В некоторых случаях требуются дополнительные драйверы. Например, для использования модема, подключен ного через интерфейс USB, требуются два или три драйвера.

Использование клиента DHCP Если в вашей локальной сети присутствует сервер DHCP, вы можете сконфигуриро вать систему Linux так, что компьютер будет автоматически получать у сервера IP-адрес, используя для этого клиентскую программу DHCP. Клиент DHCP ищет сервер DHCP, посылая в широковещательном режиме запрос, который принимают все компьютеры ло кальной сети. Если сервер отвечает на запрос и последующие переговоры заканчиваются Глава 2. Настройка сетевых средств TCP/IP Network This dialog allows you to configure your IP device address.

You can select Choose the setup ftiethcd dynamic address if you have a DHCP server running on your local You also Subnet mask should select this if you do not have a static IP address assigned to you by your cable or DSL Detailed settings provider. Network addresses will then be obtained automatically from the server.

Configuration will be finished by clicking the Next button.

Рис. 2.1. Специальные инструменты с графическим пользовательским ин терфейсом упрощают использование клиента DHCP успешно, то система получает IP-адрес, кроме того, выполняются настройки, необходи мые для осуществления сетевого обмена.

Если вы хотите, чтобы ваш компьютер действовал как сервер DHCP, т. е. предо НА ставлял IP-адреса другим системам, вам надо внимательно прочитать главу 5.

Серверу DHCP должен быть присвоен статический IP-адрес.

Большинство дистрибутивных пакетов Linux позволяет включать поддержку DHCP в процессе инсталляции системы, в частности, при настройке сетевых средств. Если соответствующая опция отсутствует или если вы хотите изменить конфигурацию систе мы после ее инсталляции, проще всего сделать это, используя специальный инструмент с графическим пользовательским интерфейсом. К таким инструментальным средствам относятся Linuxconf (Red Hat или Mandrake), COAS YaST и YaST2 (SuSE).

На рис. 2.1 показано окно YaST2 с установленной опцией Automatic address setup (via DHCP). В результате установки данной опции система настраивается для получения IP адресов посредством DHCP.

К сожалению, при настройке средств DHCP иногда возникают проблемы;

некоторые из них описаны ниже.

Х Несовместимый клиент DHCP. В системе Linux применяются четыре клиента DHCP: pump, dhclient, dhcpxd и dhcpcd (обратите внимание на различия меж ду именами последних двух клиентов и именем сервера DHCP dhcpd). В большин стве случаев все четыре клиентские программы работают корректно, но в некоторых сетях могут использоваться серверы DHCP, несовместимые с некоторыми клиента ми DHCP, применяемыми в системе Linux. Если возникнет подобная ситуация, вам придется заменить клиент-программу DHCP на другую.

54 Часть I. Низкоуровневая конфигурация системы Х Несовместимые опции DHCP. В некоторых случаях причиной возникновения про блем могут быть опции, передаваемые клиенту DHCP. Несовместимые опции про являют себя так же, как и несовместимые клиент-программы, но для устранения неисправности в этом случае требуются менее радикальные меры. Вам достаточ но отредактировать сценарий, используемый для запуска DHCP, и изменить опции.

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

Х нескольких сетевых карт. Если в вашем компьютере установ лены две сетевых карт (NIC Ч network interface card), может возник нуть необходимость использовать клиент DHCP для получения IP-адресов лишь для некоторых из этих карт. Возможно, вы захотите, чтобы для каких-либо карт часть информации (например, адрес шлюза) не принималась во внимание. В этом случае вам также придется отредактировать сценарий запуска DHCP, либо написать соб ственный сценарий, который изменял бы автоматически выбранную конфигурацию.

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

(Инструмент up для Debian, в отличие от одноименных файлов, используемых други ми системами, представляет собой программу, в которой реализованы средства настройки клиента DHCP. Управлять работой программы up можно, изменяя содержимое конфи гурационного файла /etc/network/interfaces.) Если клиент DHCP, с которым вы предпочитаете работать, отсутствует в дистрибутивном пакете, вы все равно можете установить и использовать Возможно, вам придется внести некоторые изменения в сценарий запуска, расположение которого приведено в табл. 2.1, или самостоятельно реализовать процедуру запуска клиента DHCP.

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

если вы используете программу dhcpcd, вам придется добавить опцию -h Часто в сценариях используются данные из конфигурационного файла (их расположение также приведено в табл. 2.1), однако чаще всего эти файлы сообщают системе, следует ли использовать статические IP-адреса или надо воспользоваться DHCP.

Использование статических IP-адресов Несмотря на то что система DHCP используется во многих сетях, в ряде случаев при ходится выделять IP-адреса другими способами. Некоторым компьютерам (например, на которых выполняются серверы DHCP) чрезвычайно трудно присваивать адреса с помо щью DHCP. Кроме того, сервер DHCP попросту может отсутствовать в сети. В подобных случаях приходится распределять IP-адреса вручную. Средства для решения данной зада Таблица 2.1. Информация о клиентах DHCP для наиболее популярных дистрибутивных пакетов Linux Версия Linux Клиент DHCP Альтернативный Сценарий запуска Дополнительные конфигурационные файлы no умолчанию клиент DHCP клиента DHCP Caldera OpenLinux dhclient Отсутствует ig/ Server 3. Debian GNU/ pump dhcpcd Linux 2.2 (двоичный файл) Linux Mandrake dhcpcd dhclient, dhcpxd /sbin/ifup ifcfg-ethO Red Hat Linux 7.2 pump dhcpcd /sbin/ifup ifcfg-ethO Slackware Linux 8.0 dhcpcd Отсутствует Отсутствуют SuSE Linux 7.3 dhcpcd dhclient dhclient TurboLinux 7 dhclient Отсутствует /sbin/ifup ifcfg-ethO 56 Часть I. Низкоуровневая конфигурация системы чи рассматриваются в данном разделе. Кроме того, далее в этой главе рассказывается, как настроить систему, чтобы ее конфигурация автоматически устанавливалась при загрузке.

компьютерам, на которых выполняются программы-серверы, при сваивают статические IP-адреса;

при этом адрес не изменяется с течением вре мени. Кроме того, связывание статических IP-адресов с доменными именами не вызывает трудностей. (Вопросы функционирования серверов DNS и установле ния соответствия между IP-адресами и доменными именами рассматриваются в главе 18.) Чтобы связать доменное имя с динамическим IP-адресом, вам надо обеспечить, чтобы сервер DHCP выделял компьютеру один и тот же адрес (как это сделать, вы узнаете в главе 5), либо использовать динамические средства DNS.

Настройка сетевых интерфейсов Загрузка драйвера Ч это лишь первое действие, которое надо выполнить, чтобы обес печить доступ к сетевому интерфейсу. Для того чтобы интерфейс можно было исполь зовать, ему необходимо присвоить IP-адрес и выполнить дополнительные настройки, на пример задать маску подсети. Для решения этой задачи используется утилита if conf ig, которая, в зависимости от способа ее вызова, либо отображает информацию об интер фейсе, либо изменяет его конфигурацию.

Использование ifconfig Синтаксис ifconfig достаточно прост. Для вызова данной утилиты надо задать в командной строке следующее выражение:

ifconfig [опции] Набор передаваемых параметров определяет поведение Данная утилита может выполнять следующие действия.

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

Х Если данной утилите передано только имя интерфейса (например, или то она возвращает информацию лишь о состоянии этого интерфейса.

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

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

Х up адрес. Данная опция активизирует интерфейс и связывает с новым интер фейсом указанный IP-адрес. Если в составе команды не указана маска подсети, используется маска, определяемая исходя из класса адреса (классы IP-адресов опи саны в табл. 2.2). В большинстве случаев ключевое слово up можно не указывать;

Глава 2. Настройка сетевых средств TCP/IP Таблица 2.2. Классы IP-адресов и соответствующие им маски подсети Класс адресов Адреса, Маска подсети для внутреннего использования>

Х down. Эта опция противоположна опции up, т. е. она делает интерфейс неактивным ("закрывает" его).

Х Данная опция устанавливает маску подсети для интерфейса. Маска подсети определяет, какое число битов в составе IP-адреса выделяется для представ ления адреса сети;

остальные биты адреса идентифицируют компьютер в составе сети. Если данная опция не указана, по умолчанию принимается маска подсети, определяемая на основании адреса (табл. 2.2). Маску подсети можно также задать с помощью опции up адрес как число бит, соответствующих адресу сети.

Х По умолчанию сетевая карта принимает только те пакеты, которые непосредственно адресованы ей. Данная опция включает (promise) или отключа ет так режим сбора пакетов, резким прослушивания (promiscuous mode), в котором карта принимает все пакеты, передаваемые по сети.

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

Х mtu п. Данная опция устанавливает значение MTU (Maximim Transfer Unit Ч мак симальный размер передаваемого блока), т. е. максимальный размер пакета нижнего уровня. Для сетей Ethernet значение MTU обычно принимается равным но при необходимости вы можете изменить (Ряд маршрутизаторов использует мень шее значение MTU, кроме того, некоторые протоколы накладывают ограничения на величину MTU. Если установленный в системе максимальный размер пакета превышает предельно допустимое значение для сети, это приводит к снижению производительности, так как перед передачей пакет разбивается на кадры меньшего размера.) Х add Данная опция выполняет те же действия, что и опции up и netmask, но она ориентирована на протокол IPv6. (Протокол IPv представляет собой новый стандарт обмена данными в Internet.) Как было сказано в главе IPv6 поддерживает значительно больше адресов, чем IPv4. На момент написания данной книги, т. е. в 2002 г., этот протокол еще использовался очень редко.

Х del адрес/ Эта опция противоположна опции add, т. е. она отменяет присвоенный ранее интерфейсу.

58 Часть I. Низкоуровневая конфигурация системы Х media тип. Некоторые сетевые карты допускают подключение нескольких разъ емов (например, 10Base-2 и 10Base-T). Данная опция позволяет определить, какой разъем должен использоваться (например, media Подробную инфор мацию о поддерживаемых типах разъемов можно найти в описании конкретного драйвера.

Х hw класс адрес. Данная опция позволяет задавать аппаратный адрес сетевой карты. Если вам потребовалось заменить сетевую карту, но вы хотите, чтобы сервер DHCP продолжал выделять тот же IP-адрес, вам надо воспользоваться данной оп цией и задать для новой карты аппаратный адрес, использовавшийся ранее. Бывают также случаи, когда разные производители выпускают карты с одинаковыми адре сами. Такие устройства нельзя использовать в рамках одной локальной сети;

в этом случае опция hw также может оказаться полезной. Данная опция предполагает два значения: класс сетевого устройства (например, ether для Ethernet или для ARCnet) и аппаратный адрес. Заметьте, что на некоторые сетевые карты данная опция не оказывает влияния.

Х длина. Эта опция задает длину очереди, т. е. число пакетов, ожидаю щих передачи через определенный интерфейс. По умолчанию принимается значение 100, что в большинстве случаев обеспечивает нормальную работу сети. Уменьшая длину очереди, можно несколько увеличить скорость обмена посредством таких протоколов, как Telnet и SSH.

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

# ethO 172.23.45. Добавляя дополнительные параметры, можно уточнить конфигурацию интерфейса.

# ethO 172.23.45.67 mtu Как было сказано выше, маска подсети определяет, какая часть IP-адреса должна пред ставлять адрес сети, а какая Ч адрес компьютера в этой сети. Компьютер использует эту информацию для определения адресов назначения исходящих пакетов;

если установить маску подсети неправильно, некоторые компьютеры будут не доступны. Если предста вить маску подсети в двоичном нетрудно заметить, что она начинается последо вательностью единиц, за которой следует последовательность нулей. Например, маска 255.255.255.0 состоит из 24 единиц и восьми нулей. Вместо указания маски можно задать в составе адреса число битов, используемых как адрес сети. Информация о числе битов, представляющих адрес подсети, отделяется от основной части IP-адреса косой чертой. На пример, соответствует адресу 172.23.45.67 и маске подсети 255.255.255.0.

Такое выражение можно использовать при вызове утилиты if conf ig в составе опции up адрес;

в этом случае опцию netmask можно не указывать.

Глава 2. Настройка сетевых средств TCP/IP Классы IP-адресов Х В качестве примеров IP-адресов в данной книге используются зарезервированные адре са, предназначенные для это для чтобы неопытные читатели случайно не использовали адреса узлов глобальной сети. Для внутренних сетей зарезервированы адреса (класс С), 172.16.0.0-172.31.255.255 (класс В) и 10.х.х.х (класс А). Узлы с такими адресами га рантированно отсутствуют в Х Х В дополнение к классам А, В и С, описанным в табл. 2.2, также адресов D и Е. Адреса класса D применяются для группового вешания пакет адресуется сразу нескольким узлам), а адреса класса для дальнейшего использования.

В 2.2 приведены маски подсетей для различных классов адресов. G начала этот стандарт стал претерпевать некоторые изменения. Дело в том, что, согласно тради ционной схеме распределения IP-адресов, предусмотрено слишком много сетей класса А, каждая из которых может насчитывать больше десяти миллионов в то время как число сетей класса С оказывается недостаточным. Спецификация CIDR (Classless Inter-Domain Routing Ч бесклассовая междоменная маршрутизация) позволя ет задавать произвольные диапазоны IP-адресов, для этого маски подсетей.

Так, например, организации, которой требуются две сети класса быть предо ставлены адреса 10.34.56.0/24 и Благодаря такому адреса используются гораздо эффективнее, традици онная схема, предусматривающая классы А, В и С. Однако при сетей и пользователи должны следить за назначением масок подсетей.

Если, например, утилите самостоятельно назначить маску подсети для компьютера 10.34,56.78, то по умолчанию будет маска 255.0.0.0 и маршрутизация будет выполняться некорректно. Очевидно, что для сети 10.34.56.0/24 маска подсети должна иметь значение Настройка нескольких сетевых интерфейсов Если компьютер содержит несколько сетевых интерфейсов, утилиту ig надо вызвать для каждого из интерфейсов. Рассмотрим следующие команды:

# ethO up ethl up В результате их выполнения с интерфейсом ethO связывается адрес 192.168.1.1, интерфейсом ethl Ч адрес 172.23.45.67;

для ethl будет использоваться маска подсети 255.255.255.0. Оба интерфейса работоспособны. Но как определить, через какой интер фейс следует передавать тот или иной пакет? Предположим, что прикладная программа, выполняющаяся на этом компьютере, должна установить соединение с узлом, имеющим адрес 10.9.8.7. Как узнать, на какой надо передать пакет, предназначенный этому узлу? Для решения этой задачи (задачи маршрутизации) таблицы маршрутизации. Как вы вскоре увидите, задачу маршрутизации приходится решать, даже если на компьютере присутствует лишь один сетевой интерфейс.

60 Часть I. Низкоуровневая конфигурация системы Заполнение таблицы маршрутизации Таблица маршрутизации выполняет две задачи. Во-первых, она сообщает системе, на какой из интерфейсов следует передавать информационные пакеты. На первый взгляд может показаться, что если на компьютере установлен лишь один сетевой интерфейс, то ответ на этот вопрос очевиден. На самом деле это не так. Дело в том, что на каждом из компьютеров, работающих под управлением системы Linux, поддерживается интер фейс обратной петли. Этот интерфейс соответствует сети 127.0.0.0/8, но реально при работе с ним используется лишь один IP-адрес Поскольку этот интерфейс при сутствует на всех компьютерах, многие программы используют для взаимодействия с другими локальными программами. При этом обеспечивается более высокая скорость обмена, чем при использовании традиционных сетевых интерфейсов. Для того чтобы распределять трафик между интерфейсом локальной петли и обычными сетевыми интер фейсами, существуют специальные правила. Вторая задача, которую выполняет табли ца маршрутизации, состоит в управлении трафиком, предназначенным для компьютеров в локальной сети. Для маршрутизации в локальной сети используется протокол (Address Resolution Protocol Ч протокол преобразования адресов). Пакеты, предназначен ные узлам локальной сети, непосредственно передаются соответствующим компьютерам, а пакеты, адресованные удаленным узлам, передаются посредством маршрутизатора, или шлюза. В большинстве случаев в таблице маршрутизации Linux указывается лишь один шлюз, но встречаются также более сложные конфигурации с несколькими шлюзами. Для заполнения таблицы маршрутизации используется команда route.

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

этот процесс повторяется до тех пор, пока пакет не прибудет по назначению.

Pages:     | 1 | 2 | 3 | 4 | 5 |   ...   | 14 |    Книги, научные публикации