I низкоуровневая конфигурация системы



Скачать 268.02 Kb.
Pdf просмотр
страница1/3
Дата22.11.2016
Размер268.02 Kb.
Просмотров263
Скачиваний0
  1   2   3

ЧАСТЬ I
Низкоуровневая конфигурация
системы

Глава 1
Настройка сетевых средств
ядра
“Все дороги ведут в Рим” — гласит пословица. Нечто подобное можно сказать и о сетевых средствах Linux; в этом случае в роли Рима выступает ядро операционной системы. Рано или поздно весь сетевой трафик будет обработан ядром. Различные компьютеры и разные сети отличаются друг от друга, поэтому для ядра Linux предусмотрен ряд опций, изменяя значения которых вы можете оптимизировать системус у четом задач, которые ей придется выполнять. Установкунекоторых опций можно производить в процессе загрузки системы, передавая ядру необходимые параметры,
либо впоследствии, после окончания загрузки. Подобные опции будут рассмотрены в последующих главах. Существуют также характеристики, для изменения которых надо перекомпилировать ядро системы.
В данной главе описаны опции, которые задают конфигурацию ядра. Сначала здесь рассматри- вается процедура настройки ядра. Затем обсуждаются опции, которые определяют свойства TCP/IP
и других сетевых протоколов, а также сетевых фильтров. Далее речь пойдет о драйверах Linux,
предназначенных для поддержки различных сетевых устройств. В конце главы кратко описывается процесс компиляции ядра системы.
НА
ЗАМЕТКУ
В этой главе компиляция ядра рассматривается лишь в общих чертах, основное внима- ние уделяется опциям, определяющим характеристики сетевых средств системы. Если вы хотите получить более подробную информацию о конфигурации ядра системы, об- ратитесь к документу Linux Kernel HOWTO (http://www.linuxdoc.org/HOWTO/
Kernel-HOWTO.html
) либо к соответствующим книгам, представляющим собой вве- дение в операционную систему Linux.
Конфигурация ядра
Для того чтобы установить опции, определяющие процесс компиляции ядра, необходимо иметь в наличии исходный код ядра. Исходный код входит в состав всех дистрибутивных пакетов, но при установке системы можно либо разрешить, либо запретить копирование исходного кода на жест- кий диск компьютера. Следует заметить, что в некоторых случаях исходный код, поставляемый в составе дистрибутивного пакета, может быть изменен по сравнению со стандартным кодом ядра
(так, например, в состав кода могут быть включены специальные драйверы). Целесообразно внача- ле инсталлировать стандартное ядро, а затем, по мере необходимости, установить дополнительные модули (не исключено, что для выполнения ваших задач никакие дополнения не потребуются). Спи-

