Jak sprawdzać czy działa wyjście na świat z sieci lokalnej

Witam kolegów.

Chciałbym od was uzyskać informacje w jaki sposób najlepiej sprawdzać czy działa wyjście na internet z sieci lokalnej.

Każdy z nas ma swoje ulubione sposoby typu pingowanie lub tracert adresu lub ip serwera jakiegoś portalu (np. wp.pl lub dobreprogramy.pl), ja osobiście najczęściej pinguję ip serwera DP.

Wiem też że w windows7 jest mechanizm wykrywający czy połączenie z internetem działa, podobnie w niektórych urządzeniach takich jak odtwarzacze BD z możliwością połączenia z netem mają podobną funkcję.

Chciałbym się dowiedzieć czy ktoś z was wie z jakimi serwerami łączy się windows czy wspomniane urządzenia sprawdzając czy mają połączenie z internetem.

Albo może ktoś się natknął na informację o publicznie dostępnych serwerach z którymi można się łączyć sprawdzając czy działa połączenie z siecią, mam na myśli serwery przeznaczone do takiej funkcji.

Inne sugestie w temacie również mile widziane ale zaznaczam że nie interesują mnie rozwiązania bazujące na jakimś specjalnym oprogramowaniu które trzeba specjalnie doinstalować ponieważ sposób ma być prosty jak komendy ping oraz tracert i niezależny od używanego systemu.

Nie słyszałem o serwerach dedykowanych do sprawdzania łączności z netem, ale w miarę pewny adres to 8.8.8.8 (DNS google) - wątpię żeby wymienili dobrze-znany, łatwy do zapamiętania adres na coś innego.

Jeżeli chcesaz widzieć czy windows odpytuje konkretne adresy i jakie - złap pakiety np wiresharkiem, najlepiej na gołym systemie, bez dodatkowych usług.

To by było dobre wyjście ale pracuję na linuxie (OpenSUSE) a jedyny windows jaki posiadam to XP (zachowałem na starym dysku od lapka) który nie ma tej funkcji.

Byłbym wdzięczny jakby ktoś posiadający windowsa z tą funkcją (chyba wprowadzili ją pierwszy raz w Vista ale nie jestem pewien) mógł to sprawdzić z jakim serwerem się łączy i podesłać mi info.

Stawiaj śmiało na VM tego XP o ile masz nośnik instalacyjny, od razu potem Wiresharka, zadziała na XP z pocałowaniem w … rękę.

przecież sytuacja jest prosta i po co ją komplikować jak działa ping poza siecią lokalną i tyle

Po pierwsze nie mam nośnika a jedynie stary dysk z lapka z partycją recovery (zmieniając system na linuxa kupiłem nowy dysk) a po drugie Wireshark zadziała i na XP i na linuxie ale ani XP nie ma wspomnianej funkcji wskazującej czy jest wyjście na świat z sieci lokalnej ani na moim OpenSUSE nie mam nic co by tak działało.

Pytam tu bo właśnie zamierzam sam napisać taki program dla linuxa który będzie wykonywał diagnostykę sieci ze sprawdzeniem czy jest wyjście włącznie.

Wiem że w zasadzie sprawdzenie czy ping dochodzi do jakiegokolwiek serwera wystarczy ale chciałem zebrać kilka takich pewnych adresów które mało prawdopodobne aby padły.

adresy google 8.8.8.8 i 8.8.4.4, może serwery DNS http://leksykot.top.hell.pl/tech/serwery_dns

Mechanizm to NCSI (Network Connectivity Status Indicator), który testuje DNS i połączenie z internetem. Najpierw usługa DNS rozwiązuje adres dns.msftncsi.com Jak się uda, to próbuje pobrać dokument http://www.msftncsi.com/ncsi.txt i sprawdza, czy treść to ‘Microsoft NCSI’. Jak wspomniano, najprościej też puścić ping na “porządny” IP (czyli o bardzo restrykcyjnym SLA), np. google (8.8.8.8 ) Skrypt jest dość prosty (w zależności od OS będzie wyglądać inaczej). Najlepiej uznać że internet jest ‘up’ po:

  • jeżeli Twój GW nie blokuje pingów, to pierwszy ping wykonać na domyślny GW,

  • jak jest ‘up’, to wykonać ping np. na google (odpowiedź poprawna to internet działa),

  • jak IP google nie odpowiada, to wykonać ping na inny IP internetowy - jak nie odpowiada, to na 99% internet leży.

 

Cały czas mówimy o dostępnie do internetu i to nie musi oznaczać, że DNS działa poprawnie na danym hoście, to też wypada przetestować.

Tak, zdaję sobie z tego sprawę dlatego przy sprawdzaniu połączenia chcę najpierw pingować ip jakiegoś stabilnego serwera/sewerów bo jak nie ma wyjścia na internet całkiem to już nie ma sensu odpytywać DNSy.

Poza tym w sieciach lokalnych często punkt dostępowy sam się rozgłasza jako DNS dla komputerów lokalnych co w takim przypadku gdy komputery mają go ustawionego jako serwer DNS pingowanie czy nawet odpytywanie DNSa nie jest jednoznacznym wyznacznikiem bo punkt dostepowy może działać i nawet zwracać odpowiedzi na zapytania DNS z własnego cache podczas gdy on sam jest odcięty od sieci.

Jak chcesz testować, to możesz iść dalej:

  • na wypadek można przeczyścić cache DNS (Windows: ipconfig /flushdns, czy *nix sudo /etc/init.d/nscd restart).

  • odpytać DNS zewnętrzny (np. nslookup wp.pl 8.8.8.8 )

O kontrolnym odpytywaniu zewnętrznych DNSów pomyślałem już wcześniej ale nie wpadłem na to aby dodać funkcję czyszczenia cache DNS, jeszcze to przemyślę ale wydaje się dobrym pomysłem.

To jeszcze można inaczej, wszystko zależy jak sprawdzasz, czy skryptem, czy aplikacją,

Można użyć wgeta do odpytania adresu http://checkip.dyndns.

Jeśli zwróci dane, to masz też info o zew IP, Jak będzie błąd, to znaczy że nie działa net, albo nie działa strona ;).

Dzięki, sprawdzanie zewnętrznego IP też miałem w planie zrobić ale jeszcze nie szukałem który serwer da mi taką prostą odpowiedź.

Jeszcze lepiej jakby odpowiedź była czystym tekstem i zawierała jedynie zewnętrzne IP.

Update:

Wszystko co mi potrzebne do sprawdzania zewnętrznego IP włącznie ze skryptami oraz adresem serwera zwracającego samo IP czystym tekstem znalazłem tu: http://networksecuritytoolkit.org/nst/tools/check_ip.html

Jeśli działasz w windowsie, to pomocny może być powershell:

$webclient = New-Object System.Net.WebClient
$url = "http://checkip.dyndns.com/"

$result = $webclient.DownloadString($url)
[xml]$xml = $result
$xml.DocumentElement.body.Replace("Current IP Address: ", "")

To tak na szybko. Jeśli robisz coś w bashu, to niestety nie pomogę.