IPX в Linux HOWTO: Настройка вашей Linux машины как сервер NCP.

Next Previous Contents

10. Настройка вашей Linux машины как сервер NCP.

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

10.1 Пакет mars_nwe

Martin Stover <mstover@freeway.de> разработал пакет mars_nwe для того чтобы обеспечить в linux работу файловых сервисов и сервисов печати для клиентов NetWare.

В случае если вас удивляет имя, то оно расшифровывается как: mars_nwe это Martin Stovers Netware Emulator (Эмулятор Netware Мартина Стоверса).

Возможности mars_nwe.

mars_nwe реализует подмножество полного Novell NCP для файловых сервисов, основанного на дисках bindery и также сервисы печати. Также вероятно что этот пакет содержит ошибки, но много людей используют его и число ошибок постоянно уменьшается с выпуском новых версий.

Где взять mars_nwe.

Вы можете получить mars_nwe с ftp.gwdg.de или с ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/.

Версия в момент написания документа была: mars_nwe-0.99.pl10.tgz.

Построение пакета mars_nwe

Построение ядра с поддержкой Ethernet и IPX

В ядре версии 1.2.13 вам необходимо только убедиться, что вы ответили Y на вопрос: 'The IPX protocol' и N на вопрос: `Full internal IPX network' как показано:

 ...
 ...
The IPX protocol (CONFIG_IPX) [n] y
 ...
 ...
Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] n
 ...
 ...

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

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

Затем вы можете приступить к построению вашего ядра. Помните, что надо запустить команду lilo для установки ядра, когда его компиляция завершится.

Разожмите пакет mars_nwe

# cd /usr/src
# tar xvfz mars_nwe-0.99.pl10.tgz

Построение mars_nwe

Процесс построения пакета очень прост. Первый шаг -- просто запустить make, эта команда создаст для вас файл config.h. Затем вы должны посмотреть и отредактировать файл config.h если это необходимо. Это позволит настроить такие настройки как, какие директории будут использоваться и максимальное количество сессий и томов, которые будет поддерживать сервер. Самые важные выглядят так:

FILENAME_NW_INI       расположение инициализационного файла
PATHNAME_PROGS        где находятся выполнимые программы поддержки
PATHNAME_BINDERY      где будут находится файлы 'bindery'
PATHNAME_PIDFILES     директория, куда будут записываться 'pid' файлы
MAX_CONNECTIONS       максимальное количество одновременных соединений
MAX_NW_VOLS           максимальное количество томов, которое будет поддерживать mars_nwe 
MAX_FILE_HANDLES_CONN максимальное количество открытых файлов на одно соединение
WITH_NAME_SPACE_CALLS если вы хотите поддерживать клиентов ncpfs
INTERNAL_RIP_SAP      хотите ли вы поддерживать маршрутизацию rip/sap с помощью mars_nwe
SHADOW_PWD            хотите ли вы использовать 'теневые пароли' или нет

Значения по умолчанию должны быть нормальными, но все равно проверьте их.

Когда это сделано, выполнение команд:

# make
# make install

построит сервер и установит его в соответствующие директории. Установочный скрипт также устанавливает конфигурационный файл /etc/nwserv.conf.

Настройка сервера

Настройка довольно проста. Вам необходимо отредактировать файл /etc/nwserv.conf. Формат этого файла на первый взгляд может показаться загадочным, но на самом деле он довольно прост. Файл содержит некоторое количество одностроковых настроечных данных. Каждая строка разделена пробелами и начинается с числа, которое обозначает содержимое этой строки. Все символы следующие за символом '#' считаются комментарием и игнорируются. Martin обеспечивает пример настроечного файла в пакете, но представлю упрощенный пример как альтернативу для вас.

# ТОМА (максимум 5)
# Только том SYS является необходимым. Директория содержащая том SYS
# должна содержать директории: LOGIN, PUBLIC, SYSTEM, MAIL.
# Опция 'i' регистр букв.
# Опция 'k' преобразует все имена в запросе NCP в нижний регистр
# Опция 'm' обозначает том как сменный (полезно для cdroms и т.п.)
# Опция 'r' устанавливает том только для чтения
# Опция 'o' показывает, что том является единой файловой системой
# Опция 'P' разрешает командам использоваться как файлы
# Опция 'O' позволяет использовать использовать пространство имен OS/2
# Опция 'N' разрешает использование пространства имен NFS
# По умолчанию в верхнем регистре.
# Синтаксис:
#    1 <Имя тома>  <Путь к тому>        <Опции>

1   SYS         /home/netware/SYS/               # SYS
1   DATA        /home/netware/DATA/      k       # DATA
1   CDROM       /cdrom                   kmr     # CDROM

# ИМЯ СЕРВЕРА
# Если не установлено, тогда имя машины linux hostname будет
# сконвертировано в верхний регистр и использовано. Этот пункт
# является опциональным, если не настроено будеи использовано имя
# машины. 
# Синтаксис:
#    2 <Имя сервера>

2   LINUX_FS01

# АДРЕС ВНУТРЕННЕЙ СЕТИ
# Адрес внутренней сети IPX это свойство, которое упрощает
# маршрутизацию IPX для многосетевых машин (машин, которые имеют
# порты больше чем на одной сети IPX).
# Синтаксис:
#    3 <Адрес внутренней сети> [<Номер узла>]
# или:
#    3 auto
#
# Если вы используете 'auto', тогда будет использован IP адрес
# вашей машины. ЗАМЕЧАНИЕ: это может быть угрожающим, пожалуйста
# будьте уверены, что используете уникальное число.
# Адрес имеет длину 4 байта в шестнадцатиричной форме (требуется
# лидирующий 0x). 

3   0x49a01010  1


# СЕТЕВОЕ УСТРОЙСТВО(А)
# Этот раздел настраивает вашу сеть IPX. Если она у вас уже
# настроена, вам этот пункт не нужен. Это тоже самое что и
# использование утилит ipx_configure/ipx_interface до запуска
# сервера. 
# Синтаксис:
#    4 <Номер сети IPX> <имя устройства> <тип фрейма> [<ticks>]
#                         Frame types: ethernet_ii, 802.2, 802.3, SNAP

4  0x39a01010  eth0  802.3  1

# СОХРАНЯТЬ МАРШРУТЫ IPX ПОСЛЕ ОКОНЧАНИЯ РАБОТЫ СЕРВЕРА
# Синтаксис:
#    5 <флаг>
#       0 = не сохранять маршруты, 1 = сохранять маршруты

5 0

# ВЕРСИЯ NETWARE
# Синтаксис:
#    6 <версия>
#      0 = 2.15, 1 = 3.11

6 1

# ОБРАБОТКА ПАРОЛЯ
# Настоящие клиенты Novell для DOS поддерживают процедуру, которая
# шифрует пароли при их изменении. Вы можете выбрать, хотите ли вы
# чтобы ваш сервер поддерживал эту процедуру или нет.
# Синтаксис:
#    7 <флаг>
#    <флаг> может быть:
#        0 force password encryption. (Клиенты не могут сменить пароль)
#        1 force password encryption, разрешить изменение нешифрованного пароля
#        7 разрешаются нешифрованные пароли, но не пустые
#        8 разрешаются нешифрованные пароли включая пустые
#        9 полностью нешифрованные пароли (не работает с OS/2)

7 1

# МИНИМАЛЬНЫЕ ПРАВА GID UID
# разрешения используемые для подсоединения без входа. Эти разрешения
# будут использоваться для файлов на присоединении к вашему
# основному серверу
# Синтаксис:
#    10 <gid>
#    11 <uid>
#    <gid> <uid> из /etc/passwd, /etc/groups

10  200
11  201

# ПАРОЛЬ АДМИНИСТРАТОРА (SUPERVISOR)
# Может быть убран после первого запуска сервера. Сервер зашифрует 
# эту информацию в файл bindery после запуска. Вы должны избегать
# использования пользователя 'root' и вместо этого использовать
# другой идентификатор для администрирования файлового сервера mars
#
# Эта запись читается и шифруется в файлы bindery сервера, так что он
# необходим только при первом запуске сервера, чтобы обеспечить
# чтобы пароль не украли.
#
# Синтаксис:
#    12 <Идентификатор администратора> <имя пользователя Unix> [<пароль>]

12  SUPERVISOR  terry  secret

# ЗАПИСИ ПОЛЬЗОВАТЕЛЕЙ
# Этот раздел ассоциирует идентификаторы NetWare с идентификаторами
# пользователей unix. Наличие пароля является опциональным.
# Синтаксис:
     13 <Идентификатор пользователя> <имя пользователя в Unix> [<пароль>]

13  MARTIN martin
13  TERRY  terry  

# НАСТРОЙКА СИСТЕМЫ "ЛЕНИВОГО" АДМИНИСТРИРОВАНИЯ
# Если у вас большое количество пользователей и вы не хотите
# беспокоиться использованием индивидуального мапирования
# пользовательских имен, как в предыдущем случае, то вы можете 
# автоматически мапировать идентификаторы mars_nwe в имена
# пользователей Linux. Но в настоящее время нет способа использовать
# пароли linux, так что все пользователи настроенные таким способом
# будут пользоваться единственным паролем, указанным здесь. Я
# рекомендую не использовать это до тех пор пока вас перестанет
# беспокоить безопасность.
# Синтаксис:
#    15 <флаг> <общий пароль>
#    <флаг>:    0  - не делать автоматическое мапирование пользователей
#               1  - автоматически мапировать пользователей не указанных выше
#               99 - автоматически мапировать всех пользователей этим способом

15  0  duzzenmatta

# ПРОВЕРКА РАБОТОСПОСОБНОСТИ
# mars_nwe будет автоматически убеждаться, что определенные
# директории существуют, если установлен этот флаг
# Синтаксис:
#    16 <флаг>
#    <флаг> - 0 для нет, не делать, или 1 для да, делать проверку

16  0

# ОЧЕРЕДИ ПЕЧАТИ
# Этот раздел ассоциирует принтера NetWare с принтерами unix.
# Директории очередей должны быть созданы вручную до попытки печати.
# Директории очередей НЕ являются очередями lpd.
# Синтаксис:
#    21 <имя очереди> <директория очереди> <команда печати unix>

21  EPSON  SYS:/PRINT/EPSON lpr -h
21  LASER  SYS:/PRINT/LASER lpr -Plaser

# ФЛАГИ ОТЛАДКИ 
# Обычно они не нужны, но могут быть полезными если вы ищите проблему.
# Синтаксис:
#    <тема отладки> <флаг отладки>
#
#    100 = IPX KERNEL
#    101 = NWSERV
#    102 = NCPSERV
#    103 = NWCONN
#    104 = start NWCLIENT
#    105 = NWBIND
#    106 = NWROUTED
#                 0 = запрещает отладку, 1 = разрешает отладку

100 0
101 0
102 0
103 0
104 0
105 0
106 0

# ЗАПУСК NWSERV В ФОНОВОМ РЕЖИМЕ И ИСПОЛЬЗОВАНИЕ ФАЙЛА ПРОТОКОЛА
# Синтаксис:
#    200 <флаг>
#        0 = запуск NWSERV в нормальном режиме и не использовать файл протокола
#        1 = запуск NWSERV в фоновом режиме и использовать файл протокола

200  1

# ИМЯ ФАЙЛА ПРОТОКОЛА
# Синтаксис:
#    201 <файл протокола>

201  /tmp/nw.log

# ДОПОЛНЯТЬ ПРОТОКОЛ ИЛИ ПЕРЕЗАПИСЫВАТЬ
# Синтаксис:
#    202 <флаг>
#        0 = добавлять к существующему файлу протокола
#        1 = переписывать существующий файл протокола

202  1

# ВРЕМЯ ВЫКЛЮЧЕНИЯ СЕРВЕРА
# Этот раздел устанавливает время между выдачей команды SERVER DOWN и
# действительным выключением сервера.
# Синтаксис:
#    210 <время>
#        в секундах. (по умолчанию 10)

210  10

# ИНТЕРВАЛ МЕЖДУ ПЕРЕДАЧАМИ ШИРОКОВЕЩАТЕЛЬНОЙ ПЕРЕДАЧЕЙ МАРШРУТОВ
# Время в секундах между широковещательными передачами сервера.
# Синтаксис:
#    211 <время>
#        в секундах. (по умолчанию 60)

211  60

# ИНТЕРВАЛ ПРОТОКОЛИРОВАНИЯ МАРШРУТИЗАЦИИ
# Устанавливает сколько широковещательных передач произойдет до 
# протоколирования маршрутизационной информации.
# Синтаксис:
#    300  <число>

300  5

# ФАЙЛ ПРОТОКОЛА МАРШРУТИЗАЦИИ
# Устанавливает имя файла протокола маршрутизации
# Синтаксис:
#    301 <имя файла>

301  /tmp/nw.routes

# ДОБАВЛЕНИЕ/ПЕРЕЗАПИСЬ МАРШРУТНОЙ ИНФОРМАЦИИ
# Устанавливает хотите ли вы добавлять информацию к существующему 
# файлу протокола, или перезаписывать его.
# Синтаксис:
#    302 <флаг>
#        <flag> - 0 для дополнения, 1 для создания/перезаписи

302  1

# WATCHDOG TIMING
# Устанавливает хронометраж для наблюдательных сообщений, чтобы
# убедиться что сеть жива.
# Синтаксис:
#    310 <значение>
#        <значение> = 0 - всегда посылать наблюдательные сообщения
#                   < 0 - (-ve) для запрета наблюдений
#                   > 0 - посылать наблюдательные сообщения при 
#                        падении трафика ниже 'n' ticks

310  7

# ФАЙЛ СТАНЦИЙ
# Устанавливает имя для файла станций, который определяет для каких
# машин этот файловый сервер будет выступать как первичный файловый 
# сервер. Синтаксис этого файла описан в директории 'examples' исходного
# кода пакета.
# Синтаксис:
#    400 <имя файла>

400  /etc/nwserv.stations

# ОБРАБОТКА 'GET NEAREST FILESERVER'
# Устанавливает как будет обрабатываться запрос SAP 'Get Nearest 
# Fileserver' (получить ближайший файловый сервер). 
# Синтаксис:
#    401 <флаг>
#        <флаг>: 0 - запретить запросы 'Get Nearest Fileserver'.
#                1 - файл 'stations' перечисляет исключаемые станции.
#                2 - файл 'stations' перечисляет включаемые станции.

401  2

Запуск сервера

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

# nwserv

Проверка работы сервера

Для тестирования сервера вы первым делом должны попытаться присоединиться и войти с клиента NetWare на вашей сети. Затем вы должны сделать CAPTURE с клиента и попытаться напечатать. Если обе этих вещи работают хорошо, тогда сервер работает.

10.2 Пакет lwared

Ales Dryak <A.Dryak@sh.cvut.cz> разработал lwared чтобы позволить Linux функционировать как файловый сервер на базе NCP.

Ales назвал пакет lwared, сокращение для LinWare Daemon.

Возможности lwared

Сервер lwared обеспечивает подмножество всех функций Novell NCP. Он включает функции сообщений, но не обеспечивает возможности печати. В настоящее время он не совсем хорошо работает с клиентами Windows95 или Windows NT. Сервер lwared полагается на внешние программы для выполнения функций построения и обновления таблиц маршрутизации IPX и таблиц SAP. "Плохие" клиенты могут вызвать падение сервера. Что важно, возможность трансляции имен не была включена.

Сервер работает с оболочками NETX и VLM NetWare.

Получение lwared

Пакет lwared может быть построен для любого ядра новее чем 1.2.0, я рекомендую вам использовать ядро версии 1.2.13, так как для этого не требуется заплаток (patches) для ядра. Некоторые функциональные возможности IPX изменились в ядрах версии 1.3.* и это означает, что требуются заплатки чтобы все работало правильно. Соответствующие заплатки включены в состав новых ядер, так что если вы должны использовать ядра в стадии alpha, вы все равно сможете заставить lwared работать правильно.

Вы можете получить пакет lwared по анонимному ftp с: klokan.sh.cvut.cz

или с: sunsite.unc.edu или серверов-зеркал. Текущая версия в момент написания была: lwared-0.95.tar.gz.

Построение lwared

Разожмите пакет lwared

Выполните что-то подобное этому:

# cd /usr/src
# tar xvpfz lwared-0.95.tar.gz

Построение ядра с поддержкой Ethernet и IPX

Если вы используете alpha версии ядер 1.3.*, тогда вы должны использовать ядро версии 1.3.17 или более новое, потому-что прилагаемые заплатки были сделаны для него. Ядра 1.3.* старее чем 1.3.17 требуют ручного исправления для установки (некоторая информация о том как сделать это включена в файл INSTALL в составе пакета). Для установки заплаток для ядра версии 1.3.17 или более новых вы должны использовать команду:

# make patch

После приложения патчей, если необходимо, следующая вещь которую вам необходимо сделать -- это убедиться что ваше ядро скомпилированно с поддержкой IPX. Для ядра версии 1.2.13 вам необходимо только убедиться, что вы ответили Y на вопрос: 'The IPX protocol' как показано:

 ...
 ...
Assume subnets are local (CONFIG_INET_SNARL) [y]
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
The IPX protocol (CONFIG_IPX) [n] y
*
* SCSI support
 ...
 ...

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

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

Затем вы можете продолжать построение вашего ядра. Помните, что необходимо запустить lilo для установки ядра, после окончания процесса компиляции.

Компиляция и установка lwared

Для компиляции lwared вы должны сначала проверить, и если необходимо отредактировать, файл server/config.h. Этот файл содержит различные настройки, которые будут управлять поведением вашего сервера при запуске. Значения по умолчанию достаточно разумны, но вы можете проверить, что указанные директории для файлов протокола и файлов настройки соответствуют вашей системе.

# make depend
# make
# make install

Я заметил, что 'make depend' жалуется на то что не нашла файл float.h на моей системе, но все равно работает. Я также нашел, что когда я пытался компилировать с gcc 2.6.3, я изменил строку:

#include <net/route.h>

на

#include <net/if_route.h>

в lib/ipxkern.c, так как файл иногда меняет имя.

'make install' будет пытаться установить сервер и программы демонов маршрутизации в вашу директорию /usr/sbin, программу lwpasswd в директорию /usr/bin, программы работы с IPX будут установлены в директорию /sbin и справочные страницы будут установлены в директорию /usr/man. Если любое из этих директорий не подходят для вашей системы, то вы должны отредактировать файл Makefile и изменить конечные директории на нужные.

Настройка и использование lwared

Настройка сети IPX

Первая вещь которую вы должны сделать -- это настройка ваших интерфейсов Ethernet для поддержки сетей IPX, которые ваш сервер будет поддерживать. Для того чтобы сделать это вам необходимо знать сетевые адреса IPX для каждого из сегментов LAN, какие устройства Ethernet (eth0, eth1 etc.) находятся на каком сегменте, какой тип фреймов (802.3, EtherII etc.) использует каждый сегмент LAN и какой адрес внутренней сети должен использовать ваш сервер (это необходимо только если ваш сервер будет обслуживать больше одного сегмента LAN). Настройка для сервера, который находится в двух непохожих сегментах с сетевыми адресами IPX равными 23a91300 и 23a91301 и адресом внутренней сети bdefaced может выглядеть так:

# ipx_internal_net add BDEFACED 1
# ipx_interface add eth0 802.3 23a91300
# ipx_interface add eth1 etherii 23a91301

Запуск демонов маршрутизации

Программное обеспечение ядра в действительности делает только перекладывание пакетов IPX, также как и для IP, но ядро требует дополнительных программ для управления обновлением таблицы маршрутизации. Для IPX требуются два демона и оба поставляются с lwared: ipxripd управляет маршрутизационной информацией IPX, а ipxsapd управляет информацией SAP. Для запуска демонов вам только необходимо указать место где они могут писать свои файлы протокола:

# ipxripd /var/adm/ipxrip
# ipxsapd /var/adm/ipxsap

Настройка сервера lwared

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

/etc/lwpasswd

Это место где хранится информация о пользователях LinWare. программа lwpasswd используется для работы с записями. В простейшем случае файл /etc/lwpasswd выглядит следующим образом:

ales:
terryd:
guest:

Этот формат является простым списком идентификаторов входа с последующим символом ':' и затем шифрованная версия пароля для входа. Здесь есть несколько дополнений: отсутствие шифрованного пароля означает вход без пароля, пользователи LinWare должны быть зарегестрированы в Linux, так что любой пользователь кроме записи в файле /etc/lwpasswd также должен иметь запись в /etc/passwd и только пользователь root является пользователем, который может менять пароль для других пользователей LinWare. Если вы вошли в систему как root то вы можете сменить пароль пользователя LinWare как это показано:

# lwpasswd rodg
Changing password for RODG
Enter new password: 
Re-type new password: 
Password changed.

/etc/lwvtab

Этот файл содержит таблицу томов LinWare и хранить информацию о том какие директории будут доступны для пользователей LinWare (этот файл похож по природе на файл NFS /etc/exports). Простой пример формата этого файла:

SYS             /lwfs/sys
DATA            /lwfs/data
HOME            /home

Формат очень прост: После имени тома через пробел следует экспортируемая директория Linux. Вы должны иметь по крайней мере запись для тома SYS, чтобы запустить сервер. Если вы намереваетесь для ваших DOS клиентов использовать сервер LinWare как первичный файловый сервер, тогда вы должны создать стандартную структуру директорий тома SYS в директории экспортируемой как ваш том SYS. Так как эти файлы являются патентованными и авторскими правами на них владеет корпорация Novell, вы дожны иметь на них лицензию. Если ваши пользователи будут использовать файловый сервер Novell как первичный сервер, то это не является необходимым.

Запуск сервера lwared

tada!

# lwared

Это выглядит разочаровывающе, не так ли? Ok, у вас есть вопрос? Какое имя сервера будет присвоено? Если вы запустите сервер как показано выше, то имя сервера LinWare будет присвоено на основе имени возвращенного командой Linux hostname. Если вы хотите какое-то другое имя, тогда вы можете задать имя сервера при его старте, например команда:

# lwared -nlinux00

должна запустить сервер с именем linux00.

Тестирование сервера lwared

Самая первая вещь для проверки -- это то что ваш сервер LinWare появился в выводе команды slist запущенной с клиента DOS на вашей сети. Программа slist хранится на томе SYS файлового сервера Novell, так что вы должны сделать это с какой-то машины уже подключенной куда-нибудь. Если это не произошло, то проверьте что запущены ipxsapd и lwared. Если выполнение команды slist прошло удачно, то попытайтесь подключиться к серверу и замапировать том:

C:> attach linux00/ales
 ...
 ...
C:> map l:=linux00/data:
C:> l:

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


Next Previous Contents