Для справки, lkjsdaflkjdsjf.com - это имя хоста (которое на данный момент никому не зарегистрировано). ping не работает с URL, ping работает с именами хостов. имена хостов ищутся с использованием системы доменных имен . Предполагается, что DNS не работает, если имена хостов не зарегистрированы.
Проблема в том, что некоторые службы (по-видимому, ваш интернет-провайдер и, определенно, OpenDNS) НЕ терпят неудачу DNS-запросов для имен хостов, которые не зарегистрированы. Вместо этого они возвращают IP-адрес узла в своей сети, который представляет страницу поиска для любого http-запроса.
Похоже, вы хотите знать две вещи: является ли имя реальным (то есть существует ли хост с таким именем, зарегистрированный на каком-то реальном компьютере)? И эта машина работает?
Если вы уже знаете, что указанное имя является реальным (например, вы хотите знать, работает ли www.google.com), тогда вы можете использовать ping, поскольку вы знаете, что имя будет преобразовано в реальный адрес ( Интернет-провайдер не может вернуть свой IP-адрес для зарегистрированного имени), и вы будете только измерять, работает ли этот аппарат.
Если вы не знаете, является ли имя реальным, тогда проблема сложнее, потому что ваш провайдер возвращает ложные данные в ваш запрос DNS. ЕДИНСТВЕННОЕ решение здесь - найти DNS-сервер, который не собирается вам врать о неразрешенных именах.
Единственный способ, с помощью которого я могу различить поддельные записи вашего провайдера и реальные, - это обратный поиск на IP-адресе, который вы получаете, и посмотреть, находится ли этот IP в сети вашего провайдера. Проблема с этим трюком заключается в том, что если у провайдера нет информации об обратном DNS для этого IP-адреса, вы не будете знать, является ли провайдер или просто тупица, который не сконфигурировал свой DNS должным образом (я много раз ошибался времена в прошлом).
Я уверен, что есть и другие методы, но тот факт, что DNS лежит в основе всего, затрудняет решение этой проблемы.