Jaki jest zewnętrzny niezawodny adres IP do pingowania, aby sprawdzić, czy internet jest dostępny? [Zamknięte]

53

Czy jest dostępny jakiś wspólny serwer, który zawsze mogę skonfigurować do pingowania w trybie automatycznym w celu wykrycia Internetu? Jak Google czy coś? Może być 8.8.8.8?

Moja szczególna sytuacja polega na tym, że korzystam z podwójnego routera WAN. Każda sieć WAN jest podłączona do jednego z dostawców usług internetowych. Kiedy moje pieniądze kończą się na jednym z dostawców usług internetowych, nie blokuje kanału. Zamiast tego przekierowuje do strony z ostrzeżeniem. Router uważa więc, że Internet jest włączony, ponieważ przesyłane są dane. Inną opcją dla tego routera jest polecenie ping dla jakiegoś adresu, aby sprawdzić, czy Internet jest włączony.

Zastanawiam się, czy jeśli wyślę ping 8.8.8.8, czy nie zostanę zbanowany przez Google za niewłaściwe użycie? Podejrzewam, że Google może mieć pewne kwoty. Jeśli zbyt często będę pingować to serwery nazw, czasami otrzymam odrzucenia DNS.

Przyciemnia
źródło
1
Sugeruję przetestowanie tego, czego naprawdę chcesz. Co masz na myśli mówiąc „Internet jest dostępny”?
David Schwartz
1
@DavidSchwartz ma na myśli, że internet nie jest niedostępny. Jeśli chcesz konkretnego testu, wiele będzie oparte na sieci WAN, więc nie ma opcji testowania, ponieważ jest on poza ścianą, ale ISP wiedziałby.
barlop
5
ping stackexchange.com;)
6
@barlop To trochę zabawne, ale nie pomocne. Co oznacza „Internet nie jest niedostępny”? Jeśli nie mogę wejść na stronę Google, czy „Internet jest niedostępny”? Jeśli DNS działa, ale nie działają żadne strony internetowe, czy Internet jest dostępny? Pierwszym krokiem do odpowiedzi na pytanie jest zrozumienie pytania.
David Schwartz
4
@DavidSchwartz Nie żartowałem, a biorąc pod uwagę, że mówi on o pingowaniu adresu IP powiązanego z Google jako testem, a nie pingowaniu domeny takiej jak www.google.com jako test, to oczywiście oznacza, że ​​w przypadku, gdy DNS jest niedostępny, ale wszystko inne jest dostępne, a następnie uważa, że ​​Internet jest dostępny. nie jest niedostępny. Jeśli chcesz znaleźć znak zapytania, byłoby b, czy słaby router jest „niedostępny dla Internetu”, ale oczywiście gdybyś mógł dostarczyć test 4 tego scenariusza vs Dostępna sieć WAN, lub jej szczegóły, byłoby bardziej pomocne niż testowanie tylko jednego konkretnego przypadku lub, co gorsza, żadnych przypadków.
barlop

Odpowiedzi:

56

Spróbuj pingować 8.8.8.8, to główny serwer DNS Google. Zawsze sprawdzam ping, aby zweryfikować połączenie i nigdy go nie znalazłem. Alternatywnie możesz wypróbować wersję 8.8.4.4, którą jest pomocniczy DNS Google.

AlexC
źródło
3
pingakceptuje również domeny TLD. Dlatego ping google.compowinieneś załatwić sprawę, na wypadek gdybyś nie chciał pamiętać o poczwórnej ósemce.
Johannes Pille,
38
@JohannesPille Pingowanie nazwy domeny wymaga działającego serwera DNS. Może to więc nie powieść się, jeśli żądanie DNS nie powiedzie się, co nie oznacza, że ​​twoje połączenie internetowe jest faktycznie wyłączone.
Jonathan
3
Gdyby twój autorytatywny serwer nazw nie działał, sieć w twojej strefie nie byłaby przydatna, prawda?
Johannes Pille,
6
@JohannesPille możesz zastąpić swój podstawowy DNS do 8.8.8.8 zamiast domyślnego DCHP
maniak zapadkowy
6
@JohannesPille pingnie akceptuje TLD. Nie akceptuje także nazw domen. Jest tak, że większość nazw domen to także nazwy hostów i są one przekształcane na adresy IP. Aby ludzie mogli pisać http://example.comzamiast http://www.example.com, zanim przeglądarki były tak inteligentne, www.aby dodać nazwę hosta, jeśli w ogóle nie działała. (Spróbuj, ping army.miljeśli mi nie wierzysz).
Dubu
33

Możesz zrobić to, co robi Microsoft: sprawdź to

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