Глава 1. Настройка сетевых средств ядра
25
сок основных узлов, содержащих архивы Linux, находится по адресу http://www.kernel.org.
В частности, там вы найдете ссылкуна ftp://sunsite.unc.edu и адреса дру гих у злов, содер- жащих последние варианты исходного кода ядра Linux. (Конечно, вы можете работать с исходным кодом ядра, который входит в состав дистрибутивного пакета, но, как было сказано выше, в нем могут быть установлены дополнительные модули. Если в процессе работы возникнут проблемы, то устранить их будет легче, если у вас инсталлировано стандартное ядро.)
НА
ЗАМЕТКУ
Номер версии ядра системы состоит из трех чисел, разделенных точками. Если второе число четное (например, 2.4.17), то ядро называется стабильным, или рабочим. Нечетное второе число в номере версии (например, 2.5.2) указывает на то, что ядро находится в про-
цессе разработки. Стабильное ядро обеспечивает более высокую надежность. Используя ядро, находящееся в процессе разработки, вы получаете возможность ознакомиться с но- выми техническими решениями. Чаще всего в ядре с нечетным вторым числом номера версии используются новые драйверы, реализованы новые варианты интерфейса или применяются другие подобные новшества. Устанавливая систему для практического ис- пользования, желательно использовать ядро с четным вторым числом номера версии.
Исключением является ситуация, когда необходимый вам драйвер присутствует только в версии с нечетным вторым числом. В этом случае можно также использовать обратный
перенос (back-port) драйвера в однуиз предыдущих стабильных версий.
Обычно исходный код ядра содержится в каталоге /usr/src/linux либо в одном из под- каталогов /usr/src (при этом в имени каталога присутствует номер версии ядра, например
/usr/src/linux-2.4.17
). В последнем случае желательно создать ссылку /usr/src/linux,
указывающую на каталог с исходным кодом ядра. Если вы поступите так, то обеспечите нор- мальную работу программ, которые предполагают, что исходный код ядра содержится в каталоге
/usr/src/linux
. Таким образом, удобно работать с несколькими версиями исходного кода ядра,
а если надо перейти от одной версии к другой, достаточно лишь изменить символьную ссылку.
Разархивировав исходный код ядра в каталог /usr/src/linux, надо сделать это каталог рабочим в используемой вами оболочке. После этого можно задать одну из описанных ниже команд конфигурирования ядра.
• make config. Данное средство конфигурирования является базовым. При этом у вас пооче- редно будут запрашиваться значения опций ядра. Отвечать на вопросы утомительно и при этом легко допустить ошибку. В случае ошибки придется начать всю процедуру сначала.
Данная команда в настоящее время используется крайне редко.
• make menuconfig. Это средство конфигурирования предоставляет меню, позволяющее просматривать опции и задавать новые значения. Меню отображается в алфавитно-цифровом режиме. В этом случае изменить придется только те опции, значения которых не устраивают вас. При работе в текстовом режиме данное средство применяется чаще других.
• make xconfig.
Данный способ установки конфигурации аналогичен make menuconfig
, за исключением того, что меню отображается средствами графического ин- терфейса. В этом случае выбор опций и установку их значений можно выполнять с помощью мыши. Это средство установки конфигурации применяется при работе в среде X Window
(X Window иногда называют X).
Все три способа позволяют работать с одними и теми же опциями. Опции объединены в несколь- ко категорий; некоторые из категорий содержат подкатегории. Если вы используете make menuconfig или make xconfig, то для каждой категории отображается отдельное меню (пример работы с ок- ном, отображаемым по команде make xconfig, показан на рис. 1.1). При настройке сетевых средств в основном используются категории Networking Options и Network Device Support, кото- рые подробно рассматриваются в двух последующих разделах.
Для большинства опций предусмотрены переключатели. Примерами таких переключателей мо- гут служить Y, M и N, показанные на рис. 1.1. Y и N указывают на присутствие или отсутствие

26
Часть I. Низкоуровневая конфигурация системы
Рис. 1.1. Опции ядра Linux объединяются в категории и подкатегории, для каждой из которых предусмотрено отдельное меню опции в составе ядра, а M (сокращение от modular compilation — модульная компиляция) указывает на то, что соответствующие средства должны быть скомпилированы как отдельный модуль, которые можно загружать и выгружать независимо от других компонентов ядра. Боле подробно о настройке опций рассказывается ниже.
НА
ЗАМЕТКУ
Данная глава посвящена опциям версии 2.4.x ядра Linux, в частности, материал главы ориентирован на ядро 2.4.17. Опции, относящиеся к сетевым средствам, модифициро- вались раньше и, по-видимому, будут изменяться и в будущем. В версиях 2.2.x ядра опции в основном совпадают; различаются они лишь в деталях. В состав разрабаты- ваемого ядра 2.5.x включено инструментальное средство CML2, предназначенное для настройки. Дополнительную информацию об этом инструменте можно получить по ад- ресу http://tuxedo.org/
esr/cml2/.
Поддержка сетевых протоколов
Меню Networking Options содержит опции, влияющие на работусетевых протоколов. Вы мо- жете включить или исключить средства поддержки стека протоколов либо отдельных протоколов (в основном данные опции касаются семейства протоколов TCP/IP). Опции из этого меню позволяют также оптимизировать ядро для выполнения конкретных функций, например маршрутизации или фильтрации пакетов.

Глава 1. Настройка сетевых средств ядра
27
Опции для работы с пакетами и гнездами
Низкоуровневые сетевые средства Linux позволяют программам передавать и принимать фраг- менты данных, называемые пакетами, посредством специальных структур, которые называются
гнездами (socket). В большинстве случаев обмен данными через гнездо осуществляется по тому же принципу, что и обмен данными с файлом. Стек сетевых протоколов обеспечивает передачу информации по адресуназначения, где происходит ее интерпретация.
В некоторых случаях желательно и даже необходимо изменить принцип обработки данных;
иногда приходится расширять стандартный набор операций над пакетами. Сделать это позволяют специальные опции, рассмотрению наиболее важных из них посвящены разделы данной главы.
Некоторые из опций кратко описаны ниже.
• Packet Socket. Эта опция позволяет приложениям непосредственно обращаться к требу- емомупротоколу
, мину я некоторые уровни стека протоколов. Для большинства программ такая возможность не нужна; ее используют лишь инструментальные средства сетевой ди- агностики и специальные утилиты, действующие на нижнем уровне. В качестве примера подобных программ можно привести утилиту tcpdump, которая выводит информацию о па- кетах TCP и IP. Данная опция не обязательна. Она несколько увеличивает размер ядра и дает возможность злоумышленникам воспользоваться утилитами сетевой диагностики. С другой стороны, отключив данную опцию, вы не сможете воспользоваться целым рядом утилит.
• Packet Socket: Mapped IO. Если данная подопция Packet Socket включена, производитель- ность инструментальных средств, использующих низкоуровневые соединения, повышается.
• Unix Domain Sockets. Некоторые важные программы Linux используют сетевые протоколы для обмена данными даже в том случае, если они выполняются на одном и том же ком- пьютере. В качестве примеров можно привести средство протоколирования syslogd и про- граммы, выполняющиеся в среде X Window (X-программы используют сетевой протокол для взаимодействия с X-сервером, выполняющим отображение данных). Опция Unix Domain
Sockets допускает взаимодействие в пределах одной системы даже в тех случаях, когда на компьютере не установлено сетевое оборудование. Даже если средства поддержки сетево- го обмена присутствуют, опция Unix Domain Sockets обеспечивает более высокую скорость обмена по сравнению с обычными TCP-гнездами. Обычно данная опция устанавливается;
без нее обходятся лишь системы, предназначенные для выполнения на специализированных устройствах.
По умолчанию все три указанные опции устанавливаются. При необходимости вы можете запретить Packet Socket.
Опции сетевой фильтрации
Опции сетевой фильтрации блокируют или преобразуют пакеты, поступающие на компьютер или покидающие его. Данные опции используются при создании брандмауэров и выполнении
IP-маскировки (подробно эти вопросы будут обсуждаться в главе 25). Брандмауэры блокируют нежелательные обращения к компьютеруили сети, а IP-маскировка позволяет организовать работу в Internet пользователей всей локальной сети при наличии одного IP-адреса. Опции ядра системы,
предназначенные для фильтрации, перечислены ниже.
• Socket Filtering. В обычных условиях ядро направляет все пакеты, полученные через некото- рое гнездо, программе, которая создала это гнездо. Опция Socket Filtering позволяет указать ядруна то, что принятые пакеты должны быть сначала переданы небольшой программе (ко- торая называется фильтром). Эта программа способна блокировать некоторые из пакетов.
Как правило, программы могут работать без данной опции. Исключение составляют послед- ние варианты серверов DHCP и клиентов DHCP. Если в вашей сети используются средства
DHCP (Dynamic Host Configuration Protocol — протокол динамической конфигурации узла),
данная опция должна быть установлена.

