50

Существует ли какой-либо общий постоянно работающий сервер, который я могу настроить для проверки связи в автоматическом режиме, чтобы обнаружить доступный интернет? Нравится Google или что-то? Может быть 8.8.8.8?

Моя конкретная ситуация заключается в том, что я использую двойной маршрутизатор WAN. Каждый WAN подключен к одному из интернет-провайдеров. Когда мои деньги заканчиваются на одном из интернет-провайдеров, он не блокирует канал. Вместо этого он перенаправляет на страницу с предупреждением. Итак, маршрутизатор считает, что интернет включен, потому что данные путешествуют. Другой вариант для этого маршрутизатора - пинговать некоторый адрес, чтобы проверить, включен ли интернет.

Интересно, если я пингую 8.8.8.8, не будет ли я забанен Google за ненадлежащее использование? Я подозреваю, что Google может иметь некоторые квоты. Если я слишком часто пингую его серверы имен, то иногда получаю отказы от DNS.

7 ответов7

56

Попробуйте пинговать 8.8.8.8, это основной DNS-сервер Google. Я всегда пингую его, чтобы проверить мое соединение, и я так и не нашел его. В качестве альтернативы вы можете попробовать 8.8.4.4, который является вторичным DNS Google.

27

Вы можете сделать то, что делает Microsoft: проверьте, что

http://www.msftncsi.com/ncsi.txt

возвращает "Microsoft NCSI"

Вы также можете проверить, что dns.msftncsi.com

указывает на 131.107.255.255

См. Http://technet.microsoft.com/en-us/library/ee126135

13

Особый случай

Вы хотите пропинговать "ближайший" фиксированный IP-адрес, который не маршрутизируется, когда провайдер входит в состояние перегрузки трафика. В моей системе я могу эмулировать эту ситуацию, не пройдя аутентификацию ADSL. В этом случае, сравнивая результаты traceroute -n в нормальных и ненормальных условиях, я вижу, что первый переход к 8.8.8.8 (или любому другому внешнему сайту), который не отвечает, - 151.6.68.45, который является частью моего провайдера. инфраструктуры.

Используя этот IP в качестве хоста «чек-живого» (после того, как повторить тест , просто чтобы убедиться , что фиксировано), можно обнаружить ISP аномалии без получения ложных срабатываний в случае ADSL в порядке, но маршрутизация ISP имеет проблемы ,

Конечно, я мог бы использовать 8.8.8.8 специально, полагая, что если я не смогу добраться до инфраструктуры Google, меня не волнует причина, я мог бы также попытаться использовать резервный маршрутизатор.

Общий случай

"Интернет доступен" - гораздо более сложная вещь, чем просто «Доступен ли 8.8.8.8 (или другой IP)».

Для быстрой, грязной и не всегда надежной проверки пинг 8.8.8.8 хорош. Но, видя, как вы используете числовой IP вместо доменного имени, вы уже смирились с тем фактом, что у вас может быть IP-соединение и все еще "нет Интернета" из-за проблем с DNS.

Полная диагностика должна начинаться рядом с вашим ПК.

  • запросить конфигурацию локальной сети и получить шлюз и DNS-сервер.
  • пинг в ворота. Это должно быть достижимо. Если нет, то есть локальная проблема.
  • запустить traceroute с коротким TTL (на самом деле лучше использовать трассировку TCP, такую как предоставляемая hping) с несомненно внешним адресом, 8.8.8.8 - это нормально.
  • Вы хотите видеть, что после вашего шлюза некоторые дополнительные узлы отвечают.

Например в Windows XP дома у меня есть:

 1    <1 ms    <1 ms    <1 ms  192.168.4.200   -- (constant) Home Linux box (gateway)
 2    <1 ms    <1 ms    <1 ms  192.168.0.1     -- (constant) ADSL modem
 3     *        *        *     *               -- WAN interface, always fails; expected
 4     *        6 ms     6 ms  151.6.64.30     -- (varies) ISP gateway

Теперь попробуйте пинговать DNS. Это должно быть достижимо. Еще лучше запустить простую проверку DNS. Чтобы избежать кеширования DNS, я иногда использую какой-то домен, который будет отвечать на все запросы, несмотря ни на что. Так например

$ host randomasdfdsasdqwerty987667.godaddy.com
randomasdfdsasdqwerty987667.godaddy.com has address 97.74.104.201

в то время как DNS-сервер ненадежен, тот же запрос может вернуть адрес неавтоматического портала для Wi-Fi

$ host randomasdfdsasdqwerty987667.godaddy.com
captiveportal.homenet has address 192.168.4.200

или 127.0.0.1, или даже ошибка.

В случае сбоев DNS я могу попробовать трассировку IP-адреса DNS (или другого DNS, такого как OpenDNS). Это не только скажет мне, является ли проблема DNS или провайдером, но и позволит мне обойти прерывание.

Если в этот момент все идет хорошо, я знаю, что соединение в целом исправно; это все еще может потерпеть неудачу для некоторых сайтов. Все, что мне нужно сейчас, это чтобы isup.me был активен :-), затем проверял

http://www.isup.me/www.google.com
http://www.isup.me/mail.google.com

или такой сайт, как Down Detector, будет информировать меня о погоде в Интернете.

На самом деле, на моем домашнем сервере есть кеш Squid, а страница ошибок содержит последние данные, успешно извлеченные из статистики сайта, поэтому я могу увидеть что-то вроде

                Google.com is not reachable

                STORM ALERT: 12 out of 14 sites are unreachable!

как это случилось в прошлую пятницу здесь, в Италии.

6

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

Я написал бы функцию, которая пингует адрес один раз, если он не переходит на другой (скажем, до трех IP-адресов), и как только вы получите пару положительных ответов, функция должна уведомить ваше приложение / скрипт о том, что Интернет доступен и Продолжить.

3

Когда я работал в организации с нестабильным подключением к Интернету, у меня был сценарий, который проверял несколько "всегда работающих" серверов на наличие подключения: сначала маршрутизатор / коммутатор LAN, затем локальный файловый сервер, затем маршрутизатор T1, затем DNS провайдера, тогда гугл. Я проверил последние два как числовые адреса и как домены, чтобы проверить проблемы DNS против пинга как такового. Если какой-либо из пингов не удавался слишком часто, я понял, где, скорее всего, будет проблема с подключением к Интернету.

В качестве числового адреса для Google я просто использовал тот, который получил ранее от nslookup - я никогда не сталкивался с делом, где он был недоступен. Я полагаю, что 8.8.8.8 будет проще.

Довольно часто, когда люди звонили, чтобы сказать, что "интернет не работает", оказывалось, что только DNS был недоступен; мы могли бы назвать эти разные вещи, но с точки зрения моих коллег, Интернет не был доступен ни в одном случае.

3

Я использую 4.2.2.1 более 10 лет До того, как появился публичный DNS сервис Googles. Кажется, это надежный DNS-кеш и ICMP-ответчик.

2

Попробуйте свой DNS-сервер, он вам все равно понадобится (и внешнее соединение вашего провайдера может быть разорвано). Это действительно зависит от того, что вы хотите. Если вам нужен доступ к конкретной услуге, проверьте ее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .