Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sistema_TCP.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
604 Кб
Скачать
☆

Глава 21. Управление сетями 915

можно, они вызваны разрывом связи): либо его статические маршруты заданы неверно, либо протоколы динамической маршрутизации не могут определить правильный марш­ рут для передачи пакета получателю.

Если команда traceroute не работает (или работает слишком медленно), это мо­ жет быть вызвано превышением тайм-аута при попытках узнать имя компьютера в DNS. Возможно, на компьютере не функционирует служба DNS. В таком случае воспользуй­ тесь командой traceroute -n. Флаг -n отменяет поиск имен, и только этот способ иногда позволяет все же выполнить команду traceroute в поврежденных сетях.

Для выполнения команды traceroute необходимо иметь права суперпользователя. Чтобы обычный пользователь могут выполнить эту команду, она должна быть инстал­ лирована с установленным битом setuid. В некоторые дистрибутивные пакеты системы Linux команда traceroute включается без установленного бита setuid. В зависимости от окружения и потребностей, бит setuid можно включить снова или предоставить заин­ тересованным пользователям доступ к этой команде с помощью команды sudo.

В последние годы появилось несколько утилит, аналогичных команде traceroute, которые могут проходить через брандмауэры, блокирующие ICMP-пакеты. Обзор этих инструментов можно найти на странице tinyurl.com/y99qh6u на сайте РЕТТКВ Wiki. Нам особенно понравилась утилита mtr, которая имеет интерфейс, похожий на интер­ фейс утилиты top, и работает, как утилита traceroute. Очень хорошо сделано!

В зависимости от вида маршрутизации, иногда полезно посмотреть на свой сайт с точки зрения внешнего мира. Несколько веб-служб для отслеживания маршрутов позво­ ляют выполнять функции, обратные утилите traceroute, не выходя из браузера. Томас Кернен (Tomas Kemen) поддерживает список этих служб на сайте traceroute.org.

37. Команда netstat: получение информации о состоянии сети

Команда netstat выдает различную информацию о состоянии сетевого программ­ ного обеспечения, включая статистику сетевых интерфейсов, данные о маршрутизации и таблицы соединений. Никакого объединяющего звена во всех этих информационных блоках нет, просто они касаются функционирования сети. Команду netstat можно сравнить с “кухонным сливом” сетевых инструментов — она отражает много сетевой информации, которая не появляется больше нигде.

Мы рассмотрим пять наиболее распространенных вариантов использования коман­ ды netstat, а именно:

• проверка состояния сетевых соединений;

• анализ конфигурации интерфейсов;

• изучение таблицы маршрутизации;

• проверка таблицы маршрутизации;

• получение статистических данных о различных сетевых протоколах.

Контроль состояния сетевых соединений

Команда netstat -i демонстрирует конфигурацию и состояние каждого сетевого интерфейса узла и данные соответствующих счетчиков трафика. Результаты обычно вы­ водятся в виде таблицы, структура которой зависит от операционной системы.

916 Часть II. Работа в сети

solaris$ netstat -i

Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue

lo0 8232 loopback localhost 319589661 0

e1000g1 1500 host-if1 host-if1 369842112 0

e1000g2 1500 host-if2 host-if2 93141891 0

319589661 0

348557584 0

121107161 0

0 0 0 0 0 0

hp-ux$ netstat -i

Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll lan0 1500 192.168.10.0 hpux11 2611259 0 2609847 0 0 lo0 32808 loopback hpux11.atrust.com

aix$ netstat -i

Name Mtu Network Address ZoneID Ipkts Ierrs Opkts Oerrs Coll

en3 1500 link#2 0.11.25.39.e0.b6 41332 0 14173 3 0

en3 1500 192.168.10 IBM 41332 0 14173 3 0

lo0 16896 link#1 1145121 0 1087387 0 0

lo0 16896 127 loopback 1145121 0 1087387 0 0

lo0 16896 ::1 0 1145121 0 1087387 0 0

linux$ ifconfig -a

eth0

eth1

lo

Link encap:EthernetHWaddr 00:15:17:4c:4d:00

inet addr:192.168.0.203Bcast:192.168.0.255Mask:255.255.255.0

inet6 addr: fe80::215:17ff:fe4c:4d00/64 Scope:Link

UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1

RX packets:559543852 errors:0 dropped:62 overruns:0 frame:0

TX packets:457050867 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:478438325085 (478.4 GB)TX bytes:228502292340 (228.5 GB)

Memory:b8820000-b8840000

Link encap:EthernetHWaddr 00:15:17:4c:4d:01

BROADCAST MULTICASTMTU:1500Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 B)TX bytes:0 (0.0 B)

Memory:b8800000-b8820000

Link encap:Local Loopback

inet addr:127.0.0.1Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNINGMTU:16436Metric:1

RX packets:1441988 errors:0 dropped:0 overruns:0 frame:0 TX packets:1441988 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

RX bytes:327048609 (327.0 MB)TX bytes:327048609 (327.0 MB)

Глава 21. Управление сетями 917

Этот узел имеет два сетевых интерфейса: один предназначен для регулярного тра­ фика, а второй в настоящее время не используется (он не имеет IP-адреса и не отмечен меткой UP). Команды RX packets и TX packets сообщают количество пакетов, полу­ ченных интерфейсом и прошедших через него после загрузки компьютера. В разделах, предназначенных для подсчета ошибок, регистрируются многие виды ошибок, и обычно в них можно увидеть небольшие числа.