28
Часть I. Низкоуровневая конфигурация системы
• 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-маскировки.
• IP Tables Support. Данная опция включает поддержкуядром утилиты iptables, исполь- зуемой для реализации брундмауэтов и осуществления IP-маскировки (эти вопросы будут подробно обсуждаться в главе 25). При установленной опции IP Tables Support становятся доступны подопции, позволяющие настроить средства поддержки iptables для выполне- ния конкретных задач. Многие из этих подопций задают соответствие ядра определенному типу, и их имена имеют вид Тип Match Support. Из них очень важна опция Connection State
Match Support
, которая позволяет осуществлять проверку пакетов с учетом состояния (state- ful packet inspection). Эта операция применяется в брундмауэрах и подробно рассматривается в главе 25. Также важны опции Packet Filtering, Full NAT и LOG Target Support и их по- допции. Установив данные опции, вы можете использовать ваш компьютер как брандмауэр или осуществлять IP-маскировку. Для независимой рабочей станции или сервера опцию Full
NAT
можно не указывать.
• ipchains (2.2-Style) Support. В некоторых случаях бывает необходимо обеспечить работу сце- нариев брандмауэра,
ориентированных на использование утилиты ipchains
(эта утилита применялась при работе с версиями ядра 2.2.x). Поддержку ipchains можно включить в том случае, если средства IP Tables Support не были скомпилированы непосредственно в ядро системы. (Средства iptables и ipchains выполняют прибли- зительно одинаковые действия, но они не совместимы друг с другом.) Если вы создаете брандмауэр с нуля, можете смело отключить поддержку ipchains.
• ipfwadm (2.0-Style) Support. При работе с версиями 2.0.x ядра для создания брандмауэров использовалось инструментальное средство ipfwadm. Чтобы использовать сценарии бранд- мауэра, ориентированные на ipfwadm, надо установить данную опцию. Следует помнить,
что средства поддержки ipfwadm не совместимы ни с iptables, ни с ipchains. Если вы не используете ipfwadm-сценарии либо твердо решили преобразовать их для работы с iptables, можете отказаться от установки данной опции.
По мере перехода от версий 2.0.x к версиям 2.4.x ядра Linux средства поддержки фильтрации пакетов становились все сложнее. В ядре 2.4.x предусмотрены многие дополнительные возмож- ности; создавая брандмауэр, важно активизировать те опции, которые необходимы для решения конкретной задачи. Если вы сомневаетесь, нужна ли та или иная опция из меню IP: Netfilter Con- figuration
, рекомендую вам установить ее. В этом случае объем ядра несколько возрастет, но вы получите возможность использовать различные правила брандмауэра.

Глава 1. Настройка сетевых средств ядра
29
ВНИМАНИЕ
!
Вам может показаться, что использовать правила брандмауэра на машине под управ- лением Linux не обязательно, особенно если она находится в сети, которая защищена выделенным брандмауэром. К сожалению, в системе защиты многих сетей есть недо- статки, поэтомудополнительные меры предосторожности не помешают. Возможно, вам потребуется установить на своем компьютере дополнительный простой брандмауэр.
Опции маршрутизации TCP/IP
Маршрутизатор — это компьютер, который непосредственно передает данные из одной сети в другую. Маршрутизаторы также часто называют шлюзами. Так, например, маршрутизатор может понадобиться для связи сети, принадлежащей отделубольшой корпорации, с корпоративной сетью.
Корпорация, в свою очередь, использует маршрутизатор для обеспечения связи своей сети с Internet.
Рассмотрению опций маршрутизации посвящена глава 24. Сейчас вам достаточно знать лишь то,
что для ядра Linux предусмотрен ряд опций, являющихся подопциями IP: Advanced Router.
Опции поддержки IPv6
Работа Internet обеспечивается за счет протоколов семейства TCP/IP, в частности, для передачи пакетов используется протокол IP (IPv4). К сожалению, на сегодняшний день уже невозможно игно- рировать тот факт, что версия IPv4 устарела. Для представления IP-адреса в IPv4 используется 32- разрядное число, т. е. общее число адресов равно 2 32
, или 4294967296. Вследствие неэффективности механизма распределения адресов реальное их количество оказывается намного меньшим. В ре- зультате возникла проблема нехватки IP-адресов. Кроме того, недостатки в защите IPv4 позволяют злоумышленникам вмешиваться в сеансы сетевого взаимодействия. На момент написания данной книги, т. е. в 2002 г., с проблемами, связанными с использованием IPv4, еще можно мириться, но их придется решить в течение ближайшего десятилетия.
В настоящее время разрабатывается версия IPv6, призванная заменить IPv4. В IPv6 поддержива- ются 128-разрядные IP-адреса. Общее число IP-адресов равно 2 128
, или
3,4×10 38
— приблизительно
2,2
×10 18
адресов на квадратный миллиметр поверхности Земли. IPv6 также обеспечивает допол- нительные средства защиты. В настоящее время число сетей, в которых используется IPv6, очень мало. Если ваш компьютер подключен к такой сети или если вы собираетесь в качестве экспери- мента организовать обмен данными во внутренней сети предприятия посредством IPv6, вам надо активизировать средства поддержки IPv6, установив для этого опцию IPv6 Protocol (Experimental)
в меню Networking Options. После установки данной опции вам станут доступны дополнительные опции, объединенные в подменю IPv6: Netfiler Configuration. В этом подменю также находятся описанные ранее опции фильтрации, но они ориентированы на работус протоколом IPv6.
НА
ЗАМЕТКУ
Чтобы активизировать средства поддержки IPv6, надо установить значения Yes опции
Prompt for Development или Incomplete Code/Drivers в меню Code Maturity Level Op- tions
. То же самое надо сделать при работе с любыми “экспериментальными” драйверами.
Со временем эксперименты с IPv6 закончатся, и опция, включающая поддержкуIPv6, бу- дет относиться к числуосновных опций. Пока это не произошло, при работе с IPv6, как и при использовании других “экспериментальных” средств, следует соблюдать осторож- ность.
Опции QoS
Предположим, что компьютер под управлением Linux действует как маршрутизатор в сети с напряженным трафиком или выполняет роль сервера и обрабатывает при этом большой объем данных. При этом может возникнуть ситуация, когда система будет в течение некоторого времени получать большее число пакетов, чем она может обработать. Очевидно, что в этом случае необхо- димы специальные средства планировки, которые устанавливали бы очередность передачи пакетов.

