Команда ping проверяет, можно ли получить доступ к удаленному узлу с вашего компьютера. Эта простая функциональность крайне полезна при тестировании сетевого подключения, независимо от того, в каком приложении возникла проблема, ping позволяет определить, в каком направлении следует проводить дальнейшее тестирование - сетевого соединения (более низкие уровни) или же приложения (верхние уровни).

Если ping сообщает, что пакеты достигают удаленной системы и возвращаются обратно, проблема пользователя, вероятно, связана с верхними уровнями. Если пакеты не могут вернуться, дело, скорее всего, в протоколах более низкого уровня.

Пользователь часто сообщает о сетевой проблеме, заявляя, что не может открыть сеанс telnet (или ftp, или же отправить почту, или что-то еще) на определенном удаленном узле. И тут же подкрепляет свое утверждение словами, что раньше все работало. В таких случаях, если возможность подключения к удаленному узлу оказывается под вопросом, ping - очень полезное средство. Выполните прозвонку удаленного узла, указанного вам пользователем. Если ping сообщает, что все в порядке, попросите пользователя прозвонить узел. Если и на этот раз пакеты проходят, сосредоточьте дальнейший анализ в области конкретного приложения, с которым возникают проблемы у пользователя. Возможно, пользователь пытается наладить сеанс telnet с узлом, который предоставляет только анонимный ftp-доступ. Возможно, узел не работал именно в тот момент, когда пользователь попытался решить свою задачу. Попросите пользователя попробовать еще раз и очень внимательно наблюдайте за всеми его действиями. Если пользователь все делает правильно, однако ошибка в приложении по-прежнему возникает, может потребоваться тщательный анализ приложения при помощи snoop и даже обращение к администратору удаленной системы.

Если ваша ping-прозвонка проходит успешно, a ping с пользовательской машины дает сбой, проверьте настройки пользовательской системы, а также протестируйте отличия путей к удаленному узлу от вашей машины и от машины пользователя.

Если ваши ping-команды или ping-команды пользователя дают сбой, внимательно отнеситесь к любым сообщениям об ошибках. Сообщения об ошибках ping - полезные проводники в планировании дальнейшего тестирования. Конкретика сообщений может варьироваться от реализации к реализации, однако основных типов ошибок существует не так много:


Unknown host (Неверный узел) - Имя удаленного узла не может быть преобразовано службой имен в IP-адрес. Могут быть виноваты серверы имен (ваш локальный сервер имен или сервер удаленной системы), имя узла может быть неверным, или же возникли неполадки в сети, разделяющей вашу систему и удаленный сервер. Если известен IP-адрес удаленного узла, попробуйте выполнить для него команду ping. Если удалось связаться с узлом по его IP-адресу, в сбоях виновата служба имен. Воспользуйтесь nslookup или dig для тестирования локальных и удаленных серверов, а также для проверки корректности имени узла, которое сообщил пользователь.

Network unreachable (Сеть недоступна) - В локальной системе нет маршрута к этой удаленной системе. Если в командной строке ping использовался численный IP-адрес, повторно наберите команду ping с именем узла. Это исключает возможность некорректного ввода адреса IP либо использования изначально неверного адреса. Если используется протокол маршрутизации, убедитесь, что он запущен, и проверьте таблицу маршрутизации при помощи netstat. Если используется статический маршрут по умолчанию, установите его повторно. Если создается впечатление, что на локальном узле все работает, проверьте шлюз по умолчанию на наличие проблем с маршрутизацией.

No answer (Нет ответа) - Удаленная система не ответила. Версии этого сообщения есть в большинстве сетевых приложений. Отдельные реализации ping выводят сообщение «100% packet loss (100% пакетов утеряно)», telnet отображает сообщение «Connection timed out» (Истек интервал ожидания соединения), a sendmail возвращает ошибку «cannot connect» (невозможно подключиться). Все эти сообщения означают одно: локальная система знает маршрут к удаленной системе, однако не получила ответы от удаленной системы ни на один из отправленных пакетов.

Существует множество возможных причин этой проблемы. Неработоспособность удаленного узла, некорректные настройки локального или удаленного узла, неработоспособность шлюза или цепи между локальным и удаленным узлами, проблемы маршрутизации на удаленном узле. Выявить истинную причину позволяет только дополнительное тестирование. Внимательно проверьте локальные настройки при помощи netstat и ifconfig. Отследите маршрут к удаленной системе при помощи traceroute. Свяжитесь с администратором удаленной системы и сообщите о проблеме.

Все упомянутые здесь инструменты мы еще обсудим в этой главе. Но прежде чем расстаться с ping, взглянем более пристально на команду и сведения статистики, которые она отображает.