Количество ошибок не должно превышать 1% от связанных с ними пакетов. Если уровень ошибок выше, сравните его с уровнем ошибок на соседних компьютерах. Большое количество ошибок на отдельном компьютере свидетельствует о проблеме с интерфейсом или соединением. Высокий уровень ошибок почти наверняка означает проблему с окружением или сетью. Одна из наиболее частых причин большого количе­ ства ошибок заключается в том, что несоответствие скорости работы платы Ethernet или дуплекса вызывает сбой при автоопределении.

Несмотря на то что коллизия — это разновидность ошибки, программа netstat под­ считывает ее отдельно. Поле с заголовком Collisions содержит количество коллизий, зарегистрированных при отправке пакетов. На основе этого числа можно вычислить процент исходящих пакетов (TX packets), вызвавших коллизию.

В коммутированной сети с полнодуплексными связями, т.е. в современных версиях плат Ethernet, коллизий быть не должно, даже если сеть перегружена. Если обнаружены коллизии, значит, произошло нечто серьезное. Кроме того, следует проверить, что по­ ток управления поступает на ваши коммутаторы и маршрутизаторы, особенно если ваша сеть содержит связи с разными скоростями.

Причинами сетевых проблем часто становятся дешевые компоненты настольного се­ тевого оборудования, например коммутатор с временной проводкой, который следует заменить.

Отслеживание состояния сетевых соединений

Если программа netstat запущена без аргументов, она выводит на экран состояние ак­

тивных TCP- и UDP-портов. Неактивные (“прослушивающие”) серверы, ожидающие соеди­

нения, как правило, скрываются, но вы можете увидеть их, выполнив команду netstat -а.5

Результаты ее работы выглядят следующим образом.

linux$ netstat -а

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address ForeignAddress State

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

tcp 0 0

*:ldap *:*

*:mysql *:*

*:imaps *:*

bull:ssh dhcp-32hw:4208

bull:imaps nubark:54195

bull:http dhcp-30hw:2563

bull:imaps dhcp-18hw:2851

*:http *:*

bull:37203 baikal:mysql

*:ssh *:*

LISTEN

LISTEN

LISTEN

ESTABLISHED

ESTABLISHED

ESTABLISHED

ESTABLISHED

LISTEN

ESTABLISHED

LISTEN

5 В отчете показаны также соединения для “сокетов доменов UNIX”, но поскольку они не относятся

к работе сети, мы их не обсуждаем.

918 Часть II. Работа в сети

Этот отчет сильно сокращен; например, здесь не показаны соединения сокетов UDP и UNIX. В этом отчете упомянуты входящее SSH-соединение, два входящих IMAPS- соединения, одно входящее HTTP-соединение, исходящее MySQL-соединение и группа портов, прослушивающих остальные соединения.

Адреса представлены в формате имя_компьютера.служба, где служба — это номер порта. Для известных служб порты указаны в символическом виде (соответствия между номерами портов и их именами определены в файле /etc/services). При наличии оп­ ции -n все адреса отображаются в числовом виде. Помните: когда служба DNS не функ­ ционирует, команда netstat будет выполняться очень медленно, если не указать флаг -n.

В колонках Send-Q и Recv-Q показывается, сколько запросов находится во входя­ щих и исходящих очередях на данном компьютере. На другом конце соединения раз­ меры очередей могут быть иными. Желательно, чтобы эти значения были близки к нулю и не были ненулевыми постоянно. Конечно, если команда netstat запускается через сетевой терминал, для ее соединения размер исходящей очереди, скорее всего, никогда не будет равен нулю.

Состояние соединения определено только для протокола TCP. Протокол UDP не проверяет факт установления соединения. Наиболее распространенные состояния тако­ вы: ESTABLISHED (установлено) — для активных соединений, LISTEN (ожидание) — для серверов, ожидающих поступления запросов (при отсутствии опции -а обычно не по­ казываются), TIME_WAIT (ожидание закрытия) — для соединений, находящихся в про­ цессе закрытия.

Эта информация полезна, главным образом, для устранения проблем на высоком уровне, если, конечно, базовые сетевые средства работают нормально. Команда netstat позволяет проверить правильность настройки серверов и диагностировать определенные виды нарушений связи, особенно при работе с протоколом TCP. Например, если соеди­ нение находится в состоянии SYN_SENT, то это означает наличие процесса, который пы­ тается установить контакт с несуществующим или недоступным сервером.

Если команда netstat сообщает о большом количестве соединений, находящихся в состоянии SYN_WAIT, то компьютер, очевидно, не в состоянии обработать имеющееся число запросов на установление соединений. Такая ситуация может быть вызвана огра­ ничениями системного ядра или даже злонамеренными попытками вызвать перегрузку.

Информация о настройке ядра приводилась в главе 13.

Идентификация прослушивающих сетевых служб

Один из наиболее часто возникающих вопросов, связанных с безопасностью, звучит так: “Какие процессы на данном компьютере прослушивает сеть в ожидании входящих соединений?” Команда netstat -а показывает все порты, активно прослушивающие соединения (любой ТСР-порт в состоянии LISTEN и потенциально любой UDP-порт), но на загруженной машине эти линии могут оказаться затерянными в шуме установлен­ ных ТСР-соединений.

В системе Linux для выявления только прослушивающих портов следует ис­ пользовать команду netstat -l. Кроме того, можно добавить флаг -р, что­ бы идентифицировать специфичные процессы, связанные с каждым прослу­ шивающим портом.6 Пример, продемонстрированный ниже, описывает три обычные службы (sshd, sendmail и named) и одну необычную.

6 В системах UNIX, не поддерживающих флаг -р, эту и другую информацию можно получить с помощью команды lsof, описанной в разделе 6.2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]