Linux в Сети. Сага четвертая. Ping и netstat.
Автор : X-Stranger
В продолжение темы "Linux в Сети" наш рассказ о контроле состояния сети и службе DNS. Итак, Сага четвертая, служебная.
Контроль состояния сети: утилиты ping и netstat
Программа ping позволяет проверить наличие доступа к другому компьютеру сети. Она посылает в указанный компьютер запрос и ожидает отклика. Если ответ приходит, то результаты запроса выводятся на консоль, один за другим. Запросы посылаются непрерывно до тех пор, пока пользователь не остановит утилиту нажатием клавиш Ctrl+С. Если ping не может связаться с указанной машиной, она выдает сообщение о том, что машина недоступна. Такой результат свидетельствует о том, что сетевого соединения нет или оно не работает. Причиной может быть конкретный интерфейс, проблема в конфигурации или просто плохой контакт разъемов. Запускается утилита ping командой ping с именем компьютера:
ping linux.hitech.by
Утилита netstat позволяет получить в режиме реального времени информацию о состоянии сетевых соединений, а также статистические данные и таблицу маршрутизации. У этой программы есть несколько опций, с помощью которых можно задавать вид получаемой информации.
Опции утилиты netstat
-a
|
выдать информацию обо всех гнездах включая гнезда, работающие только на прием
|
-i
|
выдать статистическую информацию обо всех сетевых устройствах
|
-c
|
непрерывно выдавать информацию о состоянии сети до тех пор, пока работа программы не будет прервана
|
-n
|
выдать IP-адреса удаленной и локальной систем
|
-o
|
выдать информацию о количестве повторно переданных байтов и состоянии таймера (on/off)
|
-r
|
выдать хранящуюся в ядре таблицу маршрутизации
|
-t
|
выдать информацию только о TCP-гнездах включая работающие на прием
|
-u
|
выдать информацию только об UDP-гнездах
|
-v
|
выдать информацию о версии netstat
|
-w
|
выдать информацию только о raw-гнездах
|
-x
|
выдать информацию о доменных гнездах типа Unix
|
Запуск netstat без опций позволяет увидеть список сетевых соединений данной системы. Cначала перечисляются активные 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
|
количество процессов, обслуживаемых гнездом на текущий момент
|
Tape
|
тип доступа к гнезду
|
State
|
состояние гнезда:
FREE — гнездо не используется
LISTENING — ожидание соединения
UNCONNECTED — соединения нет
CONNECTING — производится попытка установления соединения
CONNECTED — соединение есть
DISCONNECTING — прерывание соединения
|
Prth
|
путевое имя, используемое процессами для доступа к гнезду
|
Запустив netstat с опцией -r, можно вывести на экран таблицу маршрутизации, а опция -i позволяет получить информацию об использовании различных сетевых интерфейсов. Содержание полей:
— MTU — максимальное число байтов в пакете;
— RX-OK — пакеты, принятые без ошибок;
— RX-ERR — пакеты, принятые с ошибками;
— RX-DRR — пропавшие пакеты;
— RX-OVR — ошибки из-за превышения скорости;
— TX-OK — пакеты, переданные без ошибок;
— TX-ERR — пакеты, переданные с ошибками;
— TZ-DRR — пакеты, потерянные при передаче;
— TX-OVR — пакеты, которые не смогли передать;
— Flags — характеристики интерфейса:
A — принимает пакеты в случае многоадресной передачи;
B — принимает широковещательные пакеты;
D — отладка включена;
L — закольцовывающий интерфейс;
M — изменяется динамически (переадресация);
N — без обработки завершителей пакетов;
O — протокол преобразования адресов выключен;
P — интерфейс "точка-точка";
R — интерфейс работает;
U — интерфейс активизирован.
Служба доменных имен (DNS)
Каждый компьютер, подключенный к сети, работающей по протоколу TCP/IP (в т.ч. и Интернет), идентифицируется своим IP-адресом. IP-aдрес представляет собой комбинацию четырех чисел, определяющих конкретную сеть и конкретный хост-компьютер в этой сети. IP-адреса очень трудно запоминать, поэтому для идентификации хост-компьютера вместо его IР-адрреса можно пользоваться доменным именем. Доменное имя состоит из двух частей: хост-имени и имени домена. Хост-имя — это собственно имя компьютера, а домен обозначает сеть, частью которой этот компьютер является. Домены, используемые в США, обычно имеют расширения, обозначающие тип сети. Например, для учебных заведений используют расширение .edu, а для коммерческих организаций — расширение .com. Международные домены обычно имеют расширения, которые обозначают страну, в которой они расположены — например, .by для Беларуси. Комбинация хост-имени, имени домена и расширения представляет собой уникальное имя, по которому можно обращаться к компьютеру. Домен, в свою очередь, может разбиваться на поддомены.
Известно, что компьютер в сети можно идентифицировать только по его IP-адресу, даже если он имеет доменное имя. Обратиться к компьютеру в сети по доменному имени можно, но это предполагает поиск соответствующего IP-адреса в базе данных. Сеть использует для доступа к компьютеру не доменное имя, а IP-адрес. До появления очень больших сетей с протоколами TCP/IP, в частности, Internet, каждый компьютер сети мог вести файл-список доменных имен и IP-адресов всех компьютеров, включенных в эту сеть. В случае обращения по доменному имени компьютер искал его в этом файле и находил соответствующий IP-адрес. Так можно поступать и сейчас в отношении удаленных систем, соединения с которыми устанавливаются чаще всего.
Но по мере роста сетей ситуация изменилась. Ведение отдельного списка всех доменных имен и IP-адресов на каждом компьютере стало непрактичным, а в случае с Интернетом — просто невозможным. Чтобы обеспечивать преобразование доменных адресов в IP-адреса, были разработаны и установлены на особые серверы базы данных, содержащие доменные имена и соответствующие им IP-адреса. Для того чтобы найти IP-адрес доменного имени, на сервер имен посылается соответствующий запрос. Сервер имен ищет IP-адрес и посылает его обратно. В крупной сети может быть несколько серверов имен, обслуживающих различные части сети. Если какой-либо сервер имен не может найти необходимый IP-адрес, он посылает запрос на другой сервер. Серверы имен могут предоставлять и такую информацию, как наименование предприятия, на котором находится искомый компьютер, его адрес и даже фамилию лица, обслуживающего этот компьютер.
Запросы на серверы имен посылают особые программы, которые называют резолверами, или определителями. Это программа, предназначенная для получения адресов с серверов имен. Чтобы пользоваться у себя в системе доменными именами, нам придется сконфигурировать свой собственный определитель. Конфигурация задается файлами /etc/host.conf и /etc/resolv.conf.
В файле host.conf содержатся опции программы-определителя (см. таблицу):
order
|
задает последовательность методов преобразования имен
hosts — проверяется наличие имени в локальном файле /etc/host
bind — запрашивается адрес у сервера имен DNS
nis — для получения адреса используется база данных центра сетевой информации
alert — проверяет наличие в локальной системе адресов удаленных узлов, пытающихся получить к ней доступ; устанавливается и отменяется ключевыми словами on и off
|
nospoof
|
подтверждает правильность адресов удаленных узлов, пытающихся получить доступ к локальной системе
|
trim
|
удаляет имя домена из полного имени и проверяет наличие только хост-имени; позволяет использовать вместо IP-адреса не полное имя хост.домен.расширение, а просто хост-имя, указанное в файле hosts
|
multi
|
позволяет хост-машине иметь несколько IP-адресов в локальном файле hosts; включается и выключается ключевыми словами on и off
|
Каждая опция может иметь несколько полей, отделенных друг от друга пробелами или знаками табуляции. Для ввода комментария в начале строки нужно ставить знак #. Опции указывают определителю, каким сервисом пользоваться. Важное значение имеет порядок следования опций. Определитель начинает обработку с первой из указанных опций и переходит по очереди к следующим. Файл host.conf находится в каталоге /etc вместе с другими файлами конфигурации.
В примере опция order дает программе-определителю указание искать имена в локальном файле /etc/hosts, а в случае неудачи направлять запрос на сервер имен:
# 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. Домен хост-компьютера hitech.by. IP-адреса серверов имен этого домена указаны в записях name server. Запись search позволяет использовать в качестве адреса только xocт-имя для компьютеров в домене list.by. Например, чтобы обратиться к системе you.list.by, пользователь должен ввести в качестве адреса только хост-имя you.
# resolv.conf file
domain hitech.by
search list.by
nameserver 80.168.115.2
nameserver 80.168.115.3
Если вы администратор сети и решили организовать в ней сервер имен, то в качестве такого сервера можно использовать любую Linux-систему. Для этого необходимо запустить демон named. Этот демон запускается одновременно с системой и ожидает запросов о доменных именах. Демон named пользуется несколькими файлами конфигурации, которые позволяют ему отвечать на запросы. В файле named.boot указывается домен, который обслуживает данный сервер, и имя каталога, предназначенного для его рабочих файлов. В файле named.hosts хранится информация об этом домене. Она состоит из записей, содержащих сведения о хост-компьютерах, находящихся в данном домене. Файл named.rev содержит данные о соответствии между IP-адресами и хост-именами. Файл named.ca организует кэширование для сервера имен. Процесс организации собственного сервера имен довольно сложен. Следует обратиться к документам HOW-TO.