Библиотека сайта rus-linux.net
Инструменты для исследования сетей с интерфейсом командной строки, часть 1
Оригинал: CLI tools for Network analysis 1Автор: Riccardo Capecchi
Дата публикации: 24 сентября 2010 г.
Перевод: А.Панин
Дата публикации перевода: 30 ноября 2012 г.
В прошлых статьях (1, 2, 3) мы рассмотрели инструмент для исследования сети с графическим интерфейсом Wireshark, сегодня же мы начнем рассматривать некоторые инструменты, которые можно использовать в терминале: ping, telnet, dig, traceroute, whois, netstat и mtr.
Ping
Ping является утилитой для проверки доступности узла в компьютерной сети, работающей по межсетевому протоколу (Internet Protocol) и измерения времени обращения сообщений, отправленных с компьютера исследователя на целевой компьютер. Название утилиты пришло из области активной эхолокации.
Функционирование утилиты ping связано с отправкой пакетов эхо-запроса протокола межсетевых управляющих сообщений (Internet Control Message Protocol (ICMP)) к целевому узлу и ожиданием ICMP-ответов. Во время работы происходит измерение времени от отправки запроса до получения ответа (времени обращения) и запись информации обо всех потерях пакетов. Результаты проверки выводятся в форме статистической сводки, включающей в себя количество принятых пакетов, минимальное, максимальное и среднее время обращения, а также иногда среднеквадратичное отклонение времени обращения.
Использование утилиты ping обычно описывается как тестовый опрос компьютера.
Ping может использоваться с различными параметрами командной строки, зависящими от конкретной реализации утилиты, которые позволяют использовать различные режимы работы, такие, как установка размера пакета для исследования, включение автоматического повторения отправки заданного количества пакетов, параметры учета времени или проведение атаки "наводнения пакетами ping" (ping-flood). Эта атака является простейшей разновидностью атаки отказа в обслуживании при которой атакующий блокирует работу целевой системы обработкой большого количества присланных пакетов с эхо-запросами ICMP.
ping <имя узла | IP-адрес узла>
ping www.linuxaria.com PING linuxaria.com (66.7.205.168) 56(84) bytes of data. 64 bytes from solid.nseasy.com (66.7.205.168): icmp_seq=1 ttl=46 time=220 ms 64 bytes from solid.nseasy.com (66.7.205.168): icmp_seq=2 ttl=46 time=171 ms 64 bytes from solid.nseasy.com (66.7.205.168): icmp_seq=3 ttl=46 time=169 ms 64 bytes from solid.nseasy.com (66.7.205.168): icmp_seq=4 ttl=46 time=169 ms 64 bytes from solid.nseasy.com (66.7.205.168): icmp_seq=5 ttl=46 time=168 ms ^C --- linuxaria.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 168.906/179.895/220.449/20.297 ms
Что означает этот вывод?
"time=220 ms
" - время обращения; время, прошедшее между отправкой запроса "здесь ли ты" и получения ответа "да, я здесь!". В данном случае это 220 миллисекунд. Поскольку отправка запросов происходит несколько раз, можно заметить, что это время почти постоянно, что является хорошим знаком. Время может варьироваться в зависимости от ряда факторов, включающих в себя следующие: как далеко находится ваша система от удаленного сервера, как как много маршрутизаторов и другого сетевого оборудования находится между вашей системой и сервером и многое другие.
"5 packets transmitted, 5 received
" - одной из особенностей протокола TCP/IP является то, что он может работать с потерями пакетов. В идеальном случае любой отправленный вами пакет должен быть доставлен по назначению, но по ряду причин это не всегда происходит. Поскольку в нормальных условиях работы сети пакеты все равно будут доставлены по назначению после одного или нескольких повторений отправки, вы даже не заметите этого. Ping отправляет множество пакетов и отдельно оценивает количество успешно отправленных пакетов, поэтому вы можете оценить, приводит ли данное соединение к потере пакетов.
"rtt min/avg/max/mdev
" - примерное время обращения - в случае, когда в первый раз один и тот же тип пакета отправляется по одному и тому же адресу назначения, в следующий раз должно уйти примерно такое же время на отправку пакета, что не всегда так. Иногда по различным причинам, таким, как режимы функционирования сетевого оборудования и маршрут следования пакета, на некоторые процессы отправки пакета и получения ответа уходит больше времени, чем на другие. Ping выводит эту статистику, поэтому вы можете оценить, приводит ли данное соединение к неравномерности времени обращения.
Другие примеры:
ping -c 5 -q 127.0.0.1
Параметр -c
используется для отправки только 5 пакетов, параметр -q
используется для того, чтобы пользователю была показана только статистика.
for i in {1..254}; do ping -c 1 -W 1 192.168.0.$i | grep 'from' | cut -d' ' -f 4 | tr -d ':'; done
Пинг-исследование без nmap.
Эту команду удобно использовать в том случае, когда у вас нет возможности использовать nmap для поиска узла с неизвестным адресом.
Запросы отправляются по адресам из диапазона от 192.168.0.1 до 192.168.0.254, но вы можете легко отредактировать эту команду для использования в вашей подсети.
Время ожидания для повышения скорости работы установлено равным 1 секунде, а в случае использования низкоскоростного соединения рекомендуется повысить значение, чтобы избежать пропущенных ответов.
ping -q -c1 -w3 www.linuxaria.com 2&>1 /dev/null || echo www.linuxaria.com ping failed | mail -ne -s'Server unavailable' admin@linuxaria.com
Проверка работоспособности сервера. В случае отсутствия ответа, отправляется электронное письмо администратору.
Эта команда полезна в том случае, если администратор сервера хочет получать электронные письма в моменты недоступности сервера. Следует создать задачу cron, выполняющуюся каждые 5 минут с этой командой, чтобы администратору отправлялось письмо при отсутствии ответа на запрос ping в течение более чем 3 секунд.
Telnet
Telnet является протоколом из набора протоколов TCP/IP. Он практически полностью идентичен протоколу программы rlogin из UNIX. Программа telnet позволяет управлять удаленным компьютером с вашего компьютера. Она является программным эмулятором терминала. В прошлом жесткие диски были сложны и дороги (я говорю об очень давнем времени) и не было персональных компьютеров. Для использования имеющихся компьютеров необходимо было выделить часть жесткого диска и использовать терминал для управления системой. Для разработчиков это было прекрасным решением, так как работа с компьютером обходилась дешевле. Необходим был только сервер, с которым можно было создать и поддерживать множество соединений. С telnet вы можете имитировать этот тип распределенных вычислений и, например, управлять суперкомпьютером на расстоянии.
TCP/IP работает с портами, и один из них зарезервирован за telnet. Его номер 23. Существует несколько спецификаций RFC. Спецификация номер 854 от 1983 года носит название "Спецификация протокола telnet" ("Telnet protocol specification").
С telnet вы можете делать множество вещей, например, отправлять электронную почту, использовать IRC-конференции или прокси-сервера, и даже (хотя, конечно, сложнее) просматривать и изменять содержимое сайтов. Существуют сервисы, предоставляющие возможность поиска в огромных базах данных при помощи telnet. Благодаря telnet, вы можете использовать всю мощь удаленного компьютера, не тратя ценных ресурсов своей системы.
telnet <имя узла | IP-адрес узла>
Telnet должен создать TCP-соединение с системой, IP-адрес и порт которой указаны пользователем для проверки возможности соединения. Если время соединения истекает, telnet не может установить соединение с узлом (возможно, соединение блокируется межсетевым экраном). Если соединение отклонено, telnet может установить соединение с узлом, но либо служба не работает на заданном порту, либо доступ к службе заблокирован.
telnet www.linuxaria.com 80 Trying 66.7.205.168... Connected to linuxaria.com. Escape character is '^]'. GET /index.php HTTP/1.1 HTTP/1.1 400 Bad Request Date: Fri, 24 Sep 2010 21:02:46 GMT Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8e- fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.11 Content-Length: 422 Connection: close Content-Type: text/html; charset=iso-8859-1
Использование telnet для соединения с HTTP-сервером но порту 80. После соединения отправлен HTTP-запрос GET для получения страницы сайта, что удобно для тестирования возможности доступа к сайту на удаленном сервере хостинг-провайдера с пользовательского сервера.
telnet towel.blinkenlights.nl
Просмотр Звездных Войн по telnet.
telnet towel.blinkenlights.nl 666
Генератор извинений BOHF.
DIG
DIG (искатель информации о домене (domain information groper)) является гибким инструментом для опроса серверов имен DNS. Он может проводить поиск записей и отображать результаты, возвращаемые сервером имен в ответ на запрос. Большинство администраторов DNS-серверов используют dig для поиска проблем с DNS потому, что dig отличается гибкостью, простотой использования и ясностью вывода. Другие аналогичные программы зачастую отличаются меньшей функциональностью.
Несмотря на то, что dig чаще всего используется с параметрами командной строки, предусмотрен и режим работы по сценарию, при котором производится чтение запросов из файла. Краткое описание параметров командной строки и аргументов выводится при передаче параметра -h. В отличие от ранних версий программы, реализация dig от разработчиков сервера BIND9 позволяет производить несколько поисков одновременно из командной строки.
При осуществлении запроса, dig использует список серверов из файла /etc/resolv.conf
за исключением того случая, когда четко задан адрес сервера для запроса.
dig @server name type
В качестве параметра "server
" передается имя или IP-адрес сервера имен для осуществления запроса. В качестве параметра "name
" передается имя записи для поиска.
dig +short myip.opendns.com @resolver1.opendns.com
Получение вашего внешнего IP-адреса.
Вместо того, чтобы открывать браузер, переходить в поисковик Google и вводить строку поиска "whatismyip", можно просто использовать эту команду в терминале. Она также иногда полезна в различных сценариях оболочки.
dig +short txt .wp.dg.cx
Запрос статьи из энциклопедии Wikipedia в терминале через записи DNS.
Эта команда запрашивает статью из Wikipedia, выполняя запрос к DNS-серверу и выводит TXT-запись. Эта запись также содержит короткую ссылку URL на соответствующую запись в Wikipedia.
dig +short txt linux.wp.dg.cx
"Linux ( or ) is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of Linux is the Linux kernel, an operating system kernel first released 5 October 1991 by" " Linus Torvalds. http://en.wikipedia.org/wiki/Linux"
Об остальных программах с интерфейсом командной строки, предназначенных для исследования сетей, мы поговорим во второй части статьи.