zwraca „Microsoft NCSI”. (To potwierdza, że ​​możesz uzyskać prawidłowe dane ze strony, np. Nie z portalu Wi-Fi lub czegoś innego).

Możesz także sprawdzić (np. Ping), że dns.msftncsi.com

wskazuje na 131.107.255.255 (weryfikuje to, czy DNS działa).

Zobacz http://technet.microsoft.com/en-us/library/ee126135

Uwaga: Możesz także odwiedzić stronę http://www.msftconnecttest.com/redirect, aby w razie potrzeby przejść przez portal do niewoli.

Mark Sowul
źródło
1
+1. IIRC, Windows ma również interfejs API do sprawdzania poziomu połączenia internetowego za pomocą tej metody.
Navin
7
Dlaczego nie jest to bardziej entuzjastyczne? jeden z niewielu naprawdę dobrych sposobów, szczególnie w przypadku konkretnego pytania. Jeśli Twój dostawca usług internetowych przekierowuje ruch na stronę z ostrzeżeniem, sprawdzenie takiej odpowiedzi jest jedną z niewielu niezawodnych opcji!
Falco
Już nie działa
użytkownik2924019,
1
Co nie działa? Witryna nadal zwraca odpowiedni tekst, dns nadal rozpoznaje właściwy adres IP, dokumentacja nadal zwraca prawidłowe informacje
Mark Sowul
Dla ciebie nie możesz pingować 131.107.255.255- upłynął limit czasu. www.msftncsi.comprzechodzi a1961.g2.akamai.net, co rozwiązuje się 23.59.182.83w momencie pisania - nie wiem, czy to statyczne IP, czy nie. Chociaż jest to dobra odpowiedź na pytanie „co to jest dobry adres URL, aby niezawodnie przetestować moje połączenie internetowe” za pomocą np. CURL lub przeglądarki, nie jest to adres IP, który można sprawdzić za pomocą prostego pingpolecenia, więc nie jest to odpowiedź na to konkretne pytanie.
iono
13

Przypadek szczególny

Chcesz pingować „najbliższy” stały adres IP, który nie jest routowalny, gdy dostawca usług internetowych wejdzie w stan przeciążenia ruchu. W moim systemie mogę emulować tę sytuację, nie udając uwierzytelnienia ADSL. W takim przypadku, porównując wyniki traceroute -nw warunkach normalnych i anormalnych, widzę, że pierwszy skok do 8.8.8.8 (lub jakakolwiek zewnętrzna strona), który nie odpowiada, to 151,6.68.45, który jest częścią infrastruktury mojego dostawcy usług internetowych.

Używając tego adresu IP jako hosta „sprawdzającego przy życiu” (po powtórzeniu testu, aby upewnić się, że został naprawiony), mogę wykryć anomalię dostawcy usług internetowych bez uzyskiwania fałszywego wyniku na wypadek, gdyby ADSL było OK, ale routing dostawcy usług internetowych ma problemy .

Oczywiście mógłbym celowo użyć wersji 8.8.8.8 , rozumując, że jeśli nie mogę uzyskać dostępu do infrastruktury Google, nie dbam o przyczynę , równie dobrze mogę spróbować z routerem zapasowym.

Ogólna sprawa

„Internet jest dostępny” jest znacznie bardziej skomplikowaną rzeczą niż po prostu „Czy można uzyskać dostęp do 8.8.8.8 (lub innego adresu IP)”.

Dla szybkiego, brudnego i nie zawsze niezawodnego sprawdzania, pingowanie 8.8.8.8 jest dobre. Ale widząc, jak używasz numerycznego adresu IP zamiast nazwy domeny, już zrozumiałeś, że możesz mieć połączenie IP i nadal „nie ma Internetu” z powodu problemów z DNS.

Pełna diagnostyka musiałaby rozpocząć się blisko komputera.

  • sprawdzaj konfigurację sieci lokalnej i pobieraj bramę i serwer DNS.
  • pingować bramę. Powinien być osiągalny. Jeśli nie, występuje problem lokalny.
  • uruchom traceroute z krótkim TTL (w rzeczywistości lepszy jest traceroute TCP taki jak ten dostarczony przez hping) z pewnością zewnętrznego adresu, 8.8.8.8 jest w porządku.
  • chcesz zobaczyć, że po bramie niektóre dodatkowe węzły odpowiadają.

Na przykład w systemie Windows XP w domu mam:

 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

Teraz spróbuj pingować DNS. Powinien być osiągalny. Co więcej, uruchom proste sprawdzanie DNS. Aby uniknąć pamięci podręcznej DNS, czasami używam domeny, która odpowie na wszystkie zapytania bez względu na wszystko. Na przykład

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

podczas gdy jeśli serwer DNS jest zawodny, to samo zapytanie może zwrócić adres portalu dostępowego dla Wi-Fi

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

