Расположение конфигурационных файлов
Отметим сразу, что все приводимые ниже команды можно выполнять из командной строки, но тогда придется повторять эти операции при каждом перезапуске компьютера. Поэтому может быть удобнее записать их в один из инициализационных файлов, автоматически запускаемых при старте системы. В разных дистрибутивах процесс загрузки организован по-разному. В "Linux NET-3-HOWTO" приводится следующая таблица:
Таблица 13.1. Расположение конфигурационных файлов в основных дистрибутивах
Дистрибутив. | Настройка интерфейса и маршрутизации | Запуск демонов |
Debian | /etc/init.d/network | /etc/init.d/netbase /etc/init.d/netstd_init /etc/init.d/netstd_nfs /etc/init.d/netstd_misc |
Slackware | /etc/rc.d/rc.inet1 | /etc/rc.d/rc.inet2 |
RedHat | /etc/sysconfig/network-scripts/ifup-<ifname> | /etc/rc.d/init.d/network |
Обратите внимание, что дистрибутивы Debian и Red Hat содержат отдельный каталог для скриптов запуска системных сервисов (хотя сами файлы настроек находятся в других местах, например, в дистрибутиве Red Hat они хранятся в каталоге /etc/sysconfig). Для понимания процесса загрузки ознакомьтесь с содержимым файла /etc/inittab и документацией по процессу init.
Настройка маршрутизации
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.
Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация.
Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего
[root]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.72.128.101 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
10.72.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.72.128.254 0.0.0.0 UG 0 0 0 eth0
Если таблица пуста, то вы увидите только заголовки столбцов. Тогда надо использовать route. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:
[root]# /sbin/route [-f] операция [-тип] адресат шлюз [dev] интерфейс
Здесь аргумент операция может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат может быть IP-адресом машины, IP-адресом сети или ключевым словом default . Аргумент шлюз — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда
[root]# /sbin/route -f
удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host . В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера (хоста).
Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам: локальный интерфейс (lo), интерфейс для платы Ethetnet (eth0), интерфейс для последовательного порта (PPP или SLIP).
Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127.... используется команда:
[root]# /sbin/route add -net 127.0.0.1 lo
Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:
[root]# /sbin/route add -net 192.168.36.0 netmask 255.255.255.0 eth0
Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса.
Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров — маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру "а все остальное отправляй туда". Маршрут по умолчанию настраивается следующей командой:
[root]# /sbin/route add default gw 192.168.1.1 eth0
Опция gw указывает программе route, что следующий аргумент - это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.
После настройки маршрутизации можно проверить, что у вас получилось. Для этого снова дайте команду
[root]# netstat -nr
Если вывод команды выглядит так, как это было показано выше, но не содержит строки, которая в графе Destination содержит 0.0.0.0 , а в графе Gateway указывает на маршрут, используемый для соединений по умолчанию, то вы, вероятно, не задали этот маршрут.
Что такое Samba
Samba — это набор приложений, позволяющих ОС Linux взаимодействовать с сетью, построенной на основе MS Windows, причем как в роли клиента сетей MS Windows, так и в роли сервера. Пакет Samba реализует протокол Server Message Block (SMB), который иногда называют также Session Message Block (SMB), протоколом NetBIOS или протоколом LanManager. В этом разделе мы рассмотрим только работу клиентских программ этого пакета, а именно smbclient, smbmount и smbumount. Если вы не найдете этих программ на своем компьютере, то установите пакет Samba (например, на дистрибутивном компакт-диске с Black Cat 6.02 имелся файл samba-client-2.0.5a-2bc.i386.rpm, возможно у вас окажется другая версия).
Программа smbclient предоставляет пользователю FTP-подобный интерфейс для переноса файлов с компьютеров, работающих под ОС Windows (или с компьютеров, на которых запущен сервер Samba). По сравнению с FTP smbclient имеет то преимущество, что не требует, чтобы на удаленном компьютере, работающем под Windows, был запущен специальная серверная программа, поскольку Windows поддерживает NetBIOS по умолчанию. Там только должен быть открыт доступ к какому-либо каталогу из сети. Если же вы хотите через Samba получить доступ к UNIX-серверу, то на нем, естественно, должна быть запущена серверная часть пакета Samba.
Итак, предположим, что в вашей сети имеется компьютер с именем PC1 , работающий под ОС Windows, и на нем имеется каталог, открытый для доступа из сети, которому присвоено имя ресурса PUBLIC (напомним, что в ОС Windows регистр символов не имеет значения).
Для начала дайте команду
[root]# smbclient -L pc1
для того чтобы увидеть доступные из сети ресурсы компьютера PC1. Если компьютер PC1 работает под управлением Windows NT, то надо сразу указать имя пользователя, который имеет права доступа к компьютеру:
[root]# smbclient -U user -L pc1
и в ответ на запрос программы ввести пароль этого пользователя, иначе вы не увидите даже списка открытых ресурсов.
В ответ на такой запрос вы получите примерно следующую информацию:
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
public Disk
C$ Disk Default share
IPC$ IPC Remote IPC
G Disk
Server Comment
--------- -------
PC2 Samba 1.9.15p8
PC5
PC25 Samba 1.9.15p8
PC1
Обратите внимание на то, что вслед за строкой Server Comment перечисляются другие SMB-сервера в сети с доступными ресурсами.
Для того чтобы получить доступ к ресурсу на удаленном компьютере, надо дать команду следующего вида:
[user]$ /usr/sbin/smbclient servicename -U user [password]
где servicename -- это имя машины и ресурса, которые должны бы вообще-то иметь вид \\pc1\public, но из-за ограничений оболочки каждый слэш надо удваивать, поэтому команда принимает следующий вид:
[user]$ /usr/sbin/smbclient \\\\PC1\\public -U user mypasswd
(в той версии Samba, которая стоит у меня, прекрасно работают и обратные слэши, которые к тому же не надо удваивать:
[user]$ /usr/sbin/smbclient //PC1/public -U user mypasswd
скорее всего и у вас будет то же самое).
Указывать имя пользователя в опции необходимо только в том случае, если оно не совпадает с именем пользователя, от имени которого вы запустили программу smbclient. Естественно, что пароль необходим только в том случае, если доступ к ресурсу защищен паролем.
Если доступ к ресурсу дан, вы получите приглашение программы:
Server time is Sat Mar 11 15:58:27 2000
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
smb: \>
В ответ на это приглашение вы можете вводить одну из следующих встроенных команд программы smbclient (этот перечень вы можете получить, введя команду h или ? :
smb: \> h
ls dir du lcd cd
pwd get mget put mput
rename more mask del open
rm mkdir md rmdir rd
prompt recurse translate lowercase print
printmode queue cancel quit q
exit newer archive tar blocksize
tarmode setmode help ? !
Динамическое подключение драйверов
Для динамического подключения драйвера надо подгрузить модуль ядра, отвечающий за взаимодействие с данным сетевым устройством (например, сетевой картой) и передать ему параметры устройства. Сделать это можно с помощью команды insmod, вызов которой осуществляется следующим образом:
[root]# /sbin/insmod [-fkmpsxXv] [-o имя_устройства] файл_драйвера
Например, для сетевой карты можно выполнить команду следующего вида:
[root]# /sbin/insmod -o eth0 /lib/modules/2.2.x/net/net.o
Здесь 2.2.х надо заменить на версию установленного у вас ядра, а вместо net.o надо подставить имя модуля, соответствующего вашей сетевой плате. Поскольку у меня была плата 3Com, я выбрал 3с509.o (посмотрите перечень в подкаталоге /lib/modules/2.2.x/net/).
Замечание:
В последних версиях Linux вместо insmod используется modprobe.
Ядро именует драйверы Ethernet как eth0, eth1 и т. д., так что для подключения, например, второй сетевой карты надо в этом примере eth0 заменить на eth1.
Кстати, ядро не может автоматически определить наличие двух сетевых адаптеров. В этом случае вам придется произвести некоторые дополнительные настройки. Однако обсуждение этого вопроса выходит за рамки данной книги, ищите ответы в книге О. Кирха и других источниках.
В некоторых случаях в команде требуется дополнительно задать номер порта и номер используемого прерывания, а также некоторые другие опции, но подробнее об этом см. на странице man insmod.
Аналогично, для подключения модуля, обеспечивающего работу с модемом по протоколу PPP, надо дать команду
[root]# /sbin/insmod /lib/modules/2.2.11/net/ppp.o
(драйвер должен существовать и располагаться в указанном каталоге).
Драйверы сетевых устройств в ядре
Естественно, что для того, чтобы работать с локальной сетью, необходимо иметь сетевую карту (плату) и подключение к сети. Я не буду объяснять, как физически подключиться к сети, предполагая, что вы уже установили сетевую карту в ваш компьютер и соединили его (кабелем или витой парой) с существующей сетью.
Заметим, что в каталоге /dev нет специального файла для сетевой карты. В Linux сетевые устройства создаются динамически, и поэтому не требуют наличия соответствующих файлов в каталоге /dev.
Прежде, чем пытаться подключаться к сети, вы должны убедиться, что установленное в вашей системе ядро скомпилировано с поддержкой сетевых возможностей. О. Кирх утверждает, что признаком этого является наличие каталога /proc/net. Но можно посмотреть и протокол загрузки системы (файл /var/log/dmesg), в котором должны найтись примерно такие строки:
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: Ethernet Bridge 008 for NET4.0
Далее нужно убедиться, что в состав ядра включен драйвер для вашей сетевой карты. Вообще-то, ядра, включаемые в стандартные дистрибутивы, обеспечивают поддержку большинства распространенных сетевых плат (что, конечно, увеличивает объем ядра). Так что с очень высокой вероятностью нужный драйвер входит в ядро. В процессе загрузки ядра выполняется процедура автоматического обнаружения сетевой карты. Если такое обнаружение было успешным, то в файле /var/log/dmesg вы найдете соответствующие сообщения. У меня они имеют вид:
eth0: 3Com PCI 3c905C Tornado at 0x4000, 00:01:02:b4:6c:65, IRQ 9
product code 'DU' rev 00.11 date 09-02-00
8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
MII transceiver found at address 24, status 782d.
Enabling bus-master transmits and whole-frame receives.
Если карта не обнаружена, то вам придется перекомпилировать ядро (или поменять карту). Перекомпиляция ядра может иметь смысл и в том случае, если вы хотите удалить из ядра ненужные драйверы устройств, которые вы не используете. Но все же в большинстве случаев стандартное ядро успешно решает задачи поддержки сетевых возможностей, так что на вопросе перекомпиляции ядра сейчас мы останавливаться не будем. Рассмотрим только вопрос о динамическом подключении драйвера сетевой карты.
Интерфейс для последовательного порта
Последовательный порт используется для подключения модема, через который осуществляется соединение с сетью по телефонной линии. Для настройки интерфейса этого типа тоже можно использовать программу ifconfig. Однако, такие программы как pppd и dip, используемые для соединения с сетью по модему, способны автоматически конфигурировать сетевой интерфейс, поэтому обычно для этого случая применять ifconfig не требуется.
Команда ifconfig
После подключения драйверов вы должны настроить те интерфейсы, которые вы предполагаете использовать. Настройка интерфейса заключается в присвоении IP-адресов сетевому устройству и установке нужных значений для других параметров сетевого подключения. Наиболее часто для этого используется программа ifconfig (ее название происходит от "interface configuration").
Запустите ее без аргументов (или с единственным аргументом -a ) и вы узнаете, какие параметры установлены в данный момент для активных сетевых интерфейсов (в частности, для сетевой карты). Кстати, имеет смысл выполнить эту команду еще до подключения модулей: а вдруг у вас поддержка интерфейсов встроена в ядро и необходимые настройки сделаны в процессе инсталляции системы. Тогда вы в ответ можете получить информацию о параметрах вашей Ethernet-карты и так называемого "кольцевого интерфейса" или "обратной петли" - Local Loopback (интерфейс Ethernet при единственной сетевой карте обозначается как eth0, а кольцевой интерфейс - как lo). Если же по этой команде вы ничего не получите, то надо переходить к подключению модулей и настройке, и начинать надо с кольцевого интерфейса.
Монтирование файловых систем с помощью Samba
Как видите, команды эти во многом похожи на команды ftp-клиента и работа с программой smbclient не очень удобна. Но в пакет samba-client-2.0.5a-2bc.i386.rpm входят еще 2 программы, которые предоставляют некоторые дополнительные удобства. Эти программы называются smbmount и smbumount. С помощью команды smbmount можно смонтировать сетевой ресурс к локальной структуре каталогов, наподобие того, как монтируются файлы на гибком диске. Формат команды таков:
[user]$ /usr/sbin/smbmount //PC1/public /mnt/pc1 -U 123 -W 456'
(в этом примере сетевой ресурс монтируется в локальный каталог /mnt/pc1, причем владельцем каталога объявляется пользователь 123 и группа 456). При необходимости нужно будет ввести пароль пользователя (тот же, по которому вы получали доступ к ресурсу в команде smbclient).
Команда smbumount позволяет обычным пользователям размонтировать файловую систему, смонтированную командой smbmount (пользователь root может воспользоваться обычной командой umount. Формат команды (используется название точки монтирования из того же примера):
[user]$ /usr/sbin/smbumount /mnt/pc1
Если после монтирования сетевого ресурса запустить программу Midnight Commander и перейти в каталог /mnt/pc1, то вы увидите файлы каталога public на компьютере PC1. Думаю, вы согласитесь с тем, что теперь с ними работать будет значительно проще, чем через smbclient.
Настройка интерфейса платы Ethernet локальной сети (eth0)
Для того чтобы ваш компьютер вошел в сеть с IP-адресом, полученным вами у администратора (пусть для примера это будет адрес 192.168.0.15), вы должны запустить команду ifconfig примерно следующим образом:
[root]# /sbin/ifconfig eth0 192.168.0.15 netmask 255.255.255.0 up
Если не указывать маску подсети, то по умолчанию устанавливается маска подсети 255.0.0.0.
В некоторых случаях необходимо бывает изменить адрес прерывания, используемого сетевой картой, порта ввода-вывода или типа соединения, используемого в сети. Это можно сделать, выполнив следующую команду:
root# /sbin/ifconfig eth0 irq 5 io_addr 220 media 10baseT
Не все устройства (платы) поддерживают динамическое изменение этих параметров (т. е. может потребоваться переустановить переключатели на плате).
Настройка локального интерфейса lo
Этот интерфейс используется для связи программ IP-клиентов с IP-серверами, запущенными на той же машине, так что его необходимо настроить даже в том случае, если вы вообще не подключаете никаких сетевых устройств.
Локальный интерфейс настраивается очень просто: командой
[root]# /sbin/ifconfig lo 127.0.0.1
Теперь, чтобы проверить работоспособность протоколов TCP/IP на вашей машине, дайте команду:
[root]# ping 127.0.0.1
Настройка сетевых интерфейсов
Интерфейсом с точки зрения ОС является устройство, через которое система получает и передает IP-пакеты. Роль интерфейса локальной сети может выполнять одно (или несколько) из следующих устройств: Ethernet-карта, ISDN-адаптер или модем, подключенный к последовательному порту. Каждое устройство (не весь компьютер!) имеет свой IP-адрес. Для выхода в локальные сети используется, как правило, Ethernet-карта, что и будет предполагаться в настоящем разделе. Заодно мы рассмотрим и настройку модемного интерфейса, поскольку настраивается он вполне аналогично, и знания о методах его настройки будут необходимы нам при рассмотрении вопроса о выходе в Интернет в гл. 14
Настройка службы имен
С помощью команды ifconfig вы задали IP-адрес вашего компьютера, но он еще не знает своего имени (при инсталляции системы он получил обезличенное имя localhost). Существует команда hostname, которая позволяет установить (и узнать действующее в данный момент) имя компьютера и имя домена.
Однако установить только имя и только этой командой еще недостаточно, поскольку эта команда меняет имя только на текущий сеанс работы. Поэтому обычно эта команда вызывается в одном из инициализационных файлов, например, /etc/rc.d/rc или /etc/rc.d/rc.local. Вы можете попытаться найти ее там, чтобы изменить должным образом имя компьютера, которое задается в качестве параметра команды hostname. В таком случае требуется перезагрузиться для того чтобы изменения вступили в силу.
Другой способ изменения имени компьютера или домена состоит в том, что эти имена прописываются в файле /etc/sysconfig/network в виде двух строчек примерно следующего вида:
HOSTNAME="new_host_name.localdomain.upperdomain"
DOMAINNAME=localdomain.upperdomain
Тогда в процессе инициализации системы эти имена будут восстанавливаться, потому что файл /etc/sysconfig/network вызывается из /etc/rc.d/rc.sysinit.
Кроме того, имя компьютера должно быть прописано в файле /etc/hosts, который связывает имя компьютера с его IP-адресом. Каждая строка файла /etc/hosts должна начинаться с IP-адреса, за которым следует имя данного узла. Следом за именем можно записать произвольное число псевдонимов этого узла.
Даже если ваш компьютер не подключен к сети, в файле /etc/hosts должна быть прописана хотя бы одна строка следующего вида.
127.0.0.1 localhost localhost.localdomain
Если же ваш компьютер подключен к TCP/IP сети, то в этом файле дополнительно нужно прописать строку вида
192.168.0.15 host_name host_name.localdomain
Файл /etc/hosts используется в механизмах разрешения имен. В больших сетях трудно было бы поддерживать в актуальном состоянии файлы /etc/hosts на всех компьютерах, если бы это был основной инструмент для определения IP-адресов по именам. Поэтому обычно для разрешения имен используются серверы DNS. Однако файл /etc/hosts все равно необходим, хотя бы для обращения к серверу DNS. Поэтому в нем имеет смысл указать IP-адреса и соответствующие имена шлюзов и серверов DNS и NIS. А чтобы все приложения использовали этот файл при разрешении имен, должен иметься файл /etc/hosts.conf, содержащий строку
order hosts,bind
которая говорит, что при разрешении имен сначала должен использоваться файл /etc/hosts, а затем должно происходить обращение к серверу DNS. В большинстве случаев в файле /etc/hosts.conf достаточно иметь две строки:
order hosts,bind
multi on
Эти параметры указывают системе преобразования имен, что надо просмотреть файл /etc/hosts перед тем, как посылать запрос к серверу, и что следует возвращать все найденные в /etc/hosts адреса для данного имени, а не только первый.
Но настройка механизма разрешения имен не ограничивается редактированием файлов /etc/hosts и /etc/hosts.conf. Необходимо еще указать компьютеру имена серверов DNS. Они прописываются в файле /etc/resolv.conf. Этот файл имеет весьма простой формат. Это текстовый файл, каждая строка которого задает один из параметров системы преобразования имен. Как правило, используются три ключевых слова-параметра: domain — задает имя локального домена. search — задает список имен доменов, которые будут добавляться к имени машины, если вы не укажете явно имени домена. Это позволяет ограничить область поиска и избежать некоторых ошибок (например, вы ищете компьютер linux.msk.ru, а механизм разрешения имен выведет вас на linux.spb.ru). nameserver — этот параметр, который вы можете указывать несколько раз, задает IP-адрес сервера преобразования имен, на который ваша машина будет посылать запросы. Повторяя этот параметр, вы можете задать несколько серверов.
Если вы не собираетесь заводить поддержку сервиса имен для своей сети (что является довольно сложной организационной и технической проблемой), и доверяете ведение своих имен администратору локальной сети или вашему IP-провайдеру, то вам достаточно задать файл /etc/resolv.conf примерно следующего вида:
domain abcd.ru
search abcd.ru xyz.edu.ru
nameserver 192.168.10.1
nameserver 192.168.12.1
В этом примере машина находится в домене abcd.ru. Если вы зададите имя машины, не указывая домена, например "pc1” , то система преобразования имен попытается сначала найти машину "pc1.abcd.ru” , а в случае неудачи — "pc1.xyz.edu.ru” . Для преобразования имен ваша машина будет обращаться к серверам по адресам "192.168.10.1” и "192.168.12.1”.
Подключение к серверу Novell Netware
Для того чтобы подключаться к серверу Novell, необходимо установить пакет ncpfs. NCPFS — это файловая система, которая понимает протокол NCP (NetWare Core Protocol) фирмы Novell. Другими словами, пакет ncpfs — это клиент сети Netware для Linux. Протокол NCP играет в мире Novell ту же роль, какую в мире TCP/IP играет протокол NFS.
Пока что пакет ncpfs обеспечивает только работу с Novell Netware 3.x и выше (но не 2.x) и не поддерживает доступ к NDS, так что для работы с серверами версии 4.x необходимо, чтобы на сервере была установлена эмуляция bindery.
Прежде, чем заниматься инсталляцией пакета ncpfs, следует убедиться, что ваше ядро поддерживает протоколы IPX и NCP. Вначале загляните в файл /var/log/dmesg и поищите там строки следующего вида:
NET4: Linux IPX 0.44 for NET4.0
IPX Portions Copyright (c) 1995 Caldera, Inc.
IPX Portions Copyright (c) 2000 Conectiva, Inc.
Если строк, напоминающих эти, не найдется, то ваше ядро не имеет поддержки IPX и вам придется его перекомпилировать. При компиляции ядра (на этапе выполнения команды make config) нужно на вопрос:
The IPX protocol (CONFIG_IPX) [N/y/m/?]
ответить либо " y ” , либо " m ” . На следующий вопрос (о поддержке full internal net) вы можете ответить отрицательно (если не хотите превратить свой Linux-компьютер в полноценный Novell-сервер).
Поддержка протокола SPX в ядре не требуется (если речь идет только о клиентской части), но требуется поддержка протокола NCP (надо ответить утвердительно на вопрос "NCP file system support”).
Естественно, что должна также быть обеспечена поддержка сетевых средств вообще и настроен интерфейс сетевой платы (см. разд. 13.2).
Если у вас уже была установлена предыдущая версия пакета ncpfs и вы просто обновляете инсталляцию, то до выполнения процедуры установки надо выполнить (все, что вы будете дальше делать, — надо делать, имея права пользователя root) команду
[root]# umount -v -a –tncpfs
по которой размонтируются все ранее смонтированные через ncpfs ресурсы.
Проверить, установлены ли пакеты ipxutils и ncpfs можно с помощью команд
[root]# rpm -q ipxutils
ipxutils-2.2.0.18-3
[root]# rpm -q ncpfs
ncpfs-2.2.0.18-3
Номера версий могут отличаться. Если упомянутые пакеты не установлены — установите (найти их можно в каталоге RPMS инсталляционного диска). Например, на дистрибутивном диске ASPLinux 7.1 нашлась версия 2.2.0.18-3 пакета ncpfs в виде файла ncpfs-2.2.0.18-3.i386.rpm, и пакет ipxutils той же версии, так что установка была выполнена следующим образом:
[root]# rpm -Uhv ipxutils-2.2.0.18-3.i386.rpm
[root]# rpm -Uhv ncpfs-2.2.0.18-3.i386.rpm
Теперь вы должны выяснить, какой IPX-фрейм "бегает" у вас по сети — это очень важно (узнайте это у администратора сервера Nowell). В качестве примера примем, что у вас используется 802.3. Выполните команды
[root]# /sbin/ipx_configure --auto_primary=on --auto_interface=off
[root]# /sbin/ipx_interface add -p eth0 802.3
[root]# /usr/bin/slist
Последняя команда должна выдать список серверов Nowell Netware в сети, который выглядит примерно так:
Known NetWare File Servers Network Node Address
-------------------------------------------------------------
TEST 00034165 000000000001
SOFT 3123DB21 000000000001
NWSTEND 00100100 000000000001
Если вы не получите подобного списка серверов, не отчаивайтесь, — возможно, еще не все потеряно. Известны случаи, когда установленный пакет mars_nwe мешал нормальной работе с Novell-серверами. Удалите его перед установкой вышеуказанных пакетов
[root]# rpm -e mars_nwe.x.y.z
Далее создайте каталог, в который вы будете монтировать каталоги с Novell-сервера (если нужно несколько серверов, то должно быть несколько каталогов — по одному для каждого сервера). Например, для сервера NetWare1 создайте каталог /mnt/nw1. Теперь можно выполнить команду (для bindery-сервера) монтирующую том soft сервера NetWare1 с правами Novell- пользователя nwuser1 в каталог /mnt/nw1:
[root]# /usr/bin/ncpmount -S netware1 –V soft -U nwuser1 /mnt/nw1
Для NDS имя пользователя пишется по форме
cn=username.ou=unit.o=organization.
Например, если у вас контекст prog.firm, имя пользователя nwuser1, то вызов этот выглядит следующим образом:
[root]# /usr/bin/ncpmount -S netware1 -U cn=nwuser1.ou=prog.o=firm /mnt/nw1
Если все в порядке, то у вас будет спрошен пароль, и если вы его правильно введете, то каталоги сервера станут видны в указанном каталоге монтирования. Иногда команда ncpmount не срабатывает немедленно из-за задержек с прохождением пакетов. В таком случае подождите около 1 минуты и попробуйте снова.
Для размонтирования достаточно указать только точку монтирования:
[root]# /usr/bin/ncpumount /mnt/nw1
Однако выполнять все указанные действия необходимо с правами пользователя root. Если вы хотите иметь возможность монтировать сервера Novell от имени обычного пользователя (в домашний каталог, со своими правами доступа к серверам), то в конец файла /etc/rc.d/rc.local нужно вставить команды
ipx_configure --auto_primary=on --auto_interface=off
ipx_interface add -p eth0 802.3
chmod +s `which ncpmount`
chmod +s `which ncpumount`
Тогда при загрузке Linux они будут выполнены автоматически и обеспечат пользователям возможность выполнять команды ncpmount и ncpumount. После этого пользователи смогут монтировать в свои домашние каталоги сервера Novell командой ncpmount.
Предостережение!
Никогда не вставляйте команды ncpmount в файл типа /etc/rc.d/rc.local! Это небезопасно с той точки зрения, что если злоумышленник проникнет в вашу машину — то он получит доступ и к серверам Novell . Лучше, если вы будете выполнять монтирование по мере необходимости. И не забывайте размонтировать их по исчерпанию необходимости. В команде ncpmount можно задать и пароль в виде параметра команды, но стоит этого делать: такой вызов сохраняется в истории команд и пароль может стать известным злоумышленнику. Не стоит и сохранять пароль в каком-либо скрипте, — это тоже канал возможной компрометации пароля.
Подключение к Windows-сети
Я наверняка не ошибусь, если буду утверждать, что большинство компьютеров в вашей локальной сети работают под управлением ОС Windows. В таком случае к тем ресурсам этих компьютеров, которые «отданы» в общее пользование, проще всего подключаться, используя пакет Samba.
Получение сетевого адреса и установка ПО
Поскольку вы собираетесь устанавливать машину с Linux в уже существующую сеть, то следующим вашим шагом при подключении к сети должно стать обращение к администратору сети за получением сетевого адреса. Точнее, вы должны получить следующую информацию: IP адрес вашего компьютера; IP адрес сети; широковещательный IP-адрес; имя домена, в который будет включен ваш компьютер; маску подсети; IP адрес маршрутизатора (router); IP адрес сервера имен (DNS-сервера).
Заодно согласуйте с администратором сетевое имя, которое вы выбрали для своего компьютера (чтобы избежать его совпадения с именем какого-то из уже включенных в сеть компьютеров).
Далее необходимо проверить, что у вас установлено программное обеспечение, необходимое для подключения к сети, а именно, пакет net-tools. Для проверки воспользуйтесь командой
[root]# rpm –qa | grep net
или менеджером пакетов (если вы работаете с KDE). Если пакет не установлен, то необходимо установить его с вашего дистрибутивного диска.
Программа ftp
Программа ftp — это пользовательский интерфейс к стандартному протоколу передачи файлов по Интернету — File Transfer Protocol. Программа позволяет передавать файлы на удаленный компьютер и получать файлы с удаленного компьютера. Однако, введя команду ftp, вы запускаете только клиентскую программу. Для того чтобы получить доступ к файлам удаленного компьютера, на нем должен быть запущен ftp-сервер. Кроме того, необходимо знать либо имя и пароль пользователя, либо ftp-сервер должен разрешать анонимный доступ. Предположим, что эти условия выполнены и вы запустили программу ftp (без параметров). Вы увидите приглашение интерпретатора команд этой программы:
ftp >
Если ввести знак вопроса, программа выдаст перечень возможных команд. Первая команда, которую нужно в этом случае ввести, — команда open, после которой надо указать сетевое имя компьютера, на котором запущен ftp-сервер. Если анонимный доступ к этому серверу разрешен, то вы получите запрос на ввод имени и пароля пользователя. По команде pwd можно узнать имя текущего каталога на удаленном компьютере, а по команде dir — вывести список файлов и подкаталогов этого каталога. Команда cd имя_каталога используется для смены текущего каталога на удаленном компьютере.
В любой момент вы можете повторно ввести команду ? или ее эквивалент help , чтобы получить подсказку по возможным командам. Для получения более подробной подсказки по конкретной команде надо ввести имя интересующей вас команды после help или ? , например, так:
ftp > help dir
Если вы хотите выполнить какую-то команду на локальном компьютере (например, выяснить имя текущего каталога), надо дать соответствующую команду, перед которой поставить восклицательный знак:
ftp >! pwd
! — это команда интерпретатора, вызывающая новый экземпляр оболочки shell локального компьютера. Первый аргумент, следующий за !, должен быть командой оболочки, а все остальные аргументы — аргументами вызываемой команды. Для смены текущего каталога на локальном компьютере имеется специальная команда lcd (очень полезная, поскольку часто до запуска ftp забываешь перейти в тот каталог, куда хочешь скопировать файл с удаленного компьютера; не выходить же из-за этого из программы ftp).
Для пересылки файла на удаленный компьютер используется команда
ftp > put имя_файла
(или ее синоним send), а для копирования файла с удаленного компьютера в текущий каталог на локальном диске — команда
ftp > get имя_файла
В принципе этих двух команд вполне достаточно для организации обмена файлами с удаленным компьютером, но как же неудобно ими пользоваться! Приходится набирать полностью имена всех пересылаемых файлов. Поэтому испытываешь воистину большое облегчение, когда узнаешь, что существуют такие команды как mput и mget. Они позволяют задать шаблон имени пересылаемых файлов, и будут дополнительно переспрашивать, надо ли пересылать каждый конкретный файл. Благодаря этому можно (самый крайний случай) заказать пересылку всех файлов:
ftp > mget *
а потом либо подтверждать пересылку очередного файла, либо отказываться. Конечно, когда файлов в каталоге очень много, то и это окажется утомительной процедурой, но ведь можно задать более разумный шаблон! Так что думайте, как облегчить себе работу.
Перед тем, как начать пересылку файлов, следует еще выполнить одну из команд, определяющих режим пересылки: ascii или binary . По умолчанию программа использует режим "ascii", и это вполне допустимо при пересылке текстовых файлов, но если вы собираетесь передать или получить исполняемый файл, то необходимо задать режим "binary". Процесс пересылки файлов можно прервать с помощью комбинации клавиш <Ctrl>+<C>.
Пока вы находитесь в программе ftp, вы можете выполнить некоторые операции с файлами и каталогами на удаленном компьютере (конечно, для этого надо иметь соответствующие права). По команде
ftp > rename from_name to_name
осуществляется переименование файла или каталога; команда
ftp > mkdir name
создает каталог, а
ftp > delete name
удаляет файл или каталог. Еще одна интересная команда — system, позволяет выяснить тип операционной системы на удаленном компьютере. Ну, и наконец, команда close (или disconnect) позволяет завершить сеанс работы с удаленным компьютером, не выходя из программы ftp (т. е. предполагается, что после этого вы снова дадите команду open, например, для соединения с другим компьютером). Если же вы хотите вообще выйти из программы, то надо дать команду bye.
Я думаю, что приведенных здесь сведений вполне достаточно для успешной работы с программой ftp (для копирования файлов с удаленного или на удаленный компьютер, на котором запущен ftp-сервер). С другими возможностями этой очень полезной и широко применяемой программы вам придется знакомиться самостоятельно (вернее, с помощью man-страниц и системы info).
Программы telnet и ftp
После того, как вы убедились, что подключение к сети работает, можно попытаться выйти на какой-либо компьютер в сети по протоколу telnet или ftp. Telnet и ftp — это как имена протоколов для взаимодействия компьютеров, так и названия соответствующих клиентских программ, реализующих эти протоколы, и обеспечивающих доступ пользователям к удаленным компьютерам. Программы telnet и ftp по умолчанию устанавливаются при инсталляции системы, так что об установке их говорить не будем ().
Программы telnet и rlogin
Для того чтобы воспользоваться программой telnet, вам необходимо знать имя или IP-адрес удаленного компьютера, работающего под управлением ОС типа UNIX, на котором для вас открыт пользовательский бюджет. Предположим для примера, что на компьютере linux2 имеется пользователь user5, пароль которого вам известен. В таком случае вы можете дать команду
[user]$ telnet linux2
Если программе удалось подключиться к указанному компьютеру, на экране появится сообщение "Connected to server linux2" и приглашение к входу в систему, как если бы вы сидели за терминалом компьютера linux2. Вводите имя (user5) и пароль, и вы будете работать на этом компьютере.
Команда rlogin может быть использована для выхода на удаленный компьютер вполне аналогично команде telnet, хотя лучше сразу указать в командной строке имя пользователя:
[user]$ rlogin -l user5 linux2
Завершив работу, не забудьте закрыть сессию (командой exit). После этого программа telnet (или rlogin) докладывает, что сессия закрыта, и вы возвращаетесь к командной строке локальной оболочки.
Когда вы работаете с программой telnet, вы полностью работаете на удаленном компьютере: команды выполняются в его оперативной памяти, вы видите (по команде ls) каталоги и файлы на дисках удаленного компьютера и т. д. Только вывод результатов осуществляется на ваш монитор. В рамках программы telnet невозможно, например, открыть для просмотра файл, расположенный на локальном диске. Ваш компьютер выполняет только роль удаленного терминала. Если же вы хотите организовать обмен файлами между вашим компьютером и удаленным, можно воспользоваться программой ftp.
Сетевая файловая система NFS
NFS (эта аббревиатура чаще всего расшифровывается как Network File System, хотя в одном из источников я встретил расшифровку Network File Sharing) — это протокол, разработанный Sun Microsystems для разделения ресурсов (файлов и каталогов) локальной сети. NFS-клиент "монтирует" файловую систему, "экспортируемую" NFS-сервером. Смонтированная таким образом файловая система представляется на клиентском компьютере как часть локальной файловой системы.
Протокол NFS предоставляет, в частности, возможность смонтировать корневую файловую систему в процессе загрузки. Таким образом, можно обеспечить работу бездисковых рабочих станций.
Для того чтобы воспользоваться файловой системой NFS, должны быть выполнены два условия:
- поддержка файловой системы NFS должна быть встроена в ядро Linux или быть доступна в виде модуля; в сети должен иметься компьютер, на котором работает NFS-сервер. При этом в файлах настройки этого NFS-сервера должно быть указано, что вашему компьютеру разрешен доступ по NFS.
Пусть NFS-сервер работает на компьютере с именем serv1, причем для доступа по NFS открыт каталог /common, и вы хотите смонтировать его в каталог /mnt/serv1 своей файловой системы. Для этого надо (имея права пользователя root ) выполнить команду
[root]# mount -o rsize=1024,wsize=1024 serv1:/common /mnt/serv1
Если в ответ вы получите сообщение, содержащее слова "Permission denied", значит вам не разрешен доступ на сервер.
Размонтировать файловую систему, смонтированную таким образом, можно обычной командой
[root]# umount /mnt/serv1.
Конечно, если вам постоянно необходимо монтировать каталог /common с сервера serv1, то лучше добавить в файл /etc/fstab строку следующего вида:
serv1:/common /mnt/serv1 nfs rsize=1024,wsize=1024 0 0
Это обычный формат строки файла /etc/fstab:
device mountpoint fs-type options dump fsckorder
Подробнее о выборе опций монтирования файловой системы NFS вы можете прочитать в NFS-HOWTO (этот документ имеется в русском переводе, см. ).
Тестирование сетевого соединения
Чтобы проверить, соединяется ли ваш компьютер с сетью, попробуйте дать команду ping, указав ей в качестве параметра IP-адрес одного из компьютеров сети. Пусть, например, вам известно (узнайте реальный номер и имя у администратора сети), что в сети есть компьютер с IP-адресом 192.168.0.2 и именем pc1. Тогда вы должны дать команду:
[user]$ ping 192.168.0.2
или (тут вы одновременно проверяете и работу службы DNS)
[user]$ ping pc1
Если соединение с сетью установлено, должны появиться и периодически обновляться строчки примерно такого вида:
64 bytes from 192.168.0.2: icmp_seq=0 ttl=32 time=1.2 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=32 time=1.0 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=32 time=1.0 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=32 time=1.0 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=32 time=1.1 ms
Это означает, что сетевое соединение работает. Для того чтобы прервать тестирование сети, нажмите комбинацию клавиш <Ctrl>+<C>.
Утилита netconf
В предыдущих разделах я попытался подробно и последовательно изложить, каким образом можно настроить выход в сеть путем прямого редактирования конфигурационных файлов. Впрочем, настройки локальной сети можно производить и с помощью специальных утилит netconf или netcfg, которые являются просто составной частью пакета linuxconf. Первая из них работает в графическом режиме, а вторая — в текстовом.
Рис. 13.1. Главное меню программы netconf
Надо только иметь в виду, что многие опытные пользователи Linux критически относятся к возможностям пакета linuxconf и предпочитают прямое редактирование конфигурационных файлов. Но для новичка эти утилиты могут оказаться удобнее, поэтому дадим их краткую характеристику на примере программы netconf. Запустив ее, вы увидите окно, изображенное на рис. 13.1.
Для того чтобы задать имя вашего компьютера, надо нажать кнопку Basic host information, после чего появится еще одно окно с пятью закладками. На закладке Host name задается имя компьютера, а на закладке Adaptor1 — параметры IP-соединения (см. рис. 13.2).
Рис. 13.2. Задание имени через netconf | Рис. 13.3. Настройка сетевого адаптера |
Можно ввести параметры непосредственно в появившиеся строки ввода (если вы знаете, что нужно вводить), а можно выбрать подходящий вариант из списка, который появляется, если щелкнуть мышкой по треугольнику в конце строки. После завершения ввода параметров надо нажать экранную кнопку Accept.
Адрес сервера DNS и настройка системы разрешения имен задается в окне, появляющемся при нажатии на кнопку Name server specification (DNS) программы netconf (рис. 13.3). При выходе из программы после завершения редактирования появится дополнительное окно с запросом (рис. 13.4), в котором надо выбрать вариант Activate the changes.
Как видите, пользоваться этой программой несколько удобнее, чем искать нужные конфигурационные файлы и править их вручную. Здесь все настройки сети собраны в одном месте, и их легко задать в одном сеансе работы с программой. Надо только иметь в виду, что для работы с этой программой (как и с конфигурационными файлами) необходимо иметь права суперпользователя.
Рис. 13.4. Настройка системы разрешения имен через netconf,
Рис. 13.5. Сохранение изменений, сделанных через netconf
Затруднения
Если что-то не получается, то проделайте следующее:
- Убедитесь, что между двумя компьютерами имеется связь по сети, для чего дайте команду ping IP-adress с вашего компьютера на тот компьютер, к которому вы хотите получить доступ. Если такая связь есть, проверьте работу DNS, для чего дайте ту же команду ping, но уже с именем удаленного компьютера: ping RemoteName. Если вы подключаетесь к общему ресурсу компьютера, работающего под Windows 95/98, то этого должно быть достаточно; если же вы подключаетесь к Windows NT или 2000, то надо проверить имя пользователя и домена, с которыми ваш компьютер обращается к NT, для чего лучше всего просмотреть журнал событий (аудит входа в систему) на удаленном компьютере; если потребуется, то задать имя пользователя и имя домена (последнее задается в файле /etc/smb.conf).