Чтение онлайн

на главную - закладки

Жанры

Сетевые средства Linux

Смит Родерик В.

Шрифт:
Внимание

Как вы узнаете из последующих разделов, в процессе работы NFS не проверяет пароли и не реализует другие подобные способы контроля доступа. Вместо этого NFS использует принцип доверия, согласно которому сервер полагается на средства аутентификации пользователей, применяемые на клиентских машинах. На сервере NFS вы определяете узлы, пользующиеся доверием, и задаете их IP-адреса. Данный механизм защиты не сложно обойти, используя фальшивый IP-адрес или изменяя конфигурацию локальных компьютеров, поэтому, планируя систему NFS, надо уделять особое внимание безопасности данных. В частности, нельзя допускать передачу секретной информации средствами NFS. Если возникает необходимость обмена важными данными по локальной сети, для этого лучше использовать Samba или другие механизмы передачи, например, программу scp, которая входит в состав пакета SSH (Secure Shell — защищенная

оболочка).

Серверы NFS для системы Linux

В 1998-2002 г. средства поддержки NFS в системе Linux претерпели ряд важных изменений; некоторые из таких изменений рассматриваются в данном разделе. Если вы используете старые дистрибутивные пакеты или устаревшую документацию, представленные здесь сведения позволят вам составить впечатление о реальном положении дел. Чаще всего сервер NFS, поставляемый в составе Linux, можно использовать для обмена данными, но в некоторых случаях, чтобы реализовать NFS-взаимодействие с другими компьютерами, вам придется установить более новое (а возможно, и более старое) программное обеспечение. Информацию о последних разработках в области NFS-обмена в системе Linux можно получить, обратившись по адресу

http://nfs.sourceforge.net
.

Пользовательский режим и режим ядра

Сервер NFS в основном предназначен для обмена данными между файлами на диске и сетевым интерфейсом. В обычных условиях сервер NFS выполняется в системе Linux в пользовательском режиме. Это означает, что сервер не имеет специальных привилегий и не использует средства ядра. Другими словами, информация читается с диска с помощью функций ядра, затем прочитанные данные передаются программе, работающей в пользовательском режиме, а после этого они поступают на сетевой интерфейс. (Данные, принятые посредством сетевого интерфейса и записываемые на диск, проходят этот путь в обратном направлении.) Необходимость обмена информацией между ядром и программой, выполняющейся в пользовательском режиме, снижает производительность системы. Чтобы устранить этот недостаток, надо изменить коды сервера NFS и конфигурацию ядра так, чтобы передачей данных занимались только функции ядра. Для этого необходимо установить опцию NFS Server Support в подменю Network File Systems меню File Systems (рис. 8.1). Сделав это, вы передадите ядру часть обязанностей сервера NFS. Кроме того, надо использовать код сервера NFS, непосредственно ориентированный на взаимодействие с ядром. Обычно программа, реализующая такой сервер, называется

knfsd
, в то время как стандартный сервер NFS носит имя
nfsd
.

Рис. 8.1. В ядре Linux реализованы средства поддержки как клиента, так и сервера NFS

На заметку

В инструментах настройки ядра Linux также присутствует опция NFS File System Support. Эта опция включает в ядро средства поддержки клиента NFS, которые совместно с утилитой mount позволяют монтировать каталоги, экспортируемые удаленным сервером NFS, в локальной файловой системе. Средства поддержки клиента и сервера NFS в составе ядра не связаны друг с другом, и вы можете независимо включать или отключать любую из этих опций.

NFSv2 и NFSv3

Подобно другим протоколам и программам, средства NFS периодически пересматриваются и реализуются их новые версии. В 2002 г. широко использовалась последняя на тот момент версия 3 системы NFS, или NFSv3. (На самом деле в это время уже существовала версия NFSv4, но она находилась в стадии разработки. Дополнительную информацию о состоянии дел с NFSv4 можно найти, обратившись по адресу

http://www.ntsv4.org
). Несмотря на наличие NFSv3 (и даже NFSv4), большинство существующих клиентов и серверов NFS поддерживают лишь NFSv2. To же самое можно сказать о ядре Linux 2.2.x. Возможность работы с NFSv3 была реализована в ядре лишь начиная с версии 2.2.18. (Для более ранних версий ядра существуют дополнительные модули, обеспечивающие поддержку NFSv3.) В NFSv3 были предусмотрены дополнительные возможности, например, улучшена блокировка файлов, повышена производительность операций записи за счет применения асинхронного режима (асинхронный режим был реализован и в программах поддержки NFSv2 в системе Linux, но соответствующие средства не соответствовали стандарту). Кроме того, NFSv3 позволяет работать с NQNFS (Not Quite NFS) и использовать соединения TCP (в NFSv2 был предусмотрен только UDP-обмен). Следует заметить, что в 2002 г. соединения TCP поддерживались
в Linux лишь частично. Средства NFSv2 подходят для небольших сетей, в которых необходимость в обмене данными возникает лишь эпизодически, a NFSv3 (реализованные в полном объеме) можно использовать для обеспечения работы мощных серверов. Экспериментальные версии NFSv3 для Linux были реализованы плохо — они не поддерживали операции в асинхронном режиме. Для серверных программ ситуация несколько улучшилась с появлением ядра 2.4.x. Клиентские программы в ядре 2.4.17 работают по-прежнему медленно.

Если вы хотите обеспечить работу с сервером NFSv3, в котором операции NFS ускоряются за счет ядра, вы должны при установке конфигурации ядра выбрать опцию Provide NFSv3 Server Support (которая является подопцией обсуждавшейся ранее опции NFS Server Support). Аналогично, для использования средств NFSv3 клиентом надо выбрать опцию Provide NFSv3 Client Support. Протокол NFS обеспечивает совместимость с ранними версиями, поэтому если в вашей системе поддерживаются средства NFSv3, а на других компьютерах установлены лишь средства NFSv2, то узлы сети могут обмениваться данными по протоколу NFSv2.

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

nfs-utils
0.1.6 либо более поздняя версия и версия утилиты
mount
не ниже 2.10m. Эти инструменты содержатся в большинстве дистрибутивных пакетов; для их поиска можно воспользоваться средствами
rpm
или
dpkg
. Так, например, чтобы найти нужную версию
mount
, надо задать следующую команду:

$ rpm -q mount mount-2.11b-5mdk

В данном случае при выполнении команды было обнаружено, что в системе инсталлирована версия 2.11b утилиты mount, которая подходит для обеспечения работы клиента NFSv3.

Отображение портов

Большинство серверов TCP/IP принимают обращения от клиентов через порт с определенным номером. Так, например, сервер, реализующий протокол SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), использует при работе порт 25, а Web-сервер, поддерживающий протокол HTTP (Hypertext Transfer Protocol — протокол передачи гипертекстовой информации), — порт 80. Обмен с сервером также может быть организован через нестандартный порт, но обычно конфигурацию сервера выбирают так, чтобы для обращения к ним не требовалась специальная настройка клиентов. NFS представляет собой класс протоколов, которые действуют несколько по-иному. При работе NFS применяется процедура отображения портов. Специальная программа связывается с фиксированным портом (номер порта 111) и перенаправляет обращения клиентов на требуемые порты. (NFS чаще всего использует порт UDP 2049, но NFSv3 предполагает также работу через порт TCP 2049.) Весь процесс обмена данными базируется на применении протокола RPC (Remote Procedure Call — удаленный вызов процедур).

Процедуру отображения портов реализует программа

portmap
, которая обычно запускается при выполнении сценария загрузки сетевых средств. Кроме того, для нее может быть создан отдельный сценарий. Несмотря на то что
portmap
не работает совместно с суперсервером
inetd
, в последних версиях этой программы предусмотрена возможность взаимодействия с TCP Wrappers. Ограничив доступ к программе отображения портов теми компьютерами, которым действительно необходимо взаимодействовать с сервером, вы существенно повысите безопасность системы. Чтобы запретить доступ всем узлам без исключения, надо включить в файл
/etc/hosts.deny
следующую запись:

portmap : ALL

Затем можно разрешить обращение к

portmap
отдельных компьютеров или сетей, включая их адреса в файл
/etc/hosts.allow
.

portmap : 192.168.1.

На заметку

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

portmap
. Это, в свою очередь, приведет к необходимости нового преобразования адресов. Такая бесконечная последовательность вызовов не даст никакого результата, а лишь создаст дополнительную нагрузку на процессор. Поэтому для указания клиентов надо использовать их IP-адреса.

Поделиться:
Популярные книги

Первый среди равных. Книга XIII

Бор Жорж
13. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга XIII

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Личный аптекарь императора. Том 4

Карелин Сергей Витальевич
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 4

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Древесный маг Орловского княжества 5

Павлов Игорь Васильевич
5. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 5

Двойник Короля 10

Скабер Артемий
10. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 10

Идеальный мир для Лекаря 27

Сапфир Олег
27. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 27

Божья коровка 2

Дроздов Анатолий Федорович
2. Божья коровка
Фантастика:
альтернативная история
5.00
рейтинг книги
Божья коровка 2

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Чужая семья генерала драконов

Лунёва Мария
6. Генералы драконов
Фантастика:
фэнтези
5.00
рейтинг книги
Чужая семья генерала драконов

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Гримуар темного лорда VIII

Грехов Тимофей
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Гримуар темного лорда VIII

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия