Setevaya_rabota_po_protokolu_TCP_linux (1084628), страница 2
Текст из файла (страница 2)
Для многих случаев файл rc.inet1 подойдет в том виде, в каком он здесь приведен. Вы, разумеется, должны будете отредактировать его под свою систему. Не используйте без изменения IP и сетевой адреса, приведенные здесь в качестве примера, они соответствуют действительной машине в Internet.
#!/bin/sh
# This is /etc/rc.d/rc.inet1 -- Configure the TCP/IP interfaces
# First, configure the loopback device
HOSTNAME=`hostname`
/etc/ifconfig lo 127.0.0.1 # uses default netmask 255.0.0.0
/etc/route add 127.0.0.1 # a route to point to the loopback device
# Next, configure the ethernet device. If you're only using
# loopback or SLIP, comment out the rest of these lines.
# Edit for your setup.
IPADDR="128.253.154.32" # REPLACE with YOUR IP address
NETMASK="255.255.255.0" # REPLACE with YOUR netmask
NETWORK="128.253.154.0" # REPLACE with YOUR network address
BROADCAST="128.253.154.255" # REPLACE with YOUR broadcast address,
# if you have one. If not, leave blank
# and edit below.
GATEWAY="128.253.154.1" # REPLACE with YOUR gateway address!
/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
# If you don't have a broadcast address, change the above line to:
# /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}
/etc/route add ${NETWORK}
# The following is only necessary if you have a gateway; that is,
# your network is connected to the outside world.
/etc/route add default gw ${GATEWAY} metric 1
# End of Ethernet Configuration
Может вам придется немного поковырять этот файл, чтобы заставить работать. Этот сценарий должен подходить для настройки большинства простых сетей, но, разумеется, не для всех.
rc.inet2 запускает различные сервера, используемые TCP/IP. Наиболее важный среди них - inetd. inetd сидит в фоне и присматривает за различными сетевыми портами. Когда машина пытается связаться с конкретным портом (например, со входным портом telnet), inetd создает новую копию соответствующего демона для этого порта (в случае порта telnet inetd запускает in.telnetd). Это проще, чем выполнять много независимых демонов (т.е. индивидуальных копий telnetd, ftpd и т.п.) - inetd запускает демонов только при возникновении необходимости.
syslogd - это системный демон входа - он аккумулирует сообщения о входе от различных источников и помещает их в log-файлы, зависящие от настройки /etc/syslogd.conf. routed - это сервер используемый для сопровождения динамической информации по маршрутизации. Когда ваша система пытается послать пакет в другую сеть, это может потребовать дополнительных записей в таблицу маршрутизации, чтобы это выполнить. routed заботится о сопровождении таблицы маршрутизации без необходимости вмешательства человека.
Приведенный ниже пример rc.inet2 запускает лишь самый минимум серверов. Есть и другие серверы - многие из которых обслуживают настройки NFS. Пытаясь установить TCP/IP на вашей системе, обычно лучше всего начать с минимальной конфигурации и добавлять более сложные куски, (такие, как NFS), когда у вас уже что-то работает.
Обратите внимание, что в нижеприведенном файле мы предполагаем, что все сетевые демоны находятся в /etc. Ну и как обычно отредактируйте этот файл под свою конфигурацию.
#! /bin/sh
# Sample /etc/rc.d/rc.inet2
# Start syslogd
if [ -f /etc/syslogd ]
then
/etc/syslogd
fi
# Start inetd
if [ -f /etc/inetd ]
then
/etc/inetd
fi
# Start routed
if [ -f /etc/routed ]
then
/etc/routed -q
fi
# Done!
Среди многих дополнительных серверов, которые вы можете запустить в rc.inet2 - named. named - это сервер имен. Он отвечает за перевод (локальных) IP адресов в имена и наоборот. Если у вас где-нибудь в сети нет сервера имен или вы сами хотите снабжать локальными именами машин другие машины вашего домена, использование named необходимо. (Но для большинства случаев в этом нет необходимости). Настройка named достаточно сложна и требует предварительного планирования. Мы отсылаем заинтересованных читателей к хорошим книгам по TCP/IP.
/etc/hosts
/etc/hosts содержит перечень IP адресов и имен хостов, которым они соответствуют. В общем, /etc/hosts содержат только записи для вашей локальной машины и, возможно, других "важных" машин (таких как сервер имен или шлюз). Перевод имя - адрес для других машин сети обеспечивает сервер имен.
Например, если ваша машина называется loomer.vpizza.com и имеет IP адрес 128.253.154.32, ваш /etc/hosts будет выглядеть как:
127.0.0.1 localhost
128.253.154.32 loomer.vpizza.com loomer
Если вы используете только loopback, единственная строка в /etc/hosts должна быть для 127.0.0.1 с именами localhost и хост-именем вашей машины.
/etc/networks
Файл /etc/networks содержит ваши имена и адреса, а также других сетей. Он используется командой route и позволяет описывать сеть именами, если вы это захотите.
Всякая сеть, которую вы хотите добавить в маршрутизацию с использованием команды route (обычно вызываемой из rc.inet1) должна иметь запись в /etc/networks.
Пример.
default 0.0.0.0 # default route - mandatory
loopnet 127.0.0.0 # loopback network - mandatory
mynet 128.253.154.0 # Modify for your own network address
/etc/host.conf
Чтобы обратиться к машине по домену, система должна определить ее физический адрес (IP-адрес). Система делает это либо находя соответствующий домен в файле /etc/hosts (см. руководство), либо обращаясь к специальным серверам, называемым серверами имен (nameserver). Файл /etc/host.conf задает Этот файл используется для описания порядка просмотра этих возможностей.
order hosts,bind
multi on
Эти строки указывают библиотекам разрешения вначале искать в файле /etc/hosts требуемый домен, а потом обратиться к серверу имен (если таковой имеется). Строка multi допускает множество IP адресов для одного имени машины в /etc/hosts.
/etc/resolv.conf
Этот файл настраивает программы определения физического IP-адреса по домену машины, указывая IP-адрес вашего сервера имен и имя вашего домена. Имя вашего домена, это доменный адрес вашей машины в сети, с отброшенным именем машины. Так например, если ваше полное хост-имя loomer.vpizza.com, то имя вашего домена просто vpizza.com.
Например, если ваша машина goober.norelco.com и имеет сервер имен с адресом 128.253.154.5, ваш /etc/resolv.conf будет выглядеть:
domain norelco.com
nameserver 127.253.154.5
Вы можете описать более одного сервера имен - каждый должен иметь свою строку в resolv.conf.
Установка хост-имени (hostname)
Хост-имя устанавливается с помощью команды hostname. Она обычно вызывается из /etc/rc или /etc/rc.local; просто просмотрите свои системные rc-файлы, откуда вызывается. Например, если ваше (полное) хост-имя loomer.vpizza.com, отредактируйте соответствующий rc-файл, выполнив команду:
/bin/hostname loomer.vpizza.com
Обратите внимание, что команды hostname может не оказаться в /bin.
Попытка не пытка
После того, как вы установили все эти файлы, вы должны быть готовы перезагрузить новое ядро и попытаться обрадоваться работающей сети. Правда, существует слишком много мест, где могут спрятаться ошибки, так что разумным будет проверить отдельные аспекты настройки сети (например, не самая хорошая идея для тестирования сети сразу шарахнуть по ней с помощью Mosaic с X-протоколом поверх IP). (прим. переводчика: сегодня бы автор вспомнил про Netscape)
Вы можете использовать команду netstat, чтобы посмотреть таблицы маршрутизации; это обычно источник большинства неприятностей. Руководство по netstat описывает точный синтаксис этой команды в деталях. Для того, чтобы проверить связи в сети, мы предлагаем использовать клиента, такого, как telnet, чтобы связать машины вашей локальной подсети и внешней сети. Это позволит локализовать ошибки. (Например, если вы не можете связаться с локальной машиной, но связываетесь с машинами других сетей, скорее всего есть проблема с сетевой маской и настройкой таблицы маршрутизации). Вы можете также прямо вызвать команду route (под root) поэкспериментировать с записями таблицы маршрутизации.
Вам следует также проверить связи в сети прямо указывая IP адреса вместо хост-имен. Например, если у вас есть проблемы с командой
$ telnet shoop.vpizza.com
Причина может быть в некорректной настройке сервера имен. Попытайтесь использовать физический IP адрес машины; если это поможет, тогда вы будете знать, что ваши основные сетевые установки (скорее всего) правильны и проблема лежит в описании адреса сервера имен.
Отладка сетевых настроек может быть трудной задачей и мы не можем здесь втягиваться в ее обсуждение. Если вы не можете получить помощь от местных гуру, мы очень вам советуем почитать Linux Network Administrators' Guide из LDP.
Настройка SLIP
SLIP (Serial Line Internet Protocol) позволяет использовать TCP/IP на последовательных линиях, будь то коммутируемая телефонная линия с модемом или выделенная асинхронная линия. Разумеется, для использования SLIP вам необходим доступ к SLIP-серверу. Многие университеты и фирмы за умеренную плату предоставляют SLIP-вход.
Есть две основные программы, использующие SLIP: dip и slattach. Обе эти программы используются для установления SLIP-соединения через последовательные устройства. Необходимо использовать одну из этих программ, чтобы активизировать SLIP, недостаточно просто дозвониться до SLIP-сервера (с помощью коммуникационной программы вроде kermit) и запустить команды ifconfig и route, так как dip и slattach формируют специальный системный вызов ioctl(), чтобы перехватить управление последовательным устройством для реализации SLIP-интерфейса.
Dip может произвести дозвонку до SLIP-сервера, обеспечить соединение (handshaking) и войти на сервер (указав например, имя и пароль), а затем инициировать SLIP-соединение по последовательной линии. slattach же не делает ничего, кроме захвата устройства для использования его SLIP. Это полезно, если вы имеете постоянную линию для SLIP-сервера и нет необходимости в дозвонке и соединении для обеспечения связи. Но большинство пользователей предпочитает использовать dip.
Dip можно также использовать для настройки вашей системы Linux в качестве SLIP-сервера, когда другие машины к вам дозваниваются и выходят в сеть через вторичное соединение по Ethernet на вашей машине. Дополнительную информацию по этой процедуре смотрите в Руководстве на dip.
SLIP весьма отличается от Ethernet, в нем только две машины в "сети" SLIP-хост (это вы) и SLIP-сервер. По этой причине SLIP часто воспринимается как связь ``point-to-point'' (от точки до точки). Обобщение этой идеи, известное как PPP (Point to Point Protocol) также реализовано в Linux.
Когда вы инициируете связь со SLIP-сервером, SLIP-сервер даст вам IP адрес. Некоторые SLIP-серверы выдают "статические" IP адреса - в этом случае ваш IP адрес будет тот же самый всегда, когда вы связываетесь с сервером. Но большинство SLIP-серверов выдают IP адреса динамически, когда при каждой связи вы получаете IP адрес заново. В общем случае SLIP-сервер сообщит вам при установлении связи ваш IP адрес и адрес шлюза. dip способен читать эти значения при входе на SLIP-сервер и использовать их для настройки самого SLIP.
Существенное замечание. Настройка связи по SLIP похожа на настройку loopback или ethernet. Основные отличия обсуждаются ниже. Прочитайте предыдущий раздел про настройку базовых файлов TCP/IP, и выполните изменения, описанные ниже.
Соединение по dip при статическом IP адресе
Если вы используете SLIP-сервер, выдающий статические IP адреса, вы можете включить записи о ваших IP адресе и хост-имени в /etc/hosts. А также настроить файлы, перечисленные в предыдущем разделе: rc.inet2, host.conf и resolv.conf. Также настроить rc.inet1, как описано выше. Если вы используете для связи со SLIP-сервером dip, то в файле rc.inet1 для последовательного порта команды ifconfig и route вызывать не надо, dip вызовет эти команды после установления соединения. (Если же вы, используете slattach, вам будет необходимо включить команды ifconfig и route в rc.inet1 для SLIP - смотрите ниже).
dip должен настраивать соответствующим образом таблицы маршрутизации для SLIP когда вы связываетесь. Однако, в некоторых случаях поведение dip может быть неправильным для ваших настроек и вам надо будет вручную выполнять команды ifconfig или route после того, как dip свяжется с сервером (это легче всего сделать из сценария shell, который содержит вызов dip, и немедленно выполнить соответствующие команды настройки). Ваш шлюз, это в большинстве случаев адрес SLIP-сервера. Вы можете знать этот адрес заранее или адрес шлюза будет выведен SLIP-сервером при установлении связи. Сценарий работы dip (описанный ниже) может также получать эту информацию от SLIP-сервера.