енять ваш хост через transceiver. Вы можете воткнуть transceiver непосредственно AUI порт на вашей плате, но можете также использовать кусок кабеля. 4.4.2. Поддержка платы Полный список поддерживаемых плат доступен в Ethernet HOWTOs расположенных на comp.os.linux.announce Paul Gortmaker. Вот список наиболее широко известных платы, поддерживаемых Linux. Полный список в HOWTO приблизительно в три раза длиннее. Однако, даже если Вы нашли вашу плату в этом списке, проверите сначала HOWTO; иногда существуют важные детали относительно работы этих карт. На пример, некоторые DMA-основанные Ethernet платы используют тот же самый DMA канал что и Adaptec 1542 SCSI контролер. Если Вы не переместите один из них на другой DMA канал, не удивляйтесь, что ваша Ethernet плата пишет данные в произвольные места вашего жесткого диска. - 65 - 3Com EtherLink поддерживаются и 3c503 и 3c503/16, как - 3c507 и 3c509. 3c501 также поддерживается, но слишком медленна, чтобы ее покупать. Novell Eagle NE1000 и NE2000, и разнообразные клоны. NE1500 и NE2100 также поддерживаются. Western Digital/SMC WD8003 и WD8013 ( то же самое что SMC Elite и SMC Elite Plus) поддержана также и более новая SMC Elite 16 Ultra. Hewlett Packard HP 27252, HP 27247B и HP J2405A. D-Link DE-600 pocket adaptor, DE-100, DE-200, и DE-220-T.. Имеется также комплект для DE-650-T, который является PCMCIA картой. (4) DEC DE200 (32K/64K), DE202, DE100, и DEPCA rev E. Allied Teliesis AT1500 and AT1700. Чтобы использовать одну из этих карт, Вы можете использовать ядро от одной из главных Linux дистрибуций. Они вообще имеют драйвера для всех из них. Однако, лучше собрать ваше собственное ядро и собирать с единственном драйвером, в котором Вы фактически нуждаетесь. 4.4.3. Автоматическое определение Ethernet Во время загрузки, Linux попробует найти вашу плату и определить ее тип. Карты ищутся по следующим адресам и в следующем порядке: ------------------------------------------------------ +--------------+-------------------------------------+ |карта | адреса поиска | +--------------+-------------------------------------+ |WD/SMC | 0x300, 0x280, 0x380, 0x240 | - 66 - |SMC 16 Ultra | 0x300, 0x280 | |3c501 | 0x280 | |3c503 | 0x300, 0x310, 0x330, 0x350, 0x250, | | | 0x280, 0x2a0, 0x2e0 | |NEx000 | 0x300, 0x280, 0x320, 0x340, 0x360 | |HP | 0x300, 0x320, 0x340, 0x280, 0x2C0, | | | 0x200, 0x240 | |DEPCA | 0x300, 0x320, 0x340, 0x360 | +--------------+-------------------------------------+ +--------------+-------------------------------------+ Имеются два ограничения autoprobing. Во первых, он может не распознавать все платы должным образом. Это особенно касается некоторых из дешевых клонов известных плат, а также для некоторых WD80x3 плат. Вторая проблема состoит в том, что ядро находит не больше одной платы. Если Вы используете больше чем одну плату, или если autoprobe не в состоянии обнаружить вашу плату, Вы должны явно сообщить ядру основной адреса карты и имя. В Net-3, для этого Вы может использовать две различных схемы Один путь состoит в том, чтобы изменить или добавить информацию в файл drivers/net/Space.c в исходном коде ядра, который содержит всю информацию относительно драйверов. Это рекомендуются только, если Вы знакомы с сетевым кодом. Лучший путь состoит в том, чтобы обеспечить ядро этой информацией при загрузке. Если Вы используете lilo для загрузки вашей системы, Вы можете передавать параметры ядру, определяя их через опцию в lilo.conf. Чтобы сообщить ядру о Ethernet устройстве, Вы можете передавать следующий параметр: ether=irq,base addr,param1,param2,name Первые четыре параметра числовые, в то время как последний - имя устройства. Все числовые значения необязательные; если они опущены или равны нолю, ядро будет пробовать само обнаружить эти значения или использует значение установленное по умолчанию. Первый параметр устанавливает IRQ для устройства. Если он не указан, ядро будет пробовать обнаружить IRQ канал само. 3c503 драйвер - 67 - имеет специальную особенность, которая позволяет ему выбирать свободный IRQ (из 5, 9, 3, 4) и конфигурировать плату для использования этой линии. addr параметр задает основной адрес ввода-вывода платы; значение ноль сообщает ядру исследовать адреса внесенные в следующий список. Следующие два параметра могут использоваться по-разному различными драйверами. Для плат с разделяемой памятью типа WD80x3, они определяют начальный и конечный адреса разделенной области памяти. Другие карты обычно используют param1 чтобы устанавливать уровень отладочной информации. От 1 до 7 обозначают увеличивающиеся уровни подробности, в то время как 8 выключает их; 0 обозначает значение установленное по умолчанию. 3c503 драйвер использует param2 чтобы выбрать внутренний transceiver (установленный по умолчанию) или внешний transceiver ( значение 1). Первый использует BNC; последний -- AUI порт. Если Вы имеете две Ethernet платы, Вы можете одну плату определять автоматически, а параметры второй платы с помощью lilo. Однако, Вы должны удостоверился, что драйвер случайно не находит вторую плату, в то время как первая не будет регистрироваться вообще. Это можно сделать, указывая в lilo избегать исследовать пространство ввода-вывода занятое второй платой. Например, прося Linux установить вторую Ethernet плату в 0x300 как eth1, Вы бы передали следующие параметры к ядру: Reserve=0x300,32 ether=0,0x300, eth1 reserve опция требует чтобы никакие драйверы не трогали при исследование пространство ввода-вывода некоторого устройства. Вы можете также использовать параметры ядра для управления авто поиском: Reserve=0x340,32 ether=0,0x340, eth0 Чтобы выключить autoprobing вообще, Вы можете определить addr в -1: - 68 - Ether=0,-1, eth0 4.5. PLIP Драйвер PLIP основан на IP для параллельных линий и используется, если необходимо соединить две машины. Он использует параллельный порт и специальный кабель и позволяет достигать скоростей от 10Кбит/cек до 20Кбит/сек. PLIP был первоначально разработан компанией Crynwr. Довольно оригинальный проект: в течение длительного времени параллельные порты в PC использовались в основном для принтеров; то есть восемь линий использовались только чтобы послать данные с PC на периферийное устройство и никуда больше. PLIP работает, обходя это ограничение, используя пять линий состояний порта для ввода, что позволяет передавать по пол-байта за раз между машинами. Этот режим работы называется mode zero PLIP (0 способ PLIP). Сегодня, эти однонаправленные порты кажется больше нигде не используются. Поэтому, имеется также PLIP расширение, названное способом 1 который использует полный 8 разрядный интерфейс. В настоящее время, только Linux поддерживает 0 способ. В отличии От более ранних версий PLIP, теперь он пытается быть совместимым с PLIP сделанным на Crynwr, а также PLIP драйвером в NCSA telnet. Чтобы соединить две машины использующие PLIP, Вам требуется специальный кабель -- "Null Printer" или "Turbo Laplink" кабель. Вы можете сделать его и сами. Приложение 20.3 описывает как. РLIP поддерживало большое количество людей. В настоящее время его поддерживает Niibe Yutaka. Если PLIP компилируется в ядро, он устанавливает сетевой интерфейс для каждого из возможных портов принтера, plip0 соответствует параллельному порту lp0, plip1 -- lp1, и т.д.. В настоящее время интерфейсы отображаются на порты следующим образом: - 69 - -------------------------------- +-----------+-----------+------+ | Интерфейс | I/O порт | IRQ | +-----------+-----------+------+ |plip0 | 0x3BC | 7 | |plip1 | 0x378 | 7 | |plip2 | 0x278 | 5 | +-----------+-----------+------+ +-----------+-----------+------+ Если Вы отконфигурировали ваш порт принтера по-другому, Вы должны изменить эти значения в drivers/net/Space.c в исходниках ядра Linux, и собрать новое ядро. Этот отображение не означает, однако, что Вы не можете использовать эти параллельные порты как обычные. PLIP драйвер обращается к ним только, когда соответствующий интерфейс отконфигурирован. 4.6. SLIP и PPP Драйвера SLIP (Serial Line IP), и PPP ( Point-to-Point Протокол ) - широко используемые протоколы для посылки IP пакетов через последовательное соединение. Ряд учреждений предлагают телефонный SLIP и PPP доступ на машины которые находятся в Internet, таким образом обеспечивая IP частным лицам. Чтобы запустить SLIP или PPP, не требуется модификации аппаратных средств. Вы можете использовать любой последовательный порт. Более подробно об этом написано в главе 5. . - 70 - 5. Установка последовательных аппаратных средств Ходят слухи, что где-то там существуют люди, которые имеют только один PC и не имеют денег на T1 Internet соединение. Чтобы получить свою ежедневную дозу новостей и почты, они полагаются на SLIP связь, UUCP сети, и системы информационных табло (BBS), которые используют телефонные сети. Эта глава написана для всех тех людей, кто полагается на модемы. Однако, существует большое количество деталей, в которые мы не будем вдаваться, например как конфигурировать ваш модем. Все эти темы будут охвачены в создающемся Serial HOWTO Greg Hankins, который регулярно отправляется по почте к comp.os.linux.announce. 5.1. Коммуникационное программного обеспечения для модемной связи Имеются ряд коммуникационных пакетов доступных для Linux. Многие из них -- это терминальные программы, которые позволяют пользователю на брать номер другого компьютера и работать как будто Вы сидите перед простым терминалом. Традиционная терминальная программа для Unix -- kermit. Имеются более удобные программы, которые поддерживают список телефонных номеров, языки для написания скриптов запросов и описания входа в удаленные системы, и т.д.. Один из них -- minicom, который близок к некоторый терминальным программам для DOS. Имеются также Х-основанные пакеты коммуникаций, например seyon. Также, доступны несколько linux-основанных BBS пакетов для людей, которые хотят управлять системой информационных табло. Некоторые из этих пакетов могут быть найдены на sunsite.unc.edu в /pub/Linux/system/Network. Кроме терминальных программ, имеется также программное обеспечение, которое использует последовательную связь в не - 71 - интерактивном режиме для транспортировки данных к или от вашего компьютера. Преимущество этой техники в том, что требуется гораздо меньше времени, чтобы загрузить несколько дюжины килобайт автоматически, чем это мог бы отнять у Вас при чтении вашей почты интерактивно в некотором почтовом ящике на удаленной машине или при просмотре интересной информации на BBS. С другой стороны, она требует больше места на диске из-за большого количества бесполезной информации, которую Вы обычно получаете. Основной представитель этого вида программного обеспечения -- UUCP. UUCP -- это набор программы, которые позволяют копировать файлы с одного хоста на другой, выполнять программы на отдаленном хосте, и т.д.. Он часто используется для транспортировки почты или новостей в частных сетях. Ian Taylor's UUCP пакет, который работает под Linux, описан в следующей главе. Но есть и другое недиалоговое комуникационное программное обеспечение, например, используемое в Fido. Порты Fido приложений подобно ifmail также доступны. SLIP находится где-то посередине и используется как диалоговыми так и не-диалоговыми приложениями. Множество людей используют SLIP чтобы дозвонится до университетской сети или какого-либо другого общественного SLIP сервера, чтобы управлять FTP сессиями, и т.д.. SLIP может также использоваться для постоянной или полупостоянной связи сеть-сеть, хотя здесь полезен скорее ISDN. 5.2. Представления последовательных устройств Unix ядро обеспечивает обращение к последовательным устройствам, названым ttys. Это - сокращение от названия компании Teletype(tm), которая в прошлом был одним из основных изготовителей терминалов. Этот термин используется в настоящее время для любого основоного на символьных данных устройства. Повсюду в этой главе, мы будем использовать этот термин исключительно по отношению к устройствам ядра. В Linux существует три класса tty: (виртуальные) консоли, псевдо терминалы (подобные дуплексному каналу, используемому приложениями - 72 - типа X11) и последовательные устройства. Последние также причисляется к ttys, потому что они позволяют создавать диалоговые сессии по последовательной связи; будь то интенсивно-зашитый терминал или удаленный компьютер соединенный с данным по телефонной линии. Ttys имеют ряд конфигурируемых параметров которые могут быть установлены с помощью ioctl запроса. Многие из них применяются только для последовательных устройств, так как они нуждаются в большой гибкости для того, чтобы работать с изменяющимися типами соединений. Среди наиболее видных параметров линии -- скорость линии и паритет. Но имеются также флаги для преобразования между верхним и нижним регистрами символов, и т.п. Tty драйвер может также поддерживать различные опции линии, которые заставляют драйвер вести себя совершенно по разному. На пример, SLIP драйвер для Linux может представляется в терминах специальных дисциплин. Существует также некоторая двусмысленность относительно того как измерять скорость линии. Правильно - bit rate(побитовое измерение), которое связано со скоростью линии измеренной в битах за секунду (или bps для краткости). Иногда, люди называют это Бод (Baud), что тоже верно. Эти два термина, однако, не взаимозаменяемы. Бод относит к физической характеристике некоторого последовательного устройства, а именно время за которое произошла передача импульса. Битовое измерение обозначает текущее состояние существующей последовательной связи между двумя точками, а именно средний число битов переданных за секунду. Важно знать что эти два значения обычно различны, поскольку большинство устройств кодируют больше чем один бит за электрический импульс. 5.3. Доступ к последовательным устройствам Подобно всем устройствам в Unix системах, последовательные порты доступны через специальные файлы, располагающиеся в директории /dev. Имеются два множества файлов устройств, связанных с последовательными драйверами, и для каждого порта, имеется один файл из каждого множества. В зависимости от файла к которому обращаются, устройство будет вести себя по-разному. - 73 - Первые файлы требуются в случае, если порт используется для входа; они имеет главный номер 4, и файлы названы ttyS0, ttyS1, и т.д.. Вторые используется для выхода; файлы названы cua0, и т.д., и имеют главный номер 5. Незначительные номера одинаковы для обоих типов. Если ваш модем подключен к одному из портов от COM1 до COM4, незначительный номер будет номер COM порта плюс 63. Если ваша установка отлична от этой, например при использовании платы поддерживающей множество последовательных линий, пожалуйста обратитесь к Serial Howto. Предположим, что ваш модем находится на COM2. Таким образом незначительный номер будет 65, а главный номер для дозвона будет 5. Следовательно, должно иметься устройство cua1 которое имеет этот номер. Просмотрите список последовательный ttys в директрорие /dev. Колонки 5 и 6 должны показать главные и незначительные номера, соответственно: $ ls -l /dev/cua* crw-rw-rw- 1 root root 5, 64 Nov 30 19:31 /dev/cua0 crw-rw-rw- 1 root root 5, 65 Nov 30 22:08 /dev/cua1 crw-rw-rw- 1 root root 5, 66 Oct 28 11:56 /dev/cua2 crw-rw-rw- 1 root root 5, 67 Mar 19 1992 /dev/cua3 Если нет таких устройств, Вы должны создать их: войдите супер-пользователем и наберите # mknod -m 666 /dev/cua1 c 5 65 # chown root.root /dev/cua1 Некоторые Люди предлагают создание символической связи /dev/modem на ваше устройство модема, так, чтобы случайные пользователи не должны были запоминать несколько неинтуитивное cua1. Однако, Вы не можете использовать modem в одной программе, а реальное название файла устройства в другой. Это - потому что эти программы используют так называемые файлы замка (lock files) для обозначения того, что устройство используется. В соответствии с соглашением, имя файла замка для cua1, например, является LCK..cua1. Использование различных файлов - 74 - устройства для того же самого порта приведет к тому, что программы окажутся не в состоянии распознавать файлы замка для каждого имени, и будут и использовать устройство в одно и то же время. В результате, оба приложения не будут работать вообще. 5.4. Аппаратные Средства для последовательных линий. Linux в настоящее время поддерживает разнообразные последовательные платы, которые используют стандарт RS-232. RS-232 в настоящее время наиболее общий стандарт для последовательных коммуникаций в мире PC. Хотя аппаратные средства handshake необязательны, но очень полезны. Они позволяют любой из двух станций сигнализировать о готовности получить данные или о том, что другая станция должна подождать пока приемник не обработает поступающие данные. Линии используемые для этот названы "Clear to Send" (Чистыми для посылки или CTS) и "Ready to Send"(Готовыми послать или RTS), соответственно, которые, объясняют второе название handshake аппаратных средств, а именно "RTS/CTS". В PC, интерфейс RS-232 обычно управляется UART чипом, полученным из 16450 чипа, или более новой его версии, NSC 16550A. Некоторые марки ( особенно внутренних модемов оборудованных набором чипов Rockwell) используют другие чипы, которые были запрограммированы, чтобы вести себя так же как 16550-ые. Главное различие между 16450 и 16550 то, что последний имеют FIFO буфер размером 16 Байт, в то время как первый только 1 байт Это делает 16450 подходящими для скорости в 9600 Бод, в то время как для больших скоростей требуются чипы совместимые с 16550. Кроме этих чипов, Linux также поддерживает 8250 чип, который был сделан специально для PC-AT. В стандартной конфигурации, ядро ищет четыре стандартных последовательных платы от COM1 до COM4. Они связываются с устройствами с незначительными номерами от 64 до 67, так как описано выше. - 75 - Если Вы хотите отконфигурировать ваши последовательные порты по-другому, Вы должны установить Ted Tso's setserial команду в rc.serial скрипте. Этот скрипт должен вызываться из /etc/rc во время загрузки системы. Он использует setserial чтобы конфигурировать последовательные устройства. Типичный rc.serial скрипт напоминает это: # /etc/rc.serial - serial line configuration script. # # Do wild interrupt detection /sbin/setserial -W /dev/cua* # Configure serial devices /sbin/setserial /dev/cua0 auto irq skip test autoconfig /sbin/setserial /dev/cua1 auto irq skip test autoconfig /sbin/setserial /dev/cua2 auto irq skip test autoconfig /sbin/setserial /dev/cua3 auto irq skip test autoconfig # Display serial device configuration /sbin/setserial -bg /dev/cua* Пожалуйста обратитесь к документации, которая поставляется вместе с setserial для объяснения параметров. Если ваша последовательная карта не обнаружена, или setserial -bg команда показывает неправильные установки, Вы должны будете отконфигурировать его явно, используя правильные значения. Пользователи с внутренними модемами оборудованными Rockwell набором чипов как сообщается испытывают эту проблему. Так, например, UART чип называется NSC 16450, в то время как фактически это NSC 16550, Вы должны изменить конфигурационную команду для причиняющего неприятность порта /sbin/setserial /dev/cua1 auto irq skip test autoconfig uart 16550 Подобные опции существуют и для того чтобы изменить основной - 76 - адрес, и IRQ COM порта. Пожалуйста обратитесь к man страницам, setserial(8). Если ваш модем поддерживает аппаратные средства handshake, Вы должны удостовериться, что вы разрешили работу сними. Большинство коммуникационных программ по умолчанию не пытаются этим пользоваться. Вы должны устанавливать его в ручную. Лучше всего это сделать в rc.serial скрипте, используя команду stty: $ Stty crtscts < /dev/cua1 Чтобы проверить действительно ли используется handshake $ Stty -a < /dev/cua1 Это команда выдаст Вам состояния всех флагов для данного устройства; флаг показанный с предшествующим минусом как и в -crtscts означает что флаг выключен. . - 77 - 6. Конфигурирование TCP/IP сети В этой главе, мы пройдем все шаги необходимые для создания TCP/IP сети на вашей машине. Начнем мы с назначения IP адресов и будем медленно проходить весь путь конфигурирования интерфейсов TCP/IP , и в конце рассмотрим несколько инструментов, которые весьма удобны для решения проблем с установкой сети. Большинство работ охваченных этой главой, Вы должны сделать только один раз. Впоследствии, Вы будете изменять конфигурационные файлы только в случае добавлении новой системы к вашей сети, или когда Вы повторно полностью переконфигурируйте вашу систему. Некоторые из команд конфигурирования TCP/IP, однако, должны выполнятся каждый раз когда загружается система. Это обычно делает /etc/rc скрипт. Обычно, специфическая сетевая часть этой процедуры содержится в скрипте названном rc.net или rc.inet. Иногда, Вы будете также видеть два скрипта названные rc.inet1 и rc.inet2, где вышеупомянутый скрипт инициализирует сетевую часть ядра, в то время как последние запускают основные сетевые приложения. Дальше я буду твердо придерживаться этой концепции. Ниже, Я буду обсуждать действия выполняемые в rc.inet1, в то время как приложения будут описаны в более поздних главах. После окончания этой главы, Вы должны установить последовательность команд, которые должным образом конфигурируют TCP/IP сеть на вашем компьютере. Вы можете заменить любые команды в rc.inet1 вашими командами, удостоверится что rc.inet1 выполняется при запуске системы, и перезагрузить вашу машину. Сетевые rc скрипты, которые вы получили наряду с вашим Linux должны быть хорошим примером. 6.1. Установка файловой системы proc Некоторые из инструментов конфигурации в Net-2 для связи с ядром используют файловую систему proc. proc -- интерфейс, разрешающий доступ к информации ядра времени выполнения через механизм похожий на - 78 - файловую систему. Когда он установлен, Вы можете просматривать список его файлов и их содержание также как в любой другой файловой системе. Типичными представителями являются файл loadavg, который содержит среднее число загруженности системы и meminfo, который показывает текущее состояния памяти ядра и использование свопа. К этому, сетевой код добавляет сeтевую директорию. Она содержит ряд файлов, которые отображают состояние вещей типа ARP таблицы, TCP соединений, и таблиц маршрутизации. Большинство инструментов администрирования сети получают информацию из этих файлов. Proc файловая система (или procfs) обычно устанавливается во время загрузки в /proc. Самый лучший метод состoит в том, чтобы добавить следующую строку в /etc/fstab: # procfs mont point: none /proc proc defaults И выполнить "mount /proc" в вашем /etc/rc скрипте. Procfs в настоящее время отконфигурирован в большинстве ядер установленным по умолчанию. Если procfs нет в вашем ядре, Вы можете получить сообщение типа "mount: fs type procfs not supported by kernel". Тогда Вы должны будите повторно собрать ядро и ответить "да" когда вас спросят о поддержки procfs. 6.2. Установка бинарников Если Вы используете одну из пред-пакетных Linux дистрибуций, она вероятно содержит основные сетевые приложения и утилиты наряду с набором примеров. Единственный случай, когда Вам пришлось бы и устанавливать новые утилиты, тогда, когда Вы устанавливаете новый выпуск ядра. Поскольку в них иногда вносятся изменения в сетевом уровне, Вы должны будите модернизировать основные инструменты конфигурации. Это по крайней мере приводит к повторной компиляции, но иногда Вам может потребоваться последний набор бинарников. Они обычно распространяются вместе с ядром и находятся в архиве названном - 79 - netXXX.tar.gz, где XXX - номер версии. Выпуск соответствующий Linux 1.0 -- 0.32b, самое последнее ядро ( 1.1.12 или позже ) требуют 0.32d. Если Вы хотите собрать и установить стандартные TCP/IP сетевые приложения самостоятельно, Вы можете получить исходники на большинстве Linux FTP серверов. Там лежат более или менее тяжело исправленные версий программ от Net-BSD и другие исходники. Другие приложения, типа Xmosaic, xarchie, или Gopher и IRC клиенты нужно получать отдельно. Большинство из них легко собирают, если Вы следуете всем инструкциям. Официальный FTP участок для Net-3 -- sunacm.swan.ac.uk, отраженный sunsite.unc.edu в system/Network/sunacm. Самый последний Net-2e комплект и бинарники к нему доступны на ftp.aris.com. Matthias Urlichs bsd сетевой код может быть взят на ftp.ira.uka.de в /pub/system/linux/netbsd. 6.3. Другой пример Для остатка этой книги, позвольте мне представить новый пример, который является менее сложным чем Groucho Marx Университет, и ближе к задачам, с которыми Вы будете фактически сталкиваться. Рассмотрим виртуальную пивоварню, маленькую компанию, которая варит пиво. Чтобы управлять этим бизнесом более эффективно, в пивоварне хотят создать сети из компьютеров, которые все оказались PC, управляемые Linux 1.0. На том же самом этаже, только через коридор, имеется виртуальная винодельня, которая работает рядом с пивоварней. Там используется собственный Ethernet. Весьма естественно, что две компании хотят связать свои сети. Как первый шаг, они хотят создать gateway, который будет передавать дейтограмы между двумя полсетями. Позже, они также за хотят иметь UUCP связь с внешним миром. В конечном счете, они захотят установить SLIP соединение чтобы соединяться иногда с Internet. 6.4. Установка имени хоста Большинство, если не все, сетевые приложения используют имя локального хоста, которое устанавливается к некоторому разумному - 80 - значению. Чтобы установить имя хоста наберите # hostname name Существует общая практика использовать неквалифицированное имя хоста, то есть без указания названия области для него. Например, хосты в Виртуальной Пивоварне могли бы быть названы vale.vbrew.com, vlager.vbrew.com, и т.д.. Это их официальные, полностью квалифицированные имена области. Их локальные имена -- только первый компонент этого имени, типа vale. Однако, поскольку локальное имя часто используется для поиска IP адреса хоста, Вы должны удостоверится что resolver библиотека способна найти IP адрес данного хоста. Это обычно означает что Вы должны ввести имя в /etc/hosts ( см. ниже ). Некоторые Люди предлагают использовать команду domainname, чтобы развить идею ядра относительно имени области к остающейся части FQDN. Таким образом, Вы могли бы комбинировать вывод от hostname и domainname чтобы получить снова FQDN. Однако, это в лучшем случае правильно на половину . domainname вообще используется чтобы устанавливать NIS область хоста, которая может полностью отличатся от DNS области, к которой ваш хост принадлежит. NIS описан в главе 11 .. 6.5. Назначение IP Адресов Если Вы конфигурируете сетевое программное обеспечение для автономного действия (например, чтобы он мог запустить INN netnews программное обеспечение), Вы можете благополучно пропустить эту секцию, потому что Вы будете нуждаться в IP адресе только для интерфейса loopback, который всегда равен 127.0.0.1. Если Вы хотите соединить ваш хост с существующей сетью, Вы должны просить администраторов дать Вам IP адрес. При создании собственной сети, Вы должны назначать IP адреса самостоятельно как описано ниже. Хосты в пределах локальной сети обычно должны использовать адреса - 81 - от той же самой логической IP сети. Если Вы имеете несколько физических сетей, Вы или должны назначить им различные сетевые номера, или использовать подсети, чтобы расколоть ваш диапазон IP адресов в несколько подсетей. Если ваша сеть не связана с Internet, Вы свободны выбрать любой правельный сетевой адрес. Вы только должны удостовериться, что выбрали его из классов A, B, или C, в противном случае большенство программ будут работать не правильно. Однако, если Вы намереваетесь в ближайшем будущем выйти в Internet, Вы должны получить официальный IP адрес. Самый лучший путь состoит в том, чтобы попросить вашего сетевого поставщика помочь Вам. Если Вы хотите получить сетевой номер только в случае когда вы выбираетесь в Internet, запросите бланк заявки на сетевой адреса от hostmaster@internic.net. Чтобы оперировать несколькими Ethernet (или другими сетями), Вы должны разбить вашу сеть в несколько подсетей. Обратите Внимание, что подсети требуются только в случае, если Вы имеете больше чем одну сеть; Point-to-point связь не учитывается. Например, если Вы имеете один Ethernet и один или более SLIP соединений с внешним миром, Вы не нуждаетесь в подсети. Причина этого объясняется в главе 8.. Как пример, менеджер сети пивоварни обращается к NIC за сетевым номером класс В, и получает 191.72.0.0. Чтобы разместить два Ethernet, он решает использовать восемь битов части хоста как дополнительные подсетевые биты. Это оставляет другие восемь битов для хоста, то есть по 254 хостов на каждой полсети. Он также назначает подсеть 1 пивоварне и 2 -- винодельне. Их соответствующие сетевые адреса таким образом 191.72.1.0 и 191.72.2.0. Сетевая маска 255.255.255.0. Vlager, который является gateway между двумя сетями, получил номер хоста, равный 1 на обоих из них, что дает ему IP адреса равные 191.72.1.1 и 191.72.2.1, соответственно. Картинка показывает две подсети, и gateway. Обратите Внимание что в этом примере Я использую сеть класса B для простоты; класс C сеть был бы более реалистичным. С новым сетевым кодом, деление на подсети не ограничено границами байта, так даже сеть - 82 - класса C может быть раздроблена на несколько полсетей. Например, Вы могли бы использовать 2 бита части хоста для сетевой маски, что дает Вам четыре возможные подсети с 64 хостами на каждой. 6.6. Написание hosts и networks файлов После того, как Вы разбили на подсети вашу сеть, Вы должны подготовиться к некоторому простому виду поиска адреса по имени использующего файл /etc/hosts. Если Вы не собираетесь использовать DNS или NIS для этого, Вы должны помещать все хосты в hosts файл. Даже если Вы хотите использовать DNS или NIS, Вы можете иметь некоторое подмножество имен и в /etc/hosts. Например, если вы хотите иметь некоторый вид поиска по имени даже когда никакие сетевые интерфейсы не запущены, например во время загрузки. Это не только вопрос удобства, но также позволяет Вам использовать символические имена хостов в ваших rc.inet скриптах. Таким образом, при изменении IP адресов, Вы должны будите только копировать обновленный файл хостов на все машины, вместо того чтобы редактировать большое количество rc файлов. Обычно, Вы будете помещать все локальные имена и адреса в hosts, добавлением их на любой gateways и NIS сервера, если они используется. Также, в течение проверки, Вы должны удостовериться, что ваш resolver использует информацию только из файла hosts. Ваше DNS или NIS программное обеспечение может прибыть с файлами примеров, которые могут дать странные результаты при их использовании. Чтобы заставить все приложения использовать исключительно /etc/hosts при поиске IP адреса хоста, Вы должны отредактировать файл /etc/host.conf. Закоментируйте все строки, начинающиеся с ключевого слова order и вставьте строку order hosts Конфигурация resolver библиотеки будет подробно описана в главе7. hosts файл содержит по одной записи на строку, состоящую из IP адреса, имени хоста и необязательного списка псевдонимов имени. Поля - 83 - отделяются пробелами или табуляцией, и поле адреса должно начинаться в первой колонке. Все, что следует после символа (#), расценивается как комментарий и игнорируется. Имя хоста может быть также полностью квалифицированным или относительно локальной области. Для vale, Вы бы ввели полностью квалифицированное имя, vale.vbrew.com и vale само по себе, так, чтобы было известно и официальное имя и более короткое локальное. Пример как выглядит файл хостов Виртуальной Пивоварне дан ниже. Два специальных имени , vlager-if1 и vlager-if2, дают адреса для обоих интерфейсов используемых на vlager. # # Hosts file for Virtual Brewery/Virtual Winery # # IP local fully qualified domain name # 127.0.0.1 localhost # 191.72.1.1 vlager vlager.vbrew.com 191.72.1.1 vlager-if1 191.72.1.2 vstout vstout.vbrew.com 191.72.1.3 vale vale.vbrew.com # 191.72.2.1 vlager-if2 191.72.2.2 vbeaujolais vbeaujolais.vbrew.com 191.72.2.3 vbardolino vbardolino.vbrew.com 191.72.2.4 vchianti vchianti.vbrew.com Точно также как с IP адресами хостов, можно дать символическое имя сетевым номерам. Поэтому, файл хостов имеет компаньона названного /etc/networks который отображает имя сети на сетевой номер и наоборот. В Виртуальной Пивоварне, мы могли бы устанавливать файл сетей подобно этому: - 84 - # /etc/networks for the Virtual Brewery brew-net 191.72.1.0 wine-net 191.72.2.0 6.7. Конфигурация интерфейса для IP После установки аппаратных средств, как было объяснено в предыдущей главе, Вы должны дать знать об этом сетевому программному обеспечению. Пара команд используются чтобы конфигурировать сетевые интерфейсы, и инициализировать таблицу маршрутизации. Эти задачи выполняются обычно в rc.inet1 скрипте, при загрузке системы. Эти команды называются ifconfig ( где "если" относится к интерфейсу ), и route. fconfig используется чтобы сделать интерфейс доступным для ядра, что включает в себя назначение IP адреса и других параметров и формирование интерфейса, также известное как "taking up". Активность означает, что ядро будет посылать и получить IP datagrams через интерфейс. Самый простой путь установки # ifconfig interface ip-address Который связывает ip-адрес с интерфейсом и активирует его. Все другие параметры устанавливаются по умолчанию Например, маска подсети установленная по умолчанию получена из сетевого класса IP адреса, типа 255.255.0.0 для класса B адрес. ifconfig описан более подробно в конце этой главы. route позволяет Вам добавлять или устранять маршруты из таблицы маршрутизации. Это может быть использовано так route [add|del] target Где add и del аргументы определяют добавлять или удалять маршрут к таблице. - 85 - 6.7.1. Интерфейс loopback Сам первый интерфейс который нужно сформировать и активизировать -- интерфейс loopback: # ifconfig lo 127.0.0.1 Иногда, Вы будете также видеть фиктивное имя localhost используемое вместо IP адреса. ifconfig будет искать имя в hosts файле, где должна быть запись, объявляющая его как имя для 127.0.0.1: # Sample /etc/hosts entry for localhost localhost 127.0.0.1 Чтобы просмотреть информацию о конфигурации интерфейса, Вы можете вызвать ifconfig передав как аргумент имя интерфейса: $ ifconfig lo lo Link encap Local Loopback inet addr 127.0.0.1 Bcast [NONE SET] Mask 255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0 Как Вы можете видеть, интерфейс loopback получил netmask равную 255.0.0.0, так как 127.0.0.1 -- адрес A класса. Вы можете также увидеть, что интерфейс не имеет множества общевещательных адресов, который вообще-то бесполезны для loopback. Однако, если Вы используете rwhod демона на вашем хосте, Вы возможно будете должны установить широковещательный адрес loopback для того чтобы rwho функционировал должным образом. Установка этого адреса объясняется в секции "Все о ifconfig". Теперь, Вы можете начать играть с вашей мини-"сетью". Единственное чего не хватает -- это запись в таблице маршрутизации, которая говорит IP, что этот интерфейс как маршрут к месту назначения 127.0.0.1. Это делается с помощью следующей команды - 86 - # route add 127.0.0.1 Здесь, тоже можно использовать localhost вместо IP адреса. Затем, Вы должны проверить правильность работы, например, используя ping. ping - сетевой эквивалент звукового(sonar) устройства и используется для проверки того доступен ли данный IP адрес, и измерения интервала времени между посылкой дэйтаграмы и получением ответа. Время требуемое для этого часто называется roundtrip time. # ping localhost PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp seq=0 ttl=32 time=1 ms 64 bytes from 127.0.0.1: icmp seq=1 ttl=32 time=0 ms 64 bytes from 127.0.0.1: icmp seq=2 ttl=32 time=0 ms ^C --- localhost ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0/0/1 ms При вызове ping, он будет продолжать испускать пакеты пока не будет прервано пользователем. ^C отмечает место где мы нажали Ctrl-C. Вышеупомянутый пример показывает, что пакеты доставлены к 127.0.0.1 и ответ пришел к ping почти мгновенно. Это показывает что Вы преуспели во введении вашего первого сетевого интерфейса. Если вывод который Вы получаете от ping не походит на показанный выше, Вы нарвались на неприятности. Проверите ошибки в установочных файлах. Проверите чтобы ifconfig и маршрутизирующие приложения, которые вы используете, были совместимы с ядром, которым Вы пользуетесь и, вообще, что ядро компилировалось с разрешенной сетью (Вы увидите это по отсутствию директории /proc/net ). Если Вы получаете сообщение об ошибки, говорящее "Network unreachable" ,тогда вероятно вы не правильно использовали команду route. Удостоверитесь - 87 - что Вы используете тот же самый адрес, что Вы дали ifconfig. Шагов описанных выше достаточно чтобы исп