Fping
Стандартная реализация программы Ping, которая поставляется с большинством версий TCP/IP-протокола, разработана для работы на одиночном хосте. Хоть это и удобно, но использование утилиты для тестирования большой сети превращается в кропотливый процесс. Пользователь должен последовательно запускать программу для каждого хоста и ожидать, пока Ping вернет результаты.
Для решения этих проблем была создана программа Fping, которая позиционируется как быстрый Ping. Утилиту можно свободно загрузить с хоста http://www.fping.com/. Windows-приложение, аналогичное утилите fping (но не портированное под Windows Fping), можно загрузить по адресу http://www.kwakkelflap.com/. Но мы не будем рассматривать эту программу в данном разделе.
Реализация
Fping посылает ICMP (Internet Control Message Protocol) запросы по списку IP-адресов, обеспечивая параллельную выдачу информации на стандартный вывод или в файл. Программа посылает циклические запросы, не ожидая ответа на каждый из них. Когда ответы, наконец, возвращаются, fping отмечает, доступен хост или нет, и продолжает ожидать ответы на протяжении всего цикла работы программы. Такой способ асинхронного управления работой при опросе большого количества хостов позволяет получить лучшие, чем при использовании обычной утилиты Ping, результаты. До появления утилиты Fping тестирование всей сети требовало написания программы на языке командного интерпретатора, в которой производился последовательный опрос всех хостов и запись результатов в файл. Вывод результатов этой программы требовал дальнейшей сортировки для анализа пользователем. Fping не только делает эту работу быстрее, но и выводит результаты своей работы в более дружественном для пользователя виде.
Ниже приведен пример вывода после тестирования подсети класса C с маской 192.168.1.0 Запустив команду fping -a -g 192.168.1.1 192.168.1.254 -s hosts, мы сможем увидеть, какие хосты в сети работают, и сохранить их IP-адреса в файле. Вдобавок к этому, флаг -s указывает на необходимость выводить итоговую информацию о работе.
Если мы добавим флаг -n в командную строку, то сможем посмотреть и имена, соответствующие IP-адресам. Fping будет записывать в файл имена хостов вместо IP-адресов.
254 targets 3 alive 251 unreachable 0 unknown addresses
143 timeouts 397 ICMP Echos sent 3 ICMP Echo Replies received 294 other ICMP received
0.10 ms (min round trip time) 0.62 ms (avg round trip time) 1.02 ms (max round trip time) 11.921 sec (elapsed real time)
[root@originix fping-2.4b_2_to]# cat hosts 192.168.1.1 192.168.1.100 192.168.1.101
Анализируя далее командную строку мы увидим, что флаг -a указывает на необходимость выводить на стандартный вывод информацию о доступных хостах. Флаг -g выполняет функции утилиты gping (кратко упоминаемой здесь) и создает список IP-адресов для сканирования. В этом случае список IP-адресов от 192.168.1.1 до 192.168.1.254 передается утилите fping. В дополнение к флагу -g, fping может получить список IP-адресов, которые необходимо сканировать через стандартный вход или из файла, имя которого можно указать после флага -f. Полный список доступных параметров командной строки утилиты fping версии 2.4b2, к которым вы можете получить доступ, набрав fping в командной строке, таков.
Usage: ./fping [options] [targets...] -a show targets that are alive (показывает доступные хосты). -A show targets by address (показывает хосты по их IP-адресам). -b n amount of ping data to send, in bytes (default 56) (количество посылаемых пакетов) (по умолчанию 56). -B f set exponential backoff factor to f (устанавливает фактор задержки). -c n count of pings to send to each target (default 1) (количество пакетов посылаемых, каждому хосту (по умолчанию 1)). -C n same as -c, report results in verbose format (тоже самое что и -c - выводит результаты с расширенными текстовыми комментариями). -e show elapsed time on return packets (выводит время выполнения для вернувшихся пакетов). -f file read list of targets from a file ( - means stdin) (only if no -g specified) (задает имя файла со списком тестируемых хостов (пробел означает, что список берется из стандартного ввода).
Используется, только если не задан параметр -g). -g generate target list (only if no -f specified) (specify the start and end IP in the target list, or supply an IP netmask) (ex. ./fping -g 192.168.1.0 192.168.1.255 or ./fping -g 192.168.1.0/24) генерирует список тестируемых хостов (только если не задан параметр -f) (задается начальный и конечный IP адреса, или сетевая маска ). -i n interval between sending ping packets (in millisec) (default 25) задает интервал между посылаемыми пакетами (в миллисекундах) (по умолчанию 25). -l loop sending pings forever (задает опрос хостов в цикле). -m ping multiple interfaces on target host (тестирование нескольких интерфейсов на доступном хосте). -n show targets by name (-d is equivalent) (отображает тестируемые хосты по имени (то же самое что и -d)). -p n interval between ping packets to one target (in millisec) (in looping and counting modes, default 1000) задает интервал между посылкой пакетов на один и тот же хост (в миллисекундах) (в цикле или непрерывном режиме, по умолчанию 1000). -q quiet (don't show per-target/per-ping results) (подавляет вывод как по хостам так и для пакетов). -Q n same as -q, but show summary every n seconds (то же самое что -q, но выводит сводную информацию каждые n секунд). -r n number of retries (default 3) число попыток (по умолчанию 3). -s print final stats (вывод финальной статистики). -t n individual target initial timeout (in millisec) (default 500) (начальная задержка для опрашиваемого хоста (в миллисекундах) (по умолчанию 500)). -u show targets that are unreachable (отображает недоступные хосты). -v show version (выводит номер версии) targets list of targets to check (if no -f specified) (список проверенных хостов (если не задан параметр -f).
Раньше утилита fping работала совместно с gping. Утилита gping брала на себя черновую работу по определению большого списка IP-адресов для сканирования с помощью fping. Вообразите себе необходимость сканирования сети класса B (65 534 хостов) и ввода вручную каждого IP-адреса! Вам понадобилось бы написать такой скрипт для автоматизации этой работы, создание которого весьма утомительно и сложно для человека, не имеющего опыта программирования на командном языке.Теперь в утилиту fping добавлен флаг -g. Добавление этого параметра сделала fping совершенно независимой утилитой.
Выгоды от использования fping очевидны. Примерно за 10 секунд мы определили, сколько хостов присутствует в нашей сети, какие у них IP-адреса и получили начальную информацию, необходимую для создания схемы нашей сети. Но следует иметь в виду, что этот инструмент предоставляет те же самые преимущества назойливым чужакам, которые бродят вокруг в поисках доступа к чужим сетям.