Посвящается жертвам 11 сентября 2001 года. Надеюсь, что добро все же одержит победу над злом.
Компьютерные сети изменили нашу жизнь. Они были почти незаметны в 1970-х и даже в 1980-х. Однако в начале 1990-х годов что-то произошло. Возможно, это было появление World Wide Web и графических Web-броузеров, благодаря которым Internet пришла во многие семьи. Возможно, число сетевых соединений превысило какой-то критический предел. Может быть, этот предел превысило количество сетевых программ. Как бы то ни было, сейчас о сетях знают все. А самое главное, что каждый знает о существовании Internet.
Internet объединяет миллионы компьютеров, на многих из которых выполняются серверы — программы, принимающие запросы от клиентов и обрабатывающие их. Благодаря тому что протоколы, на которых базируется Internet, допускают межплатформенное взаимодействие, в обмене данными могут участвовать клиенты и серверы, выполняющиеся на различных компьютерах и в разных операционных средах. В последние годы одной из самых популярных операционных систем стала Linux. Установленная на недорогом компьютере x86, система Linux обеспечивает эффективную работу серверов, поддерживающих узлы небольшого и среднего размеров. С увеличением производительности компьютеров появляется возможность выполнения в среде Linux серверов, обрабатывающих большие объемы данных. В результате от системного администратора часто требуется умение настраивать систему Linux и серверы, выполняющиеся в ее среде.
На каких же серверах следует остановить свой выбор? Существуют сотни, если не тысячи, серверных программ. В большинстве книг, посвященных системе Linux, основное внимание уделяется нескольким популярным серверам: HTTP-серверу (обычно это Apache), серверам удаленной регистрации, таким как Telnet и SSH, файловым серверам, примерами которых являются NFS и Samba, и некоторым другим типам серверов. В данной книге рассматриваются самые различные серверы. Разнообразие рассматриваемых вопросов не дает возможности подробно изучить работу и особенности настройки каждого из серверов, но все же приведенной информации достаточно, чтобы обеспечить выполнение соответствующих программ. Помимо наиболее популярных серверов, в настоящей книге также рассматриваются средства, которым обычно уделяется мало внимания, но которые, тем не менее, чрезвычайно важны для нормального функционирования сети. Так, например, здесь есть главы, посвященные DHCP-серверу, временному серверу и системе Kerberos. В данной книге не излагаются основы функционирования сетей. Считается, что читатель уже имеет представление о сетевых средствах и собирается повысить свою квалификацию.
Главы, в которых описываются сложные серверы, такие как Apache и Samba, не содержат исчерпывающего их описания. За общей информацией об этих инструментах следует рассмотрение их расширенных функций, ориентированное на администратора, имеющего некоторый опыт работы. Новичкам, прежде чем изучать эти главы, желательно прочитать книги, содержащие вводный курс администрирования данных серверов.
Данная книга содержит расширенные сведения о сетевых средствах Linux и ориентирована на специалистов, которые уже работали с сетями и системой Linux. Первые главы содержат сведения о настройке низкоуровневых сетевых средств Linux. Чтобы материал этих глав был понятен, надо иметь общее представление о Linux, или, по крайней мере, о UNIX, и знать терминологию, применяющуюся при описании сетевых средств. Если же вы не знакомы с системой Linux, вам имеет смысл прочитать вводные материалы, например, книгу Марселя Гагне (Marcel Gagnе) Linux System Administration: A User's Guide (Addison-Wesley, 2002) или нашу с Вики Стенфилдом (Vicki Stanfield) книгу Linux System Administration (Sybex, 2001).
Если вы хотите больше узнать о таких серверах, как Apache и Samba, но не собираетесь покупать книгу, полностью посвященную одному продукту, либо если вы хотите получить сведения о небольших, но очень важных серверах, таких как xntpd и xfs, эта книга — для вас. В ней вы также найдете многочисленные практические советы, например, о том, как запустить сервер и завершить работу с ним, как создать резервную копию информации в сети, как ограничить сферу действий сервера поддеревом
chroot
, как построить брандмауэр, и т.д. Эти сведения позволят вам по-новому взглянуть на процесс администрирования вашей сети и, возможно, повысить производительность и надежность ее работы.
При написании данной книги я ориентировался на администраторов сетей небольшого и среднего размеров. В такой сети могут присутствовать компьютеры под управлением UNIX, Windows, MacOS и других операционных систем, и, конечно же, к ней подключена хотя бы одна машина Linux. В большинстве глав описываются общие принципы работы того или иного инструмента, а затем приводится информация о его использовании. Эту книгу можно использовать как справочное пособие. Если вы хотите иметь книгу, в которой описаны самые разнообразные сетевые средства Linux, то вы держите ее в руках.
Одна из причин возникновения проблем при администрировании Linux состоит в том, что Linux нельзя рассматривать как единую операционную систему; это скорее набор систем, созданных на базе одного ядра. Разновидности Linux называют версиями или дистрибутивными пакетами. В состав дистрибутивного пакета входят ядро, инсталляционная программа, ориентированная на данную версию Linux, набор утилит, специальных инструментов, пользовательских программ и т.д. Кроме того, любой дистрибутивный пакет включает сценарии; некоторые из них предназначены для запуска серверов, другие — для настройки компонентов системы. В разных дистрибутивных пакетах содержатся разные версии ядра и различные наборы инструментальных средств. При инсталляции некоторых дистрибутивных пакетов часто устанавливаются специальные серверы, например почтовый сервер, в роли которого, в зависимости от версии Linux, выступают программы
sendmail
, Exim
или Postfix. Характерные черты каждой версии Linux накладывают свой отпечаток на работу с ней и особенно на ее администрирование.
Во многих книгах игнорируются различия между разными версиями Linux. Основное внимание в них уделяется одному дистрибутивному пакету, а остальные упоминаются лишь время от времени. При написании этой книги я ставил перед собой цель более или менее подробно описать все популярные версии. В частности, здесь рассматриваются особенности Caldera OpenLinux 3.1, Debian GNU/Linux 2.2, Mandrake 8.1, Red Hat 7.2, Slackware 7.0, SuSE 7.3 и TurboLinux 7.0. У меня не было возможности детально рассмотреть каждую систему, я старался привлечь внимание читателя к главным различиям между ними. Так, например, в книге вы найдете сведения о том, какие средства используются в каждой версии Linux для запуска серверов, какие программы обеспечивают FTP-взаимодействие, и т.д. В некоторых главах рассматриваются различные программы, реализующие конкретный тип сервера. Сделано это для того, чтобы вы могли составить представление о различиях в конфигурации, устанавливаемой по умолчанию в разных дистрибутивных пакетах.
Книга состоит из четырех частей, в каждой из которых содержится от четырех до тринадцати глав. Серверы, использующиеся для обслуживания локальных пользователей, и серверы, применяемые для организации взаимодействия по Internet, описаны в разных частях. Однако следует заметить, что некоторые серверы могут применяться в различных целях. Ниже кратко описано содержание каждой части.
Часть I. Эта часть короче других; она содержит лишь четыре главы. В ней описана настройка ядра системы, приведены общие сведения о конфигурации средств TCP/IP, стеках протоколов и сценариях запуска.
Часть II. В этой части рассматриваются серверы, к которым, вероятнее всего, будут обращаться лишь компьютеры вашей локальной сети. В ней обсуждаются сервер DHCP, система Kerberos, серверы Samba и NFS, организация печати с помощью LPD, временные серверы, почтовые серверы POP и IMAP, серверы новостей, серверы удаленной регистрации, система X Window и сервер VNC, сервер шрифтов, сервер удаленного администрирования и средства резервного копирования.
Часть III. Эта часть посвящена рассмотрению серверов, используемых для работы в Internet. В ней представлены сведения о серверах DNS, почтовых серверах, поддерживающих протокол SMTP, Web- и FTP-серверах.
Часть IV. В этой части обсуждаются вопросы сетевой безопасности. Здесь рассматриваются общие вопросы защиты, средства для создания поддерева
chroot
, настройка специальных функций маршрутизатора, создание брандмауэров с помощью iptables
, средства NAT и настройка VPN.
Чтобы упростить восприятие излагаемого материала, в книге приняты следующие соглашения.
Основной текст отображается обычным пропорциональным шрифтом.
Курсивом представлены термины, встречающиеся впервые. Кроме того, курсив используется для отображения текстовых описаний, заменяющих значения опций, поля записей и другие фрагменты кода.
Моноширинным шрифтом
выделены имена файлов и узлов сети, фрагменты программного кода, содержимое конфигурационных файлов, команды, введенные с клавиатуры, и текст, выводимый на экран при выполнении программы.
Если в тексте встречается команда, вводимая с клавиатуры, в начале строки отображается приглашение для ввода. Символ
#
свидетельствует о том, что команду задает пользователь root
(иногда встречаются исключения из данного правила). Если в роли приглашения для ввода выступает символ $
, это означает, что команду вводит обычный пользователь. Некоторые команды могут занимать несколько строк. Признаком того, что продолжение команды находится на следующей строке, является символ \
. Вы можете вводить команду точно так, как она приведена в книге, либо отказаться от использования обратной косой черты и задавать команду в одной строке.
В книге также встречаются специальные фрагменты текста, занимающие один или несколько абзацев. В них приводится информация, имеющая лишь косвенное отношение к излагаемому материалу, либо, напротив, замечания, на которые следует обратить особое внимание. Эти фрагменты выделяются следующим образом.
Так оформляются сведения, которые не имеют непосредственного отношения к вопросам, рассматриваемым в тексте, но могут быть полезны для читателя. Это может быть, например, информация об особенностях работы ранних версий программ.
Данные, выделенные таким образом, помогут вам решить задачу неочевидным способом. Здесь может быть указана, например, ссылка на программный продукт, редко упоминаемый в других источниках.
Так оформляется предупреждение об опасности, связанной с теми или иными действиями. Это может быть, например, информация о программах, которые при некорректном использовании способны повредить систему, рекомендации воздержаться от действий, не соответствующих политике провайдера, или сведения об особенностях конфигурации, которые могут быть использованы для незаконного проникновения в систему.
Врезка во многом похожа на фрагмент "На заметку", но объем ее значительно больше, она занимает как минимум два абзаца. В ней приводятся сведения, которые трудно включить естественным образом в текст раздела, но которые, тем не менее, интересны, связаны с текущим материалом и могут быть важны для читателя.
При обсуждении вопросов сетевого взаимодействия часто бывает необходимо указать 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.
Если во время чтения книги у вас возникнут вопросы, вы можете обратиться ко мне по адресу
rodsmith@rodsbooks.com
. Я также поддерживаю Web-страницу, посвященную данной книге, которая находится по адресу http://www.rodsbooks.com/adv-net/
.
Я хочу выразить благодарность редактору Кэрен Геттмен (Karen Gettman) за кропотливую работу, выполненную при подготовке данной книги к печати. В этом ей помогала координатор проекта Эмили Фрей (Emily Frey), которая сделала ряд ценных замечаний относительно текста книги. Ни одна техническая книга не может увидеть свет без помощи консультантов, которые помогают убедиться, что при изложении материала автор не погрешил против истины. Консультантами при подготовке этой книги к печати были Кэрел Белоун (Karel Baloun), Эми Фонг (Amy Fong), Говард Ли Хекнесс (Howard Lee Harkness), Гарольд Хоук (Harold Hauck), Эрик X. Херрин (Eric H. Herrin II), Дэвид Кинг (David King), Роб Колстэд (Rob Kolstad), Мэтью Миллер (Matthew Miller), Айэн Редферн (Ian Redfern) и Элекси Зинин (Alexy Zinin). После их работы над текстом в книге не могло остаться ни одной ошибки, если же такая будет обнаружена, то она, несомненно, была допущена лично мною. Я хочу также поблагодарить Дэвида Кинга (David King) за участие в многочисленных и плодотворных дискуссиях о сетевых средствах Linux. И, наконец, я выражаю благодарность моему агенту Нейлу Селкинду (Neil Salkind) из Studio В и Майклу Слоутеру (Michael Slaughter) из Addison-Wesley, стараниями которых эта книга попала в руки читателей.