Linux-системы конфигурированы на подключение к сетям, в которых используются
протоколы TCP/IP. Именно эти протоколы применяются в Internet и многих локальных
сетях. Протоколы TCP/IP были разработаны в семидесятых годах в рамках
специального проекта Управления перспективных исследований и разработок
Министерства обороны США с целью развития системы связи между учебными
заведениями и научно-исследовательскими институтами. Разрабатывались эти
протоколы для Unix-систем, при этом основные исследования проводились в
Калифорнийском университете (г. Беркли). ОС Linux во многом выигрывает
благодаря этой изначальной ориентации протоколов на Unix.
Комплект TCP/IP состоит из нескольких различных протоколов, каждый из которых
выполняет в сети определенную задачу. Базовых протоколов два: протокол
управления передачей (TCP), который обеспечивает отправку и прием сообщений, и
межсетевой протокол (IP), который отвечает за маршрутизацию. Остальные протоколы
выполняют различные сетевые функции. Служба доменных имен (DNS) обеспечивает
преобразование адресов. Протокол пересылки файлов (ftp) управляет передачей
файлов, а набор протоколов NFS обеспечивает доступ к удаленным файловым
системам. Протоколы комплекта TCP/IP представлены в табл. 1.
Конфигурирование в Linux-системе сетевого соединения, устанавливаемого по
протоколу TCP/IP, и управление им - не слишком сложная задача. К услугам
пользователя имеется набор конфигурационных файлов, с помощью которых система
настраивает и поддерживает сетевые соединения. Полный перечень этих файлов
приведен в табл.2. Многими из них можно управлять с помощью административных
программ из интерфейса привилегированного пользователя, в частности с помощью
утилиты netcfg. Допускается также
использование более специализированных программ, например таких, как
netstat, ifconfig и route. Некоторые конфигурационные файлы легко
поддаются редактированию с помощью текстового редактора. Широко используемые
программы для настройки сетевого соединения представлены в табл. 3.
Допустим, в процессе инсталляции вы ввели информацию о конфигурации сети.
Это означает, что система полностью готова к работе. Если Linux-система уже
подключена к сети, например к Ethernet, читать данную главу вам не нужно (если
только вы не хотите понять, как ОС Linux настраивает сетевые соединения). Однако
если вы входите в сеть через модем (например, связываетесь таким образом с
провайдером Internet), вам будет полезно ознакомиться с материалами,
относящимися к протоколам SLIP и РРР. В этих параграфах рассказывается о том,
как заставить Linux-систему связываться с провайдером Internet и правильно
устанавливать сетевое соединение. Если в процессе выхода в сеть у вас возникли
проблемы, то полезной будет вся информация, представленная в этой главе.
IP-адрес состоит из четырех сегментов - чисел, разделенных точками. Одна
часть этого адреса представляет собой адрес сети, а другая используется для
обозначения конкретного хост-компьютера в этой сети. Адрес сети обозначает сеть,
частью которой является данный хост-компьютер. Обычно сетевая часть адреса
занимает первые три сегмента, а адрес машины - последний сегмент. В совокупности
эти сегменты образуют уникальный адрес, с помощью которого идентифицируется
любой компьютер в сети, работающей по протоколам TCP/IP. Например, в IP-адресе
199.35.209.72 сетевая часть - 199.35.209, а машинная часть - 72. Данный
компьютер является частью сети, адрес которой - 199.35.209.0. IP-адрес
хост-компьютера - это лишь один из нескольких адресов, которые необходимы для
подключения этого компьютера к сети. Кроме него вам потребуются адрес сети,
широковещательный адрес, адрес шлюза (если таковой имеется), адрес сервера имен
и маска сети. Все эти адреса система предлагает пользователю ввести во время
инсталляции. Если вы их ввели, то они будут автоматически занесены в
соответствующие конфигурационные файлы. Кроме того, в них вводятся все записи,
которые вы делаете при помощи утилиты netcfg. (Типы используемых сетевых адресов
перечислены в табл. 2.)
Адрес сети можно легко установить по адресу хост-компьютера - это сетевая
часть адреса хост-компьютера плюс нуль; например, в хост-адресе 199.35.209.72
адрес сети - 199.35.209.0. Системы определяют адрес сети по адресу
хост-компьютера с помощью маски сети. Для знакомых с программированием скажем,
что поразрядная операция И, проведенная с маской сети и адресом хост-компьютера,
приводит к обнулению машинной части адреса и получению его сетевой части.
Широковещательный адрес позволяет системе посылать сообщение одновременно
всем системам в сети. Как и сетевой адрес, широковещательный адрес можно легко
определить по адресу хост-компьютера; машинная часть в нем установлена равной
255, а сетевая часть не меняется. Например, широковещательный адрес для адреса
хост-компьютера 199.35.209.72 - 199.35.209.255 (т.е. сетевая часть адреса
остается прежней, а машинная меняется на 255).
Довольно часто один из компьютеров сети назначают шлюзом, задача которого -
обеспечивать взаимодействие с другими сетями. Все соединения, устанавливаемые из
данной сети с какой-либо иной и наоборот, осуществляются через этот шлюзовой
компьютер. Если вы работаете в такой сети, то необходимо указать адрес шлюза.
Если же шлюза в сети нет либо вы работаете в автономной системе или через
провайдера Internet, то адрес шлюза не нужен. Как правило, адрес шлюза имеет ту
же сетевую часть, что и адрес хост-компьютера, но в его машинной части стоит 1.
Например, если адрес хост-компьютера - 199.35.209.72, то адрес шлюза (возможно)
- 199.35.209.1. Однако такая договоренность выполняется не всегда. Чтобы узнать
адрес шлюза наверняка, обратитесь к администратору своей сети.
Во многих сетях, включая Internet, есть компьютеры, которые работают как
серверы доменных имен, преобразуя доменные имена сетей и хост-машин в
IP-адреса. Это позволяет идентифицировать ваш компьютер в сети, пользуясь не
IP-адресом, а доменным именем. К другим системам тоже можно обращаться по
доменным именам, поэтому их IP-адреса знать не обязательно. При этом, однако,
следует знать IP-адреса серверов доменных имен своей сети. Эти адреса (обычно их
несколько) можно узнать у системного администратора. Даже если вы работаете с
провайдером Internet, вам нужно будет знать адреса серверов доменных имен,
которые обслуживает данный провайдер.
Маска сети используется для получения адреса сети, к которой вы подключены.
При определении маски сети адрес хост-компьютера выступает в роли трафарета. Все
числа в сетевой части хост-адреса устанавливаются равными 255, а в машинной
части ставится нуль. Это и есть маска сети. Так, маска сети для хост-адреса
199.35.209.72 - 255.255.255.0. Сетевая часть, 199.35.209, заменена на
255.255.255, а машинная часть, 72, заменена нулем. С помощью этой маски системы
определяют по вашему хост-адресу адрес вашей сети. Они могут установить, какая
часть адреса хост-компьютера является сетевой и из каких чисел она состоит.
Для настройки и поддержки работы сети, работающей под управлением протоколов
TCP/IP, используется набор файлов конфигурации, расположенных в каталоге
/etc. В этих файлах содержится
информация о сети, в частности имена хост-машин и доменов, IP-адреса и
характеристики интерфейсов. Именно в эти файлы вводятся IP-адреса и доменные
имена других хост-компьютеров Internet, к которым вы хотите получить доступ.
Если в процессе инсталляции системы вы конфигурировали сеть, то вся эта
информация в файлах конфигурации уже есть. Ввести конфигурационные данные в эти
файлы можно с помощью программы netcfg (ее пиктограмма находится на вашем рабочем
столе) или с помощью программы netconfig (из командной строки).
Файл |
Функция |
/etc/hosts |
Связывает хост-имена с
IP-адресами |
/etc/networks |
Связывает доменные имена с адресами
сетей |
/etc/rc.d/init.d/inet |
Содержит команды конфигурирования
сетевого интерфейса при начальной загрузке |
/etc/HOSTNAME |
Содержит хост-имя вашей системы |
/etc/host.conf |
Опции конфигурирования |
/etc/resolv.conf |
Содержит список серверов доменных
имен |
Без уникального IP-адреса, которым в сети TCP/IP идентифицируются компьютеры,
нужный компьютер найти нельзя. Поскольку IP-адреса трудны для запоминания и
работы, вместо них используются доменные имена. Каждому IP-адресу ставится в
соответствие доменное имя. Система преобразует доменное имя, по которому
пользователь обращается к определенному компьютеру, в соответствующий IP-адрес,
и он используется для установления соединения с указанным компьютером.
Вначале ведение списка хост-имен с их IP-адресами было обязанностью всех
компьютеров сети. Этот список до сих пор хранится в файле
/etc/hosts. Получив от пользователя доменное имя, система ищет
в файле hosts соответствующий адрес. За ведение этого списка
отвечает системный администратор. Вследствие стремительного роста Internet и
появления все новых и новых очень больших сетей функции преобразования доменных
имен в IP-адреса были переданы серверам доменных имен. Тем не менее файл hosts
продолжает использоваться для хранения доменных имен и IP-адресов
хост-компьютеров, соединения с которыми устанавливаются наиболее часто. Перед
тем как обращаться к серверу имен, ваша система всегда будет проверять файл
hosts и искать в нем IP-адрес заданного ей доменного имени.
Каждая запись в файле hosts состоит из IP-адреса, пробела и доменного имени.
Для хост-имени можно создавать псевдонимы. В одной строке с записью можно ввести
комментарий, который всегда предваряется символом #. В файле
hosts уже имеется запись для локального компьютера localhost с
IP-адресом 127.0.0.1. Localhost - это специальный зарезервированный IP-адрес
127.0.0.1, которой позволяет пользователям вашей системы связываться друг с
другом в локальном режиме. Он служит для идентификации так называемого
закольцовывающего интерфейса.
/etc/hosts
127.0 0.1 turtle.trek.coin localhost
199.35.209.72 turtle.trek.coin
204.32.168.56 pangol.train.com
202.211.234.1 rose.berkeley.edu
В файле /etc/networks хранятся доменные имена и IP-адреса
сетей, с которыми у вашей системы есть соединение, а не доменные имена
конкретных компьютеров. Сети имеют сокращенные IP-адреса. В зависимости от типа
сети в IP-адресах может использоваться одно, два или три числа. Сетевой IP-адрес
для localhost - 127.0.0.0. Этот сетевой адрес используется для закольцовывающего
устройства.
IP-адреса записываются в файле /etc/networks вместе с
соответствующими им доменными именами сетей. Вспомните, что IP-адрес состоит из
сетевой части и машинной части. Сетевая часть - это адрес сети, который хранится
в файле networks. В этом файле всегда будет присутствовать
отдельная запись для сетевой части IP-адреса вашего компьютера. Это и есть адрес
сети, к которой подключен ваш компьютер.
/etc/networks
loopback 127.0.0.0
trek.com 199.35.209.0
В файле /etc/rc.d/init.d/inet находятся команды,
обеспечивающие конфигурирование сетевого соединения. Многие записи в этом файле
автоматически создаются при использовании утилиты netcfg и конфигурировании сетевого соединения в
процессе инсталляции. Например, здесь находятся команды ifconfig и route . Кроме того, здесь задаются хост-имя вашей
системы, адрес сети и другие необходимые адреса. Непосредственно редактировать
этот файл можно лишь в том случае, если вы уверены в том, что все делаете
правильно и обладаете начальными познаниями в области программирования в shell.
В других дистрибутивах Linux, например в Slackware, файл инициализации может
иметь имя /etc/ rec.d/rc.inet1 или просто
/etc/rс.inet1.
В файле /etc/HOSTNAME содержится хост-имя вашей системы.
Чтобы изменить имя, нужно отредактировать данный файл. Эту задачу можно решить с
помощью программы netcfg, которая заменяет хост-имя и помещает
новое имя в файл /etc/HOSTNAME. Хост-имя можно узнать не только
путем вывода на экран этого файла, но и с помощью команды hostname.
$ hostname
turtle.trek.com
Сетевые интерфейсы и маршруты: команды ifconfig и route
Соединение с сетью система устанавливает посредством конкретного аппаратного
интерфейса, например Ethernet-платы или модема. Данные, проходящие через этот
интерфейс, направляются в сеть. Команда ifconfig позволяет
конфигурировать сетевые интерфейсы, а команда route обеспечивает необходимую
маршрутизацию. Те же операции конфигурирования сетевых интерфейсов, которые
выполняются с помощью команд ifconfig и route,
в системе Caldera Network Desktop можно реализовать, воспользовавшись окном
NetCfg утилиты netcfg. Если вы конфигурируете интерфейс с
помощью утилиты netcfg, то прибегать к помощи команд ifconfig и
route уже не нужно. Если же вы работаете в другой
Linux-системе, попробуйте воспользоваться утилитой netconfig, которая выполняет
те же задачи, что и netcfg. Однако при желании можно
конфигурировать интерфейсы непосредственно с помощью команд ifconfig
и route.
При каждом запуске системы сетевые интерфейсы и таблицы маршрутизации
необходимо конфигурировать заново. Эта задача может решаться автоматически на
этапе начальной загрузки - поместите команды ifconfig и
route для каждого интерфейса в файл инициализации
/etc/rc.d/init.d/inet, который выполняется каждый раз, когда
система запускается. Если сетевые интерфейсы конфигурируются утилитой netcfg в
системе Caldera Network Desktop, то соответствующие команды
ifconfig и route автоматически добавляются в
файл /etc/rc.d/init.d/inet. Если же утилиту netcfg вы не
задействовали, эти команды придется ввести в файл инициализации самостоятельно.
Самый простой способ создания сетевого интерфейса - использовать одну из
программ конфигурирования, Lisa или netcfg. Чтобы использовать
программу Lisa, введите в командной строке команду lisa и
перейдите в меню System Configuration/Network Configuration. Затем можно выбрать
элемент Configure General Network Services для ввода адресов серверов доменных
имен или ввести хост-имя.
Для настройки сетевого интерфейса можно также воспользоваться программой
netcfg с рабочего стола пользователя root. Войдите в бюджет
root и запустите рабочий стол командой startx. Вы увидите
пиктограмму с надписью netcfg. Дважды щелкните на ней, и появится окно с
перечнем всех сетевых интерфейсов. Как показано на рисунке, с помощью
netcfg можно изменять и расширять конфигурацию сетевого
соединения.
В окне NetCfg представлена информация, относящаяся к интерфейсам, серверам
имен и хост-компьютерам. Данные, относящиеся к каждой из этих групп, находятся в
отдельном окне, имеющем свои кнопки. В окне Interface дается список
задействованных интерфейсов. С помощью кнопок, расположенных в нижней части
этого окна, можно добавлять, конфигурировать, активизировать и деактивизировать
интерфейсы. При вводе нового интерфейса открывается еще одно окно с полями,
предназначенными для ввода необходимой информации. В частности, здесь следует
указать имя интерфейса и его IP-адрес. После закрытия этого окна вы увидите, что
запись для данного интерфейса появилась в окне Interface.
В окне Nameserver перечислены все текущие серверы имен. С помощью кнопок Add
и Remove здесь можно добавлять новые серверы имен и удалять старые. Любая
запись, которую вы здесь делаете, автоматически заносится в файл
/etc/resolv.conf. В нижнем окне дается список хост-компьютеров
с их именами и IP-адресами. Это те компьютеры, с которыми у вашей системы есть
соединение. С помощью кнопок, расположенных под этим окном, можно вводить и
удалять имена хост-компьютеров, а также редактировать их. Изменения и новые
записи заносятся в файл /etc/hosts.
Можно также изменить хост-имя своего компьютера. Выберите в меню NetCfg (в
верхнем левом углу) элемент hostname. Система пригласит вас ввести новое
хост-имя. Введенное вами имя заменит предыдущее в файле
/etc/hostname.
Внеся все необходимые изменения, щелкните на кнопке Save Configuration.
Введенная вами новая информация будет занесена в соответствующие файлы
конфигурации сетевых соединений.
В качестве аргументов команда ifconfig использует имя
интерфейса и IP-адрес. Кроме того, она имеет ряд опций. Команда
ifconfig используется для того, чтобы присвоить заданному
сетевому интерфейсу указанный IP-адрес. Таким образом, она дает вашей системе
знать о том, что данный интерфейс существует и что она обращается к нему по
указанному IP-адресу. Кроме того, можно указать, каким адресом является IP-адрес
- адресом хост-компьютера или адресом сети. Вместо IP-адреса можно использовать
доменное имя при условии, что оно указано вместе с IP-адресом в файле
/etc/hosts. Команда ifconfig имеет следующий
синтаксис:
# ifconfig интерфейс
-хост_сеть_флаг адрес опции
Флаг -хост_ сеть_ флаг может принимать одно из двух значений -
-host или -net. Флаг -host
свидетельствует о том, что данный IP-адрес является адресом хост-компьютера, a
-net означает, что данный IP-адрес является адресом сети. По
умолчанию принимается флаг -host. У команды ifconfig есть
несколько опций, которые задают различные характеристики интерфейса, например
максимальное число байтов, которое он может передать за один раз
(mtu), широковещательный адрес и т.д. Опция up
активизирует интерфейс, а опция down деактивизирует его. В
следующем примере команда ifconfig используется для
конфигурирования интерфейса Ethernet.
# ifconfig eth0 204.32.168.56
Для такой простой конфигурации, как эта, ifconfig
автоматически создает стандартный широковещательный адрес и маску сети.
Стандартный широковещательный адрес - это сетевой адрес с машинной частью,
указанной как 255. Напомним, что стандартная маска сети - 255.255.255.0. Если же
вы подключены к сети с другой сетевой маской и конкретным широковещательным
адресом, их необходимо указать в командной строке ifconfig.
Широковещательный адрес указывается в опции broadcast, а маска
сети - в опции netmask. Опции команды ifconfig
перечислены в табл. 1.4. В следующем примере ifconfig задает сетевую маску и
широковещательный адрес.
# ifconfig eth0 204.32.168.56
broadcast 204.128.244.127
netmask 255.255.255.0
Интерфейсы типа "точка-точка", такие как PLIP (межсетевой протокол для
параллельного канала), SLIP (межсетевой протокол для последовательного канала)
и РРР (протокол "точка-точка"), требуют включения в команде
ifconfig опции pointopoint. Имя интерфейса
PLIP обозначается словом plip и номером; например,
plip0 - это первый интерфейс PLIP. Интерфейсы SLIP имеют имена
slip0, slip1 и т.д., а интерфейсы РРР - имена ррр0,
ppp1 и т.д. Двухточечные интерфейсы - это интерфейсы, работающие, как
правило, между двумя хост-компьютерами, например между двумя машинами,
соединенными через модем. Устанавливая опцию pointopoint,
необходимо указать IP-адрес хост-машины. Позже вы узнаете, как с помощью
интерфейсов SLIP и РРР можно связываться по телефонной линии с провайдером
Internet и устанавливать с ним соединение.
В следующем примере показано, как конфигурируется интерфейс PLIP, который
соединяет компьютер, имеющий IP-адрес 199.35.209.72, с компьютером, адрес
которого 204.166.254.14. Если бы в файле /etc/hosts были
указаны доменные имена этих систем, то вместо IP-адресов можно было бы
использовать их доменные имена.
# ifconfig plip0 199.35.209.72
pointopoint 204.166.254.14
В случае необходимости можно с помощью команды ifconfig конфигурировать
закольцовывающий интерфейс. Этот интерфейс имеет имя 1о и специальный IP-адрес,
127.0.0.1. Процедура конфигурирования закольцовывающего интерфейса показана в
следующем примере.
# ifconfig lo 127.0.0.1
Команда ifconfig очень полезна для проверки статуса
интерфейса. Если ввести ее только с именем интерфейса, то ifconfig выдаст
информацию об этом интерфейсе.
# ifconfig eth0
Чтобы посмотреть, конфигурирован ли закольцовывающий интерфейс, нужно дать
команду ifconfig с именем этого интерфейса, 1о:
# ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255
Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:2000
Metric:1
RX packets:0 errors:0 dropped:0
overruns:0
TX packets:12 errors:0 dropped:0
overruns:0
Пакет, являющийся частью передаваемых данных, на пути в пункт своего
назначения проходит по определенному маршруту. В крупных сетях пакеты
передаются из одного компьютера в другой до тех пор, пока не попадут к адресату.
Маршрут определяет начальную точку процесса передачи пакета и показывает, в
какой компьютер ваша система должна передать пакет, чтобы он достиг пункта
назначения. В небольших сетях маршрутизация может осуществляться статически,
т.е. маршрут, ведущий от одной системы к другой, строго фиксирован. В более
крупных сетях и в Internet маршрутизация осуществляется динамически. Ваша
система знает, в какой компьютер пакет должен быть послан вначале. Этот
компьютер принимает пакет и передает его в другой компьютер, который определяет,
куда следует передать пакет дальше. При динамической маршрутизации ваша система
должна знать очень мало. Статическая маршрутизация может быть очень сложной,
поскольку необходимо отслеживать все сетевые соединения.
Маршруты содержатся в таблице маршрутизации, которая хранится в файле
/proc/net/route. Чтобы вывести ее на дисплей, нужно дать
команду route без аргументов.
# route
Kernel routing table
Destination Gateway Genmask
Flags MSS Window Use Iface
loopback * 255.0.0.
U 1936 0 12 lo
pangol.train.com * 255.255.255.0
U 1936 0 0 eth0
Каждая запись таблицы маршрутизации состоит из нескольких полей, содержащих
такую информацию, как, например, конечный пункт маршрута и тип используемого
интерфейса. Поля таблицы маршрутизации перечислены в следующей таблице.
Поле |
Описание |
Destination |
IP-адрес конечного пункта маршрута |
Gateway |
IP-адрес или хост-имя шлюза, используемого на данном
маршруте; символ * говорит о том, что шлюз в сети не используется |
Genmask |
Маска сети маршрута |
Flags |
Тип или состояние маршрута: U=активный, Н=хост,
G=шлюз, D=динамический, М=модифицированный MSS TCP MSS (Maximum segment size)
для маршрута - максимальное количество данных, которое может быть передано за
один раз |
Metric |
"Стоимость" маршрута (количество переходов до
шлюза) |
Ref |
Количество использований маршрута на текущий
момент |
Window |
Размер окна приема. Наибольшее количество данных,
которое принимающая сторона может принять |
Use |
Количество пакетов, пересланных по данному маршруту
|
Iface |
Тип интерфейса, используемого на данном маршруте
|
В таблице маршрутизации должна содержаться по крайней мере одна запись,
предназначенная для закольцовывающего интерфейса, иначе этот интерфейс придется
конфигурировать командой route. IP-адрес интерфейса нужно
ввести в таблицу до того, как этот интерфейс будет задействован. Адрес
добавляется с помощью команды route с опцией add.
route add адрес
В следующем примере показано, как в таблицу маршрутизации вводится IP-адрес
закольцовывающего интерфейса.
# route add 127.0.0.1
Опция add имеет несколько спецификаторов (они указаны на
страницах диалогового руководства, посвященных команде route).
Если вы добавляете конкретный статический маршрут, то эти спецификаторы
понадобятся для ввода таких параметров, как маска сети, шлюз, интерфейс и адрес
пункта назначения. Если же интерфейс уже конфигурирован командой
ifconfig, то система может получить основную информацию из
данных конфигурации интерфейса. Например, чтобы задать маршрут для
Ethernet-соединения, которое уже конфигурировано командой ifconfig, нужно лишь
ввести спецификатор -net и IP-адрес пункта назначения. С
помощью этого адреса ifconfig находит соответствующий интерфейс
и на основании этой информации организует маршрут. Задание маршрута для
интерфейса Ethernet иллюстрируется следующим примером.
# route add -net 204.32.168.0
Если система подключена к сети, в таблице маршрутизации должна быть сделана
по крайней мере одна запись, задающая маршрут по умолчанию. По этому маршруту
пакет посылается в том случае, если все остальные маршруты не могут привести его
в пункт назначения. Пункт назначения для такого маршрута задается ключевым
словом default.
Если нужно удалить один из существующих маршрутов, следует вызвать
команду ifconfig с опцией del и IP-адресом
маршрута, например:
# route del -net
204.32.168.0
Контроль состояния сети: программы ping и netstat
Программа ping позволяет проверить наличие доступа к другому
хост-компьютеру сети. Эта программа посылает в указанный компьютер запрос и
ожидает ответа. Если ответ приходит, он выводится на экран. Запрос передается
непрерывно до тех пор, пока пользователь не остановит программу нажатием клавиш
[ctrl+c]. При этом на экране один за другим появляются ответы
запрашиваемого хост-компьютера. Если ping не может связаться с указанной
машиной, она выдает сообщение о том, что машина недоступна. Такой результат
свидетельствует о том, что сетевое соединение не работает. Причиной может быть
конкретный интерфейс, проблема в конфигурации или просто плохой физический
контакт. Запускается программа ping командой ping с именем
хост-компьютера.
$ ping pang0l.train.com
Программа netstat позволяет получить в режиме реального
времени информацию о состоянии сетевых соединений, а также статистические данные
и таблицу маршрутизации. У этой программы есть несколько опций, с помощью
которых можно задавать вид получаемой информации.
# netstat
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign
Address (State) User
tcp 0 0 turtle.trek.com:01
pangol.train.com:ftp ESTABLISHED dylan
Active UNIX domain sockets
Proto RefCnt Flags Type
State Path
unix 1 [ ACC ] SOCK_ STREAM
LISTENING /dev/printer
unix 2 [ ] SOCK_
STREAM CONNECTED /dev/log
unix 1 [ ACC ] SOCK_ STREAM
LISTENING /dev/nwapi
unix 2 [ ] SOCK_
STREAM CONNECTED /dev/log
unix 2 [ ] SOCK_
STREAM CONNECTED
unix 1 [ ACC ]
SOCK_STREAM LISTENING /dev/log
Команда netstat без опций выдает список сетевых соединений
данной системы. (Опции команды netstat приведены в табл. 5).
Сначала перечисляются активные TCP-соединения, а затем активные гнезда домена
типа UNIX. Гнезда этого домена заняты процессами, обеспечивающими установление
соединения данной системы с другими системами. Поля перечислены в следующей
таблице.
Поле |
Описание |
Proto |
Протокол, используемый для данного соединения: TCP,
UDP |
Recv-Q |
Количество байтов, полученных, но еще не скопированных
программой пользователя |
Send-Q |
Количество байтов, посланных в удаленную систему, получение
которых еще не подтверждено |
Local Address |
Локальное хост-имя и номер порта |
Foreign Address |
Удаленное хост-имя и номер порта, назначенный соединению; номер
порта может указываться как тип соединения, например telnet или ftp |
(State) |
Состояние соединения с удаленной хост-машиной
ESTABLISHED |
соединение установлено |
SYN_SENT |
производится попытка установления соединения |
SYN_REC |
соединение устанавливается |
FIN_WAIT1 |
соединение прерывается |
CLOSED |
соединение прервано |
LISTEN |
режим ожидания соединения с удаленной машиной |
UNKNOWN |
состояние неизвестно
| |
Гнезда домена UNIX
Поле |
Описание |
Proto |
Протокол, используемый для данного гнезда (обычно
unix) |
RefCnt |
Количество процессов, обслуживаемых гнездом на текущий момент
|
Флаг |
|
Туре |
Тип доступа к гнезду |
State |
Состояние гнезда
FREE |
гнездо не используется |
LISTENING |
ожидание соединения |
UNCONNECTED |
соединения нет |
CONNECTING |
производится попытка установления соединения |
CONNECTED |
соединение есть |
DISCONNECTING |
прерывание соединения | |
Path |
Путевое имя, используемое процессами для доступа к гнезду
|
Дав команду netstat с опцией -r, можно
вывести на экран таблицу маршрутизации, а опция -i позволяет
получить информацию об использовании различных сетевых интерфейсов. Содержание
полей разъясняется в следующей ниже таблице.
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR
TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 2000 0 0 0 0 0
58 0 0 0 BLRU
MTU |
Максимальное число байтов в пакете |
RX-OK |
Пакеты, принятые без ошибок |
RX-ERR |
Пакеты, принятые с ошибками |
RX-DRP |
Пропавшие пакеты |
RX-OVR |
Ошибки из-за превышения скорости |
ТХ-ОК |
Пакеты, переданные без ошибок |
TX-ERR |
Пакеты, переданные с ошибками |
TX-DRP |
Пакеты, потерянные при передаче |
TX-OVR |
Пакеты, которые не смогли передать |
Flags |
Характеристики интерфейса
А |
принимает пакеты в случае многоадресной передачи |
В |
принимает широковещательные пакеты |
D |
отладка включена |
L |
закольцовывающий интерфейс |
М |
изменяется динамически (переадресация) |
N |
без обработки завершителей пакетов |
О |
протокол преобразования адресов выключен |
Р |
интерфейс "точка-точка" |
R |
интерфейс работает |
U |
интерфейс
активизирован | |
Каждый компьютер, подключенный к сети, работающей по протоколам TCP/IP
(например, к Internet), идентифицируется своим IP-адресом. IP-адрес представляет
собой комбинацию четырех чисел, определяющих конкретную сеть и конкретный
хост-компьютер в этой сети. IP-адреса очень трудно запоминать, поэтому для
идентификации хост-компьютера вместо его IP-адреса можно пользоваться доменным
именем. Доменное имя состоит из двух частей - хост-имени и имени домена.
Хост-имя - это собственно имя компьютера, а домен обозначает сеть, частью
которой этот компьютер является. Домены, используемые в США, обычно имеют
расширения, обозначающие тип сети. Например, для учебных заведений используется
расширение .edu, а для коммерческих организаций - расширение
.com. Международные домены обычно имеют расширения, которые
обозначают страну, в которой они расположены, например .du для
Германии и .аu для Австралии. Комбинация хост-имени, имени
домена и расширения представляет собой уникальное имя, по которому можно
обращаться к компьютеру. Домен, в свою очередь, иногда разбивается на поддомены.
Как вы знаете, компьютер в сети можно идентифицировать только по его
IP-адресу, даже если он имеет доменное имя. Обратиться к компьютеру в сети по
доменному имени можно, но это предполагает поиск соответствующего IP-адреса в
базе данных. Сеть использует для доступа к компьютеру не доменное имя, а
IP-адрес. До появления очень больших сетей с протоколами TCP/IP, в частности
Internet, каждый компьютер сети мог вести файл с перечнем доменных имен и
IP-адресов всех компьютеров, включенных в эту сеть. В случае обращения по
доменному имени компьютер искал его в этом файле и находил соответствующий
IP-адрес. Так можно поступать и сейчас в отношении удаленных систем, соединения
с которыми устанавливаются чаще всего.
По мере роста сетей ситуация изменилась. Ведение отдельного списка всех
доменных имен и IP-адресов на каждом компьютере стало непрактичным, а в случае с
Internet - просто невозможным. Чтобы обеспечивать преобразование доменных
адресов в IP-адреса, были разработаны и установлены на особые серверы базы
данных, содержащие доменные имена и соответствующие им IP-адреса. Для того чтобы
найти IP-адрес доменного имени, на сервер имен посылается соответствующий
запрос. Сервер имен ищет IP-адрес и посылает его обратно. В крупной сети может
быть несколько серверов имен, обслуживающих различные части сети. Если
какой-либо сервер имен не может найти необходимый IP-адрес, он посылает запрос
на другой сервер. Серверы имен могут предоставлять и такую информацию, как
наименование предприятия, на котором находится искомый компьютер, его адрес и
даже фамилия лица, обслуживающего этот компьютер.
Запросы на серверы имен посылают особые программы, которые называют
определителями (resolver). Определитель - это
программа, предназначенная для получения адресов с серверов имен. Чтобы
пользоваться у себя в системе доменными именами, вам придется конфигурировать
собственный определитель. Конфигурация локального определителя задается файлами
/etc/host.conf и /etc/resolv.conf.
В файле host.conf содержатся опции программы-определителя
(см. следующую таблицу). Каждая опция может иметь несколько полей, отделенных
друг от друга пробелами или знаками табуляции. Для ввода комментария в начале
строки нужно ставить знак #. Опции указывают определителю,
каким сервисом пользоваться. Важное значение имеет порядок следования опций.
Определитель начинает обработку с первой из указанных опций и переходит по
очереди к следующим. Файл host.conf находится в
каталоге /etc вместе с другими файлами конфигурации.
Опция |
Описание |
order |
Задает последовательность методов преобразования имен
hosts |
Проверяется наличие имени в локальном файле /etc/host |
bind |
Запрашивается адрес у сервера имен DNS |
nis |
Для получения адреса используется база данных центра сетевой
информации (NIS) |
alert |
Проверяет наличие в локальной системе адресов удаленных узлов,
пытающихся получить к ней доступ; устанавливается и отменяется ключевыми словами
on и off | |
nospoof |
Подтверждает правильность адресов удаленных узлов, пытающихся
получить доступ к локальной системе |
trim |
Удаляет имя домена из полного имени и проверяет наличие только
хост-имени. Позволяет использовать вместо IP-адреса не полное имя
хост.домен.расширение, а просто хост-имя, указанное в файле
hosts. |
multi |
Позволяет хост-машине иметь несколько IP-адресов в локальном
файле hosts.Включается и выключается ключевыми словами
on и off |
В следующем примере, где представлен файл host.conf, опция
order дает программе-определителю указание искать имена в
локальном файле /etc/ hosts, а в случае неудачи направлять
запрос на сервер имен. Не допускается использование нескольких адресов системы.
/etc/host.conf
# host.conf file
# Lookup names in host file and then check DNS
order bind host
# There are no multiple addresses multi off
Для того чтобы программа-определитель могла выполнять свою задачу, ей должен
быть предоставлен доступ к серверам доменных имен. В файле resolv.conf
содержатся адреса серверов имен, к которым имеет доступ данная система.
В этом файле можно создавать три типа записей, каждая из которых предваряется
одним из трех ключевых слов: domain, nameserver, search. В записи domain
вводится доменное имя локальной системы. В записи search приводится список
доменов на тот случай, если задается только хост-имя. Если к какой-либо системе
пользователь обращается часто, он может ввести имя ее домена в запись search, а
затем использовать в качестве адреса только хост-имя. Определитель попытается
найти полное доменное имя по имени домена, указанному в записи search.
После записей search идут записи nameserver, если таковые имеются. Для
каждого сервера имен, к которому имеет доступ данная система, вводится ключевое
слово nameserver и IP-адрес. Таких серверов может быть
несколько, и порядок их следования в списке очень важен. Во многих сетях
имеется основной сервер имен и несколько вспомогательных. Основной сервер должен
запрашиваться первым. Для этого его IP-адрес должен быть введен в первую запись
nameserver.
Ниже приведен пример файла resolv.conf. Домен
хост-компьютера - berkeley.edu. IP-адреса серверов имен этого
домена указаны в записях name-server. Запись search позволяет использовать в
качестве адреса только хост-имя для компьютеров в домене
unc.edu. Например, чтобы обратиться к системе
sunsite.unc.edu, пользователь должен ввести в качестве адреса
только хост-имя, sunsite.
/etc/resolv.conf
# resolv.conf file
domain berkeley.edu
search unc.edu
nameserver 204.199.87.2
nameserver 204.199.77.2
Если, будучи администратором сети, вы решили организовать в ней сервер имен,
то можно конфигурировать на работу в качестве такого сервера любую
Linux-систему. Для этого необходимо запустить демон named. Этот демон
запускается одновременно с системой и ожидает запросов о доменных именах. Демон
named пользуется несколькими файлами конфигурации, которые
позволяют ему овечать на запросы. В файле name.boot указывается
домен, который обслуживает данный сервер, и имя каталога, предназначенного для
его рабочих файлов. В файле named.hosts хранится информация об
этом домене. Она состоит из записей, содержащих сведения о хост-компьютерах,
находящихся в данном домене. В этих записях используется весьма специфический
формат, с кодами в соответствующих полях. Файл named.rev
содержит данные о соответствии между IP-адресами и хост-именами. Файл
named.ca организует кэширование для сервера имен. Процесс
организации собственного сервера имен может быть довольно сложным. Следует
обратиться к документам HOW TO, странице диалогового руководства по программе
named и литературе по администрированию сети, включающей в свой
состав Linux-системы. |