Linux в Сети. Сага четвертая
Linux в Сети. Сага четвертая
В продолжение темы "Linux в Сети" наш рассказ о контроле состояния сети и службе DNS. Итак, Сага четвертая, служебная.
Контроль состояния сети: утилиты ping и netstat
Программа ping позволяет проверить наличие доступа к другому компьютеру сети. Она посылает в указанный компьютер запрос и ожидает отклика. Если ответ приходит, то результаты запроса выводятся на консоль, один за другим. Запросы посылаются непрерывно до тех пор, пока пользователь не остановит утилиту нажатием клавиш Ctrl+С. Если ping не может связаться с указанной машиной, она выдает сообщение о том, что машина недоступна. Такой результат свидетельствует о том, что сетевого соединения нет или оно не работает. Причиной может быть конкретный интерфейс, проблема в конфигурации или просто плохой контакт разъемов. Запускается утилита ping командой ping с именем компьютера:
ping linux.hitech.by
Утилита netstat позволяет получить в режиме реального времени информацию о состоянии сетевых соединений, а также статистические данные и таблицу маршрутизации. У этой программы есть несколько опций, с помощью которых можно задавать вид получаемой информации.
Опции утилиты netstat
Запуск netstat без опций позволяет увидеть список сетевых соединений данной системы. Cначала перечисляются активные TCP-соединения, а затем активные гнезда домена типа UNIX. Гнезда (порты) этого домена заняты процессами, обеспечивающими установление соединения данной системы с другими системами. Поля перечислены в следующей таблице.
Запустив 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 содержатся опции программы-определителя (см. таблицу):
Каждая опция может иметь несколько полей, отделенных друг от друга пробелами или знаками табуляции. Для ввода комментария в начале строки нужно ставить знак #. Опции указывают определителю, каким сервисом пользоваться. Важное значение имеет порядок следования опций. Определитель начинает обработку с первой из указанных опций и переходит по очереди к следующим. Файл 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.
Подготовил X-Stranger,
linux@hitech.by,
http://linux.hitech.by
В продолжение темы "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 |
Поле | Описание |
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 | путевое имя, используемое процессами для доступа к гнезду |
— 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 |
В примере опция 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.
Подготовил X-Stranger,
linux@hitech.by,
http://linux.hitech.by
Компьютерная газета. Статья была опубликована в номере 06 за 2003 год в рубрике soft :: linux