30
Часть I. Низкоуровневая конфигурация системы
Как правило, в системе Linux используется стратегия FIFO (first in/first out — “первый пришел —
первый вышел“), согласно которой пакет, предназначенный для передачи, находится в очереди до тех пор, пока не будут переданы все пакеты, поставленные в очередь раньше него. Но в некото- рых случаях необходимо предоставить пакетам определенного типа некоторые преимущества. Это могут быть пакеты, адресованные в конкретную сеть, или пакеты, которые содержат информацию,
соответствующую определенному протоколу. Так, например, пакеты, содержащие информацию ре- ального времени, например данные Internet-телефонии, целесообразно передавать вне очереди.
Назначать приоритеты пакетам позволяют опции QoS (quality of service — качество сервиса). Эти опции доступны посредством подменю QoS and/or Fair Queueing меню Networking Options.
Для того чтобы реализовать системуQoS, необходимо выбрать опцию QoS and/or Fair Queue- ing в одноименном меню. В результате автоматически устанавливается ряд опций этого меню.
Другие опции задаются отдельно. Основными из них являются опции планирования передачи па- кетов и организации очереди, такие как CBQ Packet Scheduler и SFQ Queue. Эти опции позволяют ядрувыполнять более сложную обработкупакетов по сравнению с традиционно использу емым принципом FIFO. Опции QoS Support и Packet Classifier API, а также их подопции позволяют использовать Differentiated Services и Resource Reservation Protocol. При этом появляется воз- можность обмена QoS-приоритетами с другими маршрутизаторами. Если все маршрутизаторы на пути от одного узла к другому поддерживают совместимые между собой протоколы QoS, скорость передачи важных данных может быть увеличена за счет задержки информации, время доставки которой некритично.
Если система не выполняет функции маршрутизатора, опции QoS в ней, как правило, не исполь- зуются. Если же вы создаете маршрутизатор, а в особенности, если он планируется для использо- вания в сети с интенсивным обменом данными, желательно установить эти опции. Активизировав однуопцию, целесообразно активизировать и все остальные, в противном случае система не будет обладать должной гибкостью. Так, например, если вы не установите опцию U32 Classifier, то не сможете задавать приоритеты исходя из адресов назначения пакетов.
На практике использование средств
QoS
предполагает применение расширенных средств маршрутизации, таких как ip и tc. Об этих инструментах речь пойдет в главе 24, од- нако они слишком сложны, чтобы привести их исчерпывающее описание в рамках одной гла- вы. Дополнительную информацию об ip и о tc можно найти в документах iproute2 + tc Notes
(http://snafu.freedom.org/linux2.2/iproute-notes.html) и Differentiated Services
on Linux (http://diffserv.sourceforge.net).
Поддержка протоколов высокого уровня
В ядре Linux предусмотрена поддержка нескольких протоколов высокого уровня. Благодаря этомукоды, отвечающие за работус этими протоколами, выполняются намного быстрее, чем соот- ветствующие коды обычных пользовательских программ. Кроме того, поддержка высокоуровневых протоколов в ядре обеспечивает более тесную интеграцию этих протоколов с остальными ком- понентами операционной системы. Например, включение в состав ядра средств поддержки NFS
позволяет монтировать удаленные ресурсы и использовать их так же как и компоненты локальной файловой системы. В версиях 2.4.x ядра реализована поддержка трех важных высокоуровневых протоколов: HTTP, NFS и SBM/CIFS.
НА
ЗАМЕТКУ
В приведенном перечне содержатся не все протоколы, поддерживаемые ядром. Кроме указанных выше, ядро Linux позволяет работать и с другими протоколами, в частности,
с различными протоколами, обеспечивающими разделение сетевых ресурсов.
Ускорение HTTP-обмена
Работа World Wide Web в основном базируется на использовании протокола HTTP (Hyper- text Transfer Protocol — протокол передачи гипертекстовой информации). По сути, в ядре Linux

Глава 1. Настройка сетевых средств ядра
31
реализован простой сервер HTTP, который включается при установке опции Kernel HTTPd Ac- celeration
. Для настройки и активизации этого сервера в псевдофайлы, находящиеся в каталоге
/proc/sys/net/khttpd
, записываются специальные значения. Вопросы работы со встроенным сервером HTTP подробно рассматриваются в главе 20.
Реализовать сервер HTTP в составе ядра оказалось сравнительно не сложно, так как передача клиентустатических Web-страниц (документов, содержимое которых не изменяется при различных обращениях клиентов) мало отличается от копирования файлов с диска на удаленные компьютеры.
Ядро может выполнять этуоперацию гораздо эффективнее, чем пользовательские программы. Для обслуживания запросов, связанных с предоставлением динамических Web-страниц, а также запро- сов, предполагающих сложную обработку статических документов, ядро обращается к обычному
Web-серверу, например Apache. При этом нет необходимости в специальных настройках Apache;
этот сервер попросту“не видит” запросов на получение статических Web-страниц.


Поделитесь с Вашими друзьями:
  1   2   3


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал