4.2 Настройка сети
4.2.1 Сетевое оборудованиеКак и большинство наиболее интересных вещей, которые вы можете делать с компьютером, подключение его к сети требует специального аппаратного оборудования. Возможно вам понадобится NIC (Network Interface Card - карта сетевого интерфейса), для подключения к LAN, возможно модем для подключения к провайдеру интернет, а может быть и оба (или несколько каждых из выше перечисленных, а может и ни одного). При настройке удобно разделить аппаратные средства на скажем, PCMCIA (для laptop-ов) и не-PCMCIA категории. Суть этого разделения в том, что сейчас PCMCIA оборудование не поддерживается стандартной поставкой ядра, но поддерживается отдельным пакетом, включающим необходимые драйвера (как модули ядра) и некоторые программы для настройки и управления PCMCIA устройствами. Всё остальное, конечно, управляется стандартной поставкой ядра16.
netmodsДрайвера сетевых устройств, поддерживаемых ядром, включены в пакет netmods (slakware/n3/netmods.tgz)17. Если вы ещё не установили этот пакет, то сейчас самое время установить его. (См. раздел 5.9, для получения информации о том, как устанавливать отдельные пакеты программ.) Модули ядра, которые должны быть загружены во время загрузки компьютера, загружаются из файла rc.modules, расположенного в каталоге /etc/rc.d. В стандартном файле rc.modules есть раздел ''Network device support''. Если вы откроете этот файл и заглянете в упомянутый раздел, вы заметите, что он вначале проверяет, существует ли исполняемый файл rc.netdevice в каталоге /etc/rc.d; rc.netdevice создаётся в том случае, если setup сумел определить ваши сетевые устройства при установке. Если это так, то вы скорее всего не читаете этот раздел (хм, парадокс, однако); ну а если не так, то продолжайте читать. Ниже, после блока ''if'', находится список сетевых устройств и modprobe строчек, каждая из которых прокомментированна. Найдите ваше устройство и раскомментируйте соответствующую modprobe строчку, не забудьте сохранить изменения в файл. Если вы выполните, как root пользователь, rc.modules, то драйвер вашего устройства должен загрузиться (так же, как и все остальные откомментированные модули). Обратите внимание, что некоторые модули (такие, как драйвер ne2000) требуют указания параметров; убедитесь, что вы выбрали правильную строчку.
Сетевые устройства PCMCIAСетевые устройства PCMCIA настроить пожалуй даже проще, чем остальные. Убедитесь, что вы установили pcmcia пакет (slakware/a11/pcmcia.tgz. (См. раздел 5.9 для подробностей по установке пакетов). При установке pcmcia пакет создаст файл rc.pcmcia в /etc/rc.d каталоге и директорию /etc/pcmcia, а так же установит драйвера в каталог /lib/modules/<версия ядра>/pcmcia. Что здорово в этом пакете, так это то, что он попробует автоматически определить вставку и извлечение поддерживаемых pcmcia устройств; если вы просто вставите ваш сетевой pcmcia адаптер то услышите звуковой сигнал при загрузке необходимого модуля. При извлечении карты, её модуль должен быть автоматически выгружен. К сожалению, если вы обновите ядро, вам скорее всего понадобится перекомпилировать pcmcia-cs, чтобы обновить драйвера. Естественно, исходный текст поставляется с дистрибутивом; поищите в /source/a/pcmcia каталоге исходники, сценарии и загляните в документацию.
4.2.2 Сетевые утилиты
ifconfigНу вот, ваше ядро уже умеет общаться с сетевым оборудованием. Теперь надо научить программы указывать ядру куда передавать информацию, и наоборот. Нам надо настроить интерфейс. Нам нужен ifconfig(8). ifconfig лучше всего изучать на примерах; вы можете захотеть просто заглянуть в ваш rc.inet1 файл (описанный в разделе 4.2.4), чтобы посмотреть, как программа запускается оттуда. Типичный вариант выглядит следующим образом:
Эта строчка поднимает eth0 (первый сетевой интерфейс; для token ring используется tr0, для ppp - ppp0, и т.д.), с IP адресом 192.168.1.10, широковещательным адресом 192.168.1.255 (вся подсеть 192.168.1.) и сетевой маской 255.255.255.0 (показывает, что три первых части IP адреса относятся к сети, а .10 относится к вашему хосту). До тех пор, пока вы не делаете что-то очень неординарное, вы можете почти всегда использовать широковещательный адрес, состоящий из первых трёх блоков вашего IP, и завершающийся числом 255. Так же, почти всегда вы можете пользоваться маской сети 255.255.255.0. Если вы делаете что-то неординарное, вы наверное знаете достаточно, и эта часть книги вам вовсе не понадобится. ifconfig так же может быть использован для просмотра текущих настроек. Запустите его без опций или параметров, чтобы получить список всех ваших сетевых интерфейсов и их настроек.
routeДля того, чтобы знать, какую куда посылать информацию, ядро использует роутинговую таблицу (routing table). Я не собираюсь углубляться в подробности, но вы можете просмотреть эту таблицу при помощи /sbin/route(8). route -n выдаст вам таблицу IP адресов вместо имён; это полезно в случае возникновения затруднений с вашим сервером имён или если вы просто не интересуетесь иллюзорным миром доменных имён. К счастью, если вам надо настроить простую сеть (как и большинству людей), то 2.2 ядро автоматически создаст роутинговую таблицу за вас.
netconfignetconfig это часть программы установки Slackware, но как и большинство частей программы установки, может быть использована самостоятельно. netconfig достаточно проста в использовании и проведёт вас через процесс установки обычного сетевого соединения. Она особенно пригодна, если вы не очень знакомы, или вам просто не нравится копаться в сетевых rc файлах. После запуска netconfig должен появится такой экран:
Затем вам предложат ввести имя хоста и домена вашего компьютера. Скорее всего вы можете ввести просто что-нибудь, если конечно вы не настраиваете сервер, которым будут пользоваться много народа. Затем вас спросят, будете ли вы использовать статический IP, динамический DHCP, или же просто loopback.
Если вы не будете подключены к сети, выберите loopback. Если вы настраиваете компьютер, который будет подключён к университетской или большой офисной сети, то наиболее вероятно, вам придётся выбрать DHCP. Иначе выбирайте статичный адрес. Если вы не выбрали статичный адрес, то на этом программа завершиться. Если же вы выбрали статичный адрес, то вам будет необходимо указать IP вашего компьютера, маску сети, широковещательный адрес и адрес сервера имён. netconfig подскажет вам, как выяснить все эти параметры.
pppsetupВ Slackware есть pppsetup - утилита для настройки dialup соединения к ISP (Internet Server Provider). Она находится в ppp.tgz пакете из раздела программ N. pppsetup использует такой же интерфейс, как и программа установки. Если вы не помните, как пользоваться этим интерфейсом, то вернитесь к разделу 3.1.2, для получения справки. pppsetup задаст вам много вопросов и установит несколько конфигурационных файлов в /etc/ppp. Как root запустите pppsetup; давайте пройдёмся по списку вопросов.
4.2.3 Файлы /etc/etc/inetd.confДля операционной системы, ориентированной на сетевое использование, вполне нормальным является запуск различных сетевых сервисов. Обычно для каждого из сервисов должна существовать программа, которая будет сидеть и слушать запросы по соединениям. Что может стать обременительным для системы, если в ней запущенно слишком много различных сервисов. Для уменьшения загрузки системы была создана программа inetd. inetd - это ''интернет-суперсервер''. Эта программа слушает запросы по многим socket-ам, и когда поступает запрос, inetd передаёт управление соответствующему серверу, для обработки запроса. Таким образом вместо нескольких ожидающих серверов, запущен только один.Файл настроек для inetd - /etc/inetd.conf. В нём определяется, какой сервер должен быть запущен для какого соединения. В man страничке для inetd(8) вы, конечно, можете найти больше информации о использовании программы. Давайте быстренько пробежимся по основным сервисам:
Эта строчка относится к ftp серверу. Обратите внимание, вначале идёт имя протокола - ''ftp'', а в конце - программа, которая должна быть запущена для ответа на запрос. В приведённом примере, программа, которая должна быть запущена для ответа на поступивший запрос соединения - это /usr/sbin/tcpd; это программа ''wraper'', которая обеспечивает основные требования безопасности для того сервера, для которого она запущена. wu.ftp фактически и есть наш ftp сервер21, но tcpd запускает его для вас. Больше информации вы можете найти в разделе 4.2.7. Как и в большинстве системных файлов, строчки в inetd.conf комментируются символом #; вы можете активизировать и (или) остановить сервисы для inetd, откомментировав или закомментировав соответствующие строчки в этом файле и последующим перезапуском inetd.
/etc/resolv.confЭтот файл сообщает всей основной системе, откуда брать DNS информацию. Все серверы имён, которыми вы пользуетесь, перечислены здесь, так же и имя домена вашего хоста. Вот вам пример этого фала (с laptop-а на котором я печатаю всё это - ninja.tdn):
Первая строчка описывает имя домена для ninja; это всё что идёт после имени домена в моём адресе. Вторая - DNS сервер в нашей домашней сети. Вы можете прописать их столько, сколько захотите; они будут обработаны в том порядке, в котором записаны, когда какой-то программе необходимо найти IP адрес, соответствующий какому-то доменному имени. Последняя строчка немного интереснее. Она описывает все доменные имена, присваиваемые системе. Например, предположим, у меня есть машины zuul.tdn и hejaz.slackware.com. Я могу просто выполнить ping zuul и ping hejaz, чтобы пропинговать их, соответственно. ping вначале попробует добавить ''.tdn'' к имени zuul, и найдёт соответствующий хост. В случае с ''hejaz'' вначале будет опробовано имя ''hejaz.tdn''. Соответствующий хост не будет обнаружен, и поэтому будет произведён поиск ''hejaz.slackware.com'' и бинго. Следует отметить, что все домены, перечисленные в search должны заканчиваться на '.', за исключением последнего; если есть только один, то он же и является последним, и поэтому указывать '.' не надо.
/etc/hostsФайл hosts позволяет осуществить простейший способ поиска хостов в домене. Он представляет собой список хостов и соответствующих им IP адресов. Это полезно в небольших сетях, где использование DNS не оправдано, так же этот файл используется во время загрузки системы, когда сервер имён ещё не доступен. Мой выглядит следующим образом:
Первая строчка должна быть само-достаточной. Вторая может и не быть. Вы можете указать столько имён и синонимов для одного адреса, сколько захотите, разделяя их пробелами. Итак, у меня ''192.168.1.32'' переводится в ''ninja.tdn'' (и наоборот), но синоним ''ninja'' так же может быть использован, когда мне лень набирать ''.tdn'' (как обычно и происходит).
4.2.4 rc.inet1/etc/rc.d/rc.inet1 это файл, используемый для сетевой ''инфраструктуры'' - он инициализирует устройства и устанавливает адреса и пути. rc.inet1, поставляемый Slackware, достаточно подробно прокомментирован, так что мы повторимся если повторим всё это здесь.
4.2.5 rc.inet2Файл /etc/rc.d/rc.inet2 относится к другой части сети: установке сервисов и демонов22 и оперирует со всеми интересными настройками сети. Давайте рассмотрим блок для примера:
Важна здесь четвёртая строчка, которая запускает named(8). Всё остальное лишь дополнения: ''if'' проверяет существует ли named программа там, где она должна быть, а echo строчка выдаёт на экран, что программа named запускается, при загрузке системы. Большинство серверов, запускаемых из rc.inet2, загружаются блоками вроде этого; простая проверка того, есть ли какие-то серьёзные причины, чтобы не запускать их, вывод информации о том, что они запускаются, и затем команды, загрузки самих сервисов. Опять таки, rc.inet2 достаточно подробно прокомментирован; погрузитесь в него на какое-то время, и вы найдёте много полезной и интересной информации.
4.2.6 NFS (Сетевая Файловая Система)Сетевая Файловая Система используется в основном, чтобы разделять файлы в сети для общего использования. Здорово в NFS то, что она разработана таким образом, что одна машина может монтировать разделяемые ресурсы другой и обходиться с ними, как с локальными файлами. Для настройки NFS необходимо проделать несколько действий. Первым делом соответствующие сервисы должны быть запущенны на сервер-машине: potmap(8), nfsd(8) и mountd(8). Второе - сервер должен соответствующим образом ''экспортировать'' дерево файловой системы клиенту, что осуществляется через exports(5) файл из /etc. Первая часть выполняется установкой tcpip1.tgz пакета (из N раздела) и добавкой разрешения выполнения для rc.inet2. /etc/exports немного более забавен. Предположим, у нас есть каталог с образами на battlecat.tdn, который мы хотим подключить к ''ninja.tdn''. На battlecat, нам нужна строчка в /etc/exports которая выглядит следующим образом:
Теперь на ninja мы можем просто задать команду:
чтобы подключить каталог образов к локальному каталогу /mnt. К сожалению, я запретил сам себе запись в разделяемый каталог - указанием параметра ''(ro)'' в фале /etc/exports машины battlecat, который означает ''только для чтения''. Все такие параметры следует указывать после имени клиента, в скобках, разделённые запятыми. Например:
''rw'' означает ''чтение-запись'' (см.exports(8) man страницу для получения подробностей), пользователям с ninja разрешается запись в разделяемый каталог. Мне не нравится squash, так что я думаю, что оставлю его вам для самостоятельного изучения через его man страницу; если вы планируете много работать с NFS, то exports(8) станет вашим лучшим другом.
4.2.7 tcp_wrapperstcp_wrappers - это основная система предотвращения (а так же разрешения) доступа к сервисам со специфических хостов. Он работает следующим образом: inetd (интернет суперсервер) запускает много серверов, большинство из которых ''окутаны'' (от английского wrap) программой tcpd. Другими словами, tcpd на самом деле запускает эти серверы, но inetd не знает этого (или, точнее его это не интересует). tcpd логирует попытки соединения, и затем проверяет фалы /etc/hosts.allow и /etc/hosts.deny, чтобы проверить, разрешать ли доступ к запрашиваемому сервису. Правила, определённые в этих файлах могут быть довольно сложными, но давайте предположим, что pyramid.tdn действительно насаждает и не хочет оставить бедную маленькую машину mojo.tdn в покое. На mojo.tdn можно прописать следующую строчку в /etc/hosts.deny:
Смысл этой строчки должен быть очевиден: она перекрывает доступ хосту pyramid ко всем сервисам на mojo, которые защищены при помощи tcpd. Если меня в добавок к pyramid раздражает весь домен .annoying.domain, я могу записать строчку:
Подождите! Мой друг Hobbes застрял за компьютером в этой .annoying.domain, и я хочу предоставить ему доступ к моему компьютеру (но только не его раздражающим меня дружкам). Это достаточно просто. Оставим hosts.denny в покое, и обратимся к hosts.allow. Следующая строчка откроет Hobbes-у доступ:
Для подробностей смотрите tcpd(8), hosts_access(5) и hosts_options(5). Система tcp_wrappers гораздо более гибка в настройках, чем приведённые примеры, и очень полезна и эффективна при более подробном изучении.
4.2.8 ИтогВ этом разделе вы изучили, основы настройки системы для подключения к сети, как обходиться с конфигурационными файлами, а так же изучили некоторые из основ безопасности. В добавок к этому вы узнали, что такое Сетевая Файловая Система (NFS) и как включить её на вашем компьютере. Подключение системы к сети позволяет вам получить доступ ко всем видам сервисов: почта, новости и вэб-сайты. См. раздел 5.6 для информации о том, как пользоваться некоторыми из основных сетевых программ.
File translated from TEX by TTH, version 2.89. On 24 Apr 2001, 16:43. |