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), чтобы посмотреть, как программа запускается оттуда. Типичный вариант выглядит следующим образом:
# ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 |
netmask 255.255.255.0
|
Эта строчка поднимает 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 ядро автоматически создаст роутинговую таблицу за вас.
netconfig
netconfig это часть программы установки 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; давайте пройдёмся по списку вопросов.
- Phone number
- Здесь вам следует указать номер вашего ISP, с указанием в качестве префикса, типа набора номера. Для большинства людей тональный набор будет правильным выбором18. Если номер вашего провайдера 555-1013 и вы используете тональный набор, то вам надо ввести atdt555101319. Если на вашей телефонной линии есть call waiting (ожидание звонка) и вы хотите отключить этот режим во время работы с провайдером, то введите что-то вроде atdt*70,5551013. Запятая необходима. Она вставляет 1,5 секундную паузу после *70, чтобы отключить режим ожидания звонка. Без запятой это не сработает.
- Modem device
- Здесь вам следует выбрать, куда подключён ваш модем. Если вы знаете на каком COM порте он был под Windows, то вы можете выбрать из списка эквивалент. Иначе вам придётся поэкспериментировать. Наиболее логично начать с ttyS0 и пройтись по списку.
- Modem baud rate
- Подберите baud rate, который наиболее близок вашему модему. Если вы не знаете baud rate, обратитесь к документации вашего модема.
- Callback
- Теперь вам понадобится вся информация, предоставленная вам вашим ISP. Очень немногие ISP используют callback, так что скорее всего, вы можете спокойно ответить ''No'' на этот вопрос. Callback, это когда вы вначале звоните ISP, а затем они перезванивают на ваш номер, и только тогда вы можете войти в сеть. Если вам надо использовать callback, то ответьте ''Yes'' на этот вопрос. Тогда вам будет предложено ввести номер вашего телефона, login и пароль. Возможно, вам не понадобится вводить ваши начальные логин и пароль. Ну и наконец, последний вопрос: какую из схем идентификации (authentication) использует ваш провайдер. Если это CHAP или PAP, то ответьте ''Yes''. Позже вам необходимо будет настроить это. Смотрите ниже, как это сделать. Если они не пользуются вышеперечисленными методами, то ответьте ''No'' и смотрите раздел ''Chat script'' ниже.
- Modem init string
- Если у вас не какой-то необычный модем, то вам скорее всего можно просто нажать ввод, чтобы выбрать строку инициализации модема по умолчанию (''AT&FH0''). Иначе, смотрите документацию вашего модема. И найдите там строку инициализации, рекомендованную для вашего модема.
- Domain name
- Теперь вам надо ввести доменное имя вашего провайдера. Это будет что-то вроде ''primer.net'', ''slackware.com'' или что-то похожее. (Ну ладно, почти наверняка это будет не slackware.com :)
- DNS IP address
- Ваш ISP должен предоставить вам IP адрес их сервера имён. Если он у вас есть, введите его тут. Иначе обратитесь к ISP, чтобы узнать его20.
- Authentication method
- Вам необходимо узнать у ISP, пользуются ли они CHAP, PAP, или ни одним из них при идентификации пользователя. Проще всего узнать это, позвонив вашему ISP. Тем не менее, если после набора номера вы увидите приглашение login и password после соединения, то наиболее вероятно, вам следует воспользоваться ''SCRIPT''. Иначе, обратитесь к ISP, чтобы выяснить, каким методом пользоваться.
- PAP или CHAP
- Если вы выбрали PAP или CHAP на экране выбора метода идентификации, то здесь вам необходимо будет ввести ваше имя пользователя (username). ISP должен присвоить вам username. Если это не так, то что-то определённо не правильно. Вам понадобится связаться с ними и получить username. Затем вам будет необходимо ввести пароль, предоставленный вам вашим ISP.
- Chat script
- Если вы выбрали ''SCRIPT'', то вашему вниманию предоставится довольно таки долгое объяснение того, что же такое script. Прочтите его пожалуйста очень внимательно, так как там всё очень подробно описано. в общем, вам необходимо сообщить программе, какую информацию провайдер должен сообщить вашему компьютеру, и что компьютер должен ответить для входа в сеть. Вы попадёте в ''петлю'' вопросов и ответов, где вам надо будет ввести некоторый текст, который компьютер должен ожидать от ISP, и при получении такового, ответить на него то что вы сообщите далее. Для выхода из цикла, просто нажмите ввод на любой пустой строке.
- Done
- В конце на экран будут выведены все данные о ppp конфигурации. Здесь вы не сможете изменить их содержание, но по крайней мере, вы можете проверить, всё ли указанно правильно. Нажмите ввод для того чтобы сохранить все настройки и выйти из программы. На этом экране вы так же найдёте много информации о том, как активизировать ваше dial-up соединение, и как разорвать его. Основная идея этого в следующем: как root, запустите ppp-go, для активизации соединения. Когда программа выдаст вам локальный и удалённый IP, вы подключены к интернет. Когда вы завершили всё, что хотели, выполните ppp-off, как root и эта программа отсоединит вас от сети.
4.2.3 Файлы /etc
/etc/inetd.conf
Для операционной системы, ориентированной на сетевое использование, вполне нормальным является запуск различных сетевых сервисов. Обычно для каждого из сервисов должна существовать программа, которая будет сидеть и слушать запросы по соединениям. Что может стать обременительным для системы, если в ней запущенно слишком много различных сервисов. Для уменьшения загрузки системы была создана программа inetd. inetd - это ''интернет-суперсервер''. Эта программа слушает запросы по многим socket-ам, и когда поступает запрос, inetd передаёт управление соответствующему серверу, для обработки запроса. Таким образом вместо нескольких ожидающих серверов, запущен только один.
Файл настроек для inetd - /etc/inetd.conf. В нём определяется, какой сервер должен быть запущен для какого соединения. В man страничке для inetd(8) вы, конечно, можете найти больше информации о использовании программы. Давайте быстренько пробежимся по основным сервисам:
ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -l -i -a
|
Эта строчка относится к 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):
domain tdn |
nameserver 192.168.1.1 |
search tdn. slackware.com
|
Первая строчка описывает имя домена для 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 не оправдано, так же этот файл используется во время загрузки системы, когда сервер имён ещё не доступен. Мой выглядит следующим образом:
127.0.0.1 localhost |
192.168.1.32 ninja.tdn ninja
|
Первая строчка должна быть само-достаточной. Вторая может и не быть. Вы можете указать столько имён и синонимов для одного адреса, сколько захотите, разделяя их пробелами. Итак, у меня ''192.168.1.32'' переводится в ''ninja.tdn'' (и наоборот), но синоним ''ninja'' так же может быть использован, когда мне лень набирать ''.tdn'' (как обычно и происходит).
/etc/rc.d/rc.inet1 это файл, используемый для сетевой ''инфраструктуры'' - он инициализирует устройства и устанавливает адреса и пути. rc.inet1, поставляемый Slackware, достаточно подробно прокомментирован, так что мы повторимся если повторим всё это здесь.
Файл /etc/rc.d/rc.inet2 относится к другой части сети: установке сервисов и демонов22 и оперирует со всеми интересными настройками сети. Давайте рассмотрим блок для примера:
#Start the NAMED/BIND name server: |
if [ -f $NET/named ]; then |
echo -n ''named'' |
$NET/named -u daemon -g daemon |
fi
|
Важна здесь четвёртая строчка, которая запускает 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 которая выглядит следующим образом:
/var/media/images ninja.tdn(ro)
|
Теперь на ninja мы можем просто задать команду:
#mount -t nfs battlecat.tdn:/var/media/images /mnt,
|
чтобы подключить каталог образов к локальному каталогу /mnt. К сожалению, я запретил сам себе запись в разделяемый каталог - указанием параметра ''(ro)'' в фале /etc/exports машины battlecat, который означает ''только для чтения''. Все такие параметры следует указывать после имени клиента, в скобках, разделённые запятыми. Например:
/var/media/images ninja.tdn(rw,no_root_squash)
|
''rw'' означает ''чтение-запись'' (см.exports(8) man страницу для получения подробностей), пользователям с ninja разрешается запись в разделяемый каталог. Мне не нравится squash, так что я думаю, что оставлю его вам для самостоятельного изучения через его man страницу; если вы планируете много работать с NFS, то exports(8) станет вашим лучшим другом.
4.2.7 tcp_wrappers
tcp_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, я могу записать строчку:
ALL: pyramid.tdn, .annoying.domain
|
Подождите! Мой друг Hobbes застрял за компьютером в этой .annoying.domain, и я хочу предоставить ему доступ к моему компьютеру (но только не его раздражающим меня дружкам). Это достаточно просто. Оставим hosts.denny в покое, и обратимся к hosts.allow. Следующая строчка откроет Hobbes-у доступ:
ALL: hobbes.annoying.domain
|
Для подробностей смотрите tcpd(8), hosts_access(5) и hosts_options(5). Система tcp_wrappers гораздо более гибка в настройках, чем приведённые примеры, и очень полезна и эффективна при более подробном изучении.
В этом разделе вы изучили, основы настройки системы для подключения к сети, как обходиться с конфигурационными файлами, а так же изучили некоторые из основ безопасности. В добавок к этому вы узнали, что такое Сетевая Файловая Система (NFS) и как включить её на вашем компьютере. Подключение системы к сети позволяет вам получить доступ ко всем видам сервисов: почта, новости и вэб-сайты. См. раздел 5.6 для информации о том, как пользоваться некоторыми из основных сетевых программ.
File translated from
TEX
by
TTH,
version 2.89. On 24 Apr 2001, 16:43.
|