Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Инструменты для исследования сетей с интерфейсом командной строки, часть 2

Оригинал: CLI tools for Network analysis 2
Автор: Riccardo Capecchi
Дата публикации: 25 сентября 2010 г.
Перевод: А.Панин
Дата публикации перевода: 3 декабря 2012 г.

После рассмотрения программ ping, telnet и dig, продолжим обзор инструментов для исследования сетей с интерфейсом командной строки.

Traceroute

Программа traceroute является инструментом для определения маршрута следования пакетов в сетях, работающих по межсетевому протоколу (Internet Protocol (IP)). Также доступен вариант программы для работы по протоколу IPv6 с названием traceroute6.

Программа traceroute доступна практически во всех UNIX-подобных операционных системах. Также существуют аналоги со сходными функциями, такие, как tracepath в современных дистрибутивах Linux и tracert в операционных системах Microsoft Windows. Операционные системы на основе Windows NT также имеют в своем составе утилиту PingPath c аналогичной функциональностью.

Tracerute отправляет последовательность пакетов протокола межсетевых управляющих сообщений по адресу удаленного узла. Определение адресов промежуточных маршрутизаторов, преодолеваемых пакетами, тесно связано с управлением параметром времени жизни пакета (TTL) в рамках межсетевого протокола. Маршрутизаторы при пересылке пакета уменьшают это значение на единицу и отбрасывают пакет когда значение TTL становится равным нулю, возвращая сообщение об ошибке ICMP (ошибке истечения времени ICMP (ICMP Time Exceeded)) отправившему пакет узлу.

В ходе работы traceroute повышает значение TTL для каждой успешно отправленной группы пакетов. Первые три пакета отправляются с значением TTL равным единице, поэтому ожидается, что первый маршрутизатор не будет производить пересылку пакетов. Следующие три пакета имеют значение TTL равное двум, поэтому второй маршрутизатор отправит ошибку отправившему пакеты узлу. Это продолжается до тех пор, пока пакеты не достигнут узла назначения и он не отправит сообщение о приеме в виде эхо-ответа ICMP (ICMP Echo Reply).

Traceroute использует возвращаемые пакеты с сообщениями ICMP для создания списка узлов, которые преодолевают пакеты с данными по пути к узлу назначения. Три значения времени, возвращаемые для каждого узла по пути следования пакетов являются значениями задержек (времени ожидания) и обычно измеряются в миллисекундах для каждого пакета из последовательности.

Базовый синтаксис:
traceroute <целевой узел>

Пример использования:

Whois

WHOIS (произносится как фраза "who is", в переводе означающая "кто это") является протоколом запросов и ответов, широко используемым для осуществления запросов к базам данных, хранящим списки зарегистрированных пользователей или представителей интернет-ресурсов, доменных имен, блоков IP-адресов или автономных систем, при этом протокол также используется и для получения более широкого круга информации. Протокол описывает хранение и доставку содержимого базы данных в форме, пригодной для чтения человеком. Протокол Whois описан в спецификации RFC 3912, использование протокола может осуществляться при помощи одноименной программы.

Базовый синтаксис:
whois <домен>

Пример использования:

Netstat

На компьютерах под управлением GNU/Linux программа netstat позволяет увидеть состояние открытых сетевых соединений.

При запуске программы без параметров командной строки, будет выведен список активных сокетов в системе, например:

Параметры командной строки должны следовать после дефиса (-), а не слеша (/). Наиболее используемые параметры командной строки:
  • -a: Показать все активные TCP-соединения и все TCP- и UDP-порты, на которых принимаются соединения.
  • -e: Показать статистику работы локальной сети (по технологии Ethernet), включающую в себя количество отправленных и принятых байт и пакетов. Параметр может комбинироваться с параметром -s.
  • -g: Показать информацию о членстве в группах многоадресной передачи данных (Multicast) для протоколов IPv4 и IPv6 (должно быть доступно только на современных операционных системах).
  • -i: Показать список сетевых интерфейсов и статистику их использования.
  • -n: Показать активные TCP-соединения, при этом адреса и номера портов будут представлены в числовом виде и не будет производиться установление имен ресурсов.
  • -p: Показать названия процессов, использующих сокеты (работает только в Linux при наличии прав пользователя root; для Windows аналогичная задача выполняется при помощи параметра -b).
  • -r: Показать содержимое таблицы маршрутизации (эквивалентно выводу команды route print в Windows).
  • -u: Показать состояние UDP-сокетов.
  • -t: Показать состояние TCP-сокетов.

Примеры использования:

netstat -tlnp

Выводит список всех портов, на которых принимаются соединения и соответствующий каждому из них идентификатор процесса (PID). Идентификатор процесса будет выведен только в том случае, когда пользователь имеет привилегии суперпользователя.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: 
'{print $1}' | sort | uniq -c | awk '{ printf("%st%st",$2,$1) ; 
for (i = 0; i < $1; i++) {printf("*")}; print "" }'
Выводит график в ASCII-представлении, отображающий количество установленных соединений с различными IP-адресами. Пример вывода:
10.100.0.22 1 *
10.100.0.23 2 **
10.100.1.51 3 ***
120.116.18.134 1 *
87.11.50.125 4 ****
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c 
Выводит количество соединений и их состояние. Пример вывода:
1 CLOSE_WAIT
11 ESTABLISHED
63 LISTEN
21 TIME_WAIT

Mtr

Программа mtr является инструментом для диагностики сети и комбинирует в себе возможности программ traceroue и ping.

После запуска mtr производит исследование соединения между узлом, на котором она запущена и целевым узлом, заданным параметром командной строки путем отправки пакетов со специально установленными низкими значениями параметра TTL. После этого отправка пакетов с низким значением параметра TTL продолжается, параллельно ведется запись времени приема ответных сообщений от промежуточных маршрутизаторов. Это позволяет mtr подсчитать и вывести процент принятых ответов и время ответа маршрутизаторов по пути следования пакетов до целевого узла. Внезапное повышение количества потерянных пакетов или времени ожидания ответа обычно говорит о плохом качестве (или просто о перегрузке) сети.

Базовый синтаксис:
mtr <имя узла>

Вывод команды "mtr google.com":
Вывод команды mtr google.com

mtr --report --report-cycles 10 www.google.com > google_net_report.txt

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

Если вы предпочитаете программы с графическим интерфейсом, вы можете использовать для исследования сетей программу Wireshark, о которой читайте здесь.