Что такое внешний надежный IP-адрес для проверки связи, чтобы проверить, доступен ли Интернет? [закрыто]


53

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

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

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


1
Я бы посоветовал вам проверить, что вы на самом деле хотите. Когда вы говорите «Интернет доступен», что вы имеете в виду?
Дэвид Шварц

1
@DavidSchwartz он имеет в виду, что интернет не недоступен. Если вам нужен конкретный тест, многое будет основано на WAN, поэтому нет возможности протестировать его, потому что он уже позади, но интернет-провайдер знает об этом.
Barlop

5
ping stackexchange.com;)

6
@ barlop Это забавно, но не полезно. Что значит "Интернет не недоступен"? Если я не могу зайти на сайт Google, есть ли "Интернет недоступен"? Если DNS работает, но нет веб-страниц, доступен ли интернет? Первый шаг к ответу на вопрос - это понимание вопроса.
Дэвид Шварц

4
@DavidSchwartz Я не шучу, и, учитывая, что он говорит о проверке IP-адреса, связанного с Google, в качестве теста, а не о проверке домена, такого как www.google.com, в качестве теста, он, очевидно, означает, что в случае, когда DNS недоступен, но все остальное доступно, затем он считает, что Интернет доступен. Не доступен. Если вы хотите найти вопросительный знак, вы можете узнать, будет ли плохой маршрутизатор «недоступен Интернет», но, очевидно, если бы вы могли предоставить тест 4, этот сценарий против Доступность WAN, или подробности в этом отношении, было бы более полезным, чем просто дать ему тест только для одного конкретного случая или хуже, без случаев.
Barlop

Ответы:


56

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


3
pingтакже принимает TLD. Следовательно, ping google.comнадо делать свое дело, если вы не хотите вспомнить четверку восьмого.
Йоханнес Пилле

38
@JohannesPille Проверка связи с доменным именем требует работающего DNS-сервера. Это может привести к сбою в случае сбоя DNS-запроса, что не означает, что ваше интернет-соединение фактически не работает.
Джонатан

3
Если бы ваш авторитетный сервер имен был бы недоступен, сеть в вашей зоне была бы не очень полезна, не так ли?
Йоханнес Пилле

6
@JohannesPille, вы можете переопределить ваш основной DNS на 8.8.8.8 вместо DCHP по умолчанию
трещотка урод

6
@JohannesPille pingне принимает TLD. Он также не принимает доменные имена. Это просто так, что большинство доменных имен также являются именами хостов и разрешаются в IP-адрес. Таким образом, люди могли печатать http://example.comвместо http://www.example.com, прежде чем браузеры стали настолько умными, чтобы присоединиться www.к имени хоста, если оно не сработало. (Постарайтесь, ping army.milесли вы мне не верите.)
Дубу

33

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

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

возвращает "Microsoft NCSI". (Это подтверждает, что вы можете получить правильные данные с сайта, например, не с портала Wi-Fi или чего-то еще).

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

указывает на 131.107.255.255 (это подтверждает, что DNS работает).

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

NB. Вы также можете посетить веб- сайт http://www.msftconnecttest.com/redirect, чтобы в случае необходимости получить доступ к встроенному порталу.


1
+1. IIRC, Windows также имеет API для проверки уровня интернет-соединения с помощью этого метода.
Навин

7
Почему это не более проголосовало? один из немногих действительно хороших способов, особенно для конкретного вопроса. Если ваш интернет-провайдер перенаправляет ваш трафик на страницу с предупреждением, проверка ответа, подобного этому, является одним из немногих надежных вариантов!
Falco

Больше не работает
user2924019

1
Что не работает? Сайт по-прежнему возвращает правильный текст, DNS все еще разрешает правильный IP, документация по-прежнему возвращает правильную информацию
Марк Соул

К вашему сведению, вы не можете пинговать 131.107.255.255- время истекло. www.msftncsi.comпроходит a1961.g2.akamai.net, что решает 23.59.182.83на момент написания - я не знаю, является ли это статический IP или нет. Хотя это хороший ответ на вопрос «что такое хороший URL для надежной проверки моего интернет-соединения», например, с помощью cURL или браузера, это не IP, который можно проверить с помощью простой pingкоманды, поэтому он не является ответом на этот конкретный вопрос.
ионосферные

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!

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


Если вы можете пропинговать 8.8.8.8, просто переключите ваш DNS-сервер, чтобы проблемы с DNS-провайдерами не имели значения
Зеб МакКоркл

2
Да, но вы должны делать это только после того, как убедитесь, что проблемы действительно основаны на DNS. Существуют и другие виды проблем, и они вполне могут оставить нетронутой маршрутизацию до 8.8.8.8 (или протокол ICMP), разрушая что-то еще. И наоборот, отказ ping 8.8.8.8 может вообще не указывать на проблему маршрутизации или DNS.
LSerni

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-ответчик.


3
4.2.2.2 проще набирать
user1886419

Это tummy.com/articles/famous-dns-server упоминает, что это не предназначено для общественного использования.
Кевинф

2

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


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

Это самый простой и лучший ответ, ИМО.
njbair
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.