lub 127.0.0.1, a nawet błąd.

W przypadku awarii DNS mogę wypróbować traceroute adresu IP DNS (lub innego DNS, takiego jak OpenDNS). To nie tylko powie mi, czy problemem jest DNS, czy ISP, ale często pozwoli mi obejść przerwę.

Jeśli w tym momencie wszystko pójdzie dobrze, wiem, że połączenie jest ogólnie sprawne; wciąż może się nie powieść w przypadku niektórych witryn. Teraz muszę isup.metylko wstać :-), a potem sprawdzić

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

lub strona taka jak Down Detector informuje mnie o „pogodzie w Internecie”.

Właściwie na moim serwerze domowym jest pamięć podręczna Squid, a strona błędu zawiera ostatnie dane pomyślnie pobrane ze statystyk w dół strony, więc mogę zobaczyć coś takiego

                Google.com is not reachable

                STORM ALERT: 12 out of 14 sites are unreachable!

tak jak to się stało w ostatni piątek tutaj we Włoszech.

LSerni
źródło
Jeśli możesz pingować 8.8.8.8, po prostu przełącz na ten serwer DNS, aby problemy z ISP DNS nie miały znaczenia
Zeb McCorkle
2
Tak, ale powinieneś to zrobić dopiero po sprawdzeniu, że problemy są w rzeczywistości oparte na DNS. Istnieją inne rodzaje problemów, które mogą pozostawić nietknięty routing do wersji 8.8.8.8 (lub protokół ICMP) podczas niszczenia czegoś innego. I odwrotnie, brak pingowania 8.8.8.8 może wcale nie wskazywać na problem z routingiem lub DNS.
LSerni
6

Jak powiedzieli niektórzy, możesz pingować, powiedzmy, główny DNS Google, aby uzyskać odpowiedź, ale nie polegaj na jednym adresie. Adres (z wielu powodów) może być wyłączony przez pewien czas, podczas którego oprogramowanie zgłosi „brak łączności”, podczas gdy w rzeczywistości połączenie sieciowe może nie mieć żadnych problemów. Zawsze należy próbować komunikować się z więcej niż jednym adresem, aby wykluczyć fałszywe negatywy.

Napiszę funkcję, która wysyła ping do adresu jeden raz, jeśli to się nie powiedzie, przejdź do innego (do, powiedzmy, trzech adresów IP), a gdy otrzymasz kilka pozytywnych odpowiedzi, funkcja powinna powiadomić twoją aplikację / skrypt, że Internet jest dostępny i dalej.

Kinnectus
źródło
3

Kiedy pracowałem dla organizacji z płatnym połączeniem internetowym, miałem skrypt, który testował kilka „zawsze działających” serwerów pod kątem łączności: najpierw router / przełącznik LAN, potem lokalny serwer plików, potem router T1, potem DNS ISP, potem Google. Dwa ostatnie testowałem jako adresy numeryczne i jako domeny, aby sprawdzić problemy DNS z pingami per se. Jeśli któryś z pingów zbyt często zawodzi, mam pojęcie, gdzie najprawdopodobniej wystąpił problem z połączeniem z Internetem.

Jako adresu numerycznego dla Google użyłem właśnie tego, który wcześniej otrzymałem z nslookup - nigdy nie natknąłem się na przypadek, w którym był wyłączony. Przypuszczam, że 8.8.8.8 byłoby prostsze.

Dość często, gdy ludzie dzwonili, aby powiedzieć, że „Internet nie działa”, okazało się, że tylko DNS był wyłączony; moglibyśmy to nazwać, ale z punktu widzenia moich kolegów internet nie był dostępny w obu przypadkach.

Zeph
źródło
3

Używam 4.2.2.1 od ponad 10 lat. Wcześniej istniała publiczna usługa DNS Google. Wygląda na to, że jest to niezawodna pamięć podręczna DNS i odpowiadający na ICMP.

rsenn
źródło
3
4.2.2.2 jest łatwiejszy do
wpisania
Ten tummy.com/articles/famous-dns-server wspomina, że ​​nie jest przeznaczony do użytku publicznego.
kevinf
2

Wypróbuj swój serwer DNS, i tak będziesz go potrzebował (a połączenie zewnętrzne Twojego usługodawcy internetowego może być nieczynne). To naprawdę zależy od tego, czego chcesz. Jeśli chcesz uzyskać dostęp do konkretnej usługi, sprawdź ją.

vonbrand
źródło
Jest to ważne tylko wtedy, gdy wiesz, że serwer DNS ISP odpowiada na polecenie ping. Może i działa, ale blokuje ICMP.
Olli,
To najprostsza i najlepsza odpowiedź, IMO.
njbair