Sprawdzanie IP

Kiedyś popełniłem wpis jak sprawdzić IP. Minęło trochę czasu i sposobów na sprawdzenie adresu IP komputera znalazło się nieco więcej. Niektóre przydatne, inne zabawne. Tak naprawdę są to sposoby na sprawdzanie z jakim adresem IP wychodzimy do internetu.

Zabawny sposób na sprawdzenie IP – pomoże nam kozioł (trzeba kliknąć kozła).

Polski sposób na sprawdzenie adresu IP – pomoże nam Wirtualna Polska podająca twojeip.

Łatwy do zapamiętania sposób na sprawdzenie adresu. A nawet trzy sposoby. Pod warunkiem, że jesteśmy anglojęzyczni… whatismyip.com, whatismyipaddress.com oraz ipaddress.my.

Sposób sprawdzenia zewnętrznego IP w skrypcie? ipconfig.sh lub ipinfo.io/ip.

Do skryptów przyda się także api.ipify.org, szczególnie, że umie JSON.

I to by było na tyle. Kiedyś, wiele lat temu, gdy powstawał szkic tego wpisu, działały sposoby na sprawdzanie adresu IP przez zapytanie DNS. Albo mniej lub bardziej zabawne strony, które podają adres IP w wersji audio. Coraz mniej tego zostało. Co więcej, nawet zapytania w wyszukiwarkach zwracają średnio adekwatne wyniki. Samych serwisów jest coraz mniej i coraz częściej są obwieszone reklamami jak choinki. No cóż, chyba sprawdzanie IP przestaje być potrzebne…

IPv6, where are you?

Przypadkiem wpadłem na pomysł sprawdzenia statystyk dotyczących programu certyfikacji IPv6 prowadzonego przez Hurricane Electric. Okazało się, że od ostatniego sprawdzenia minęły prawie równo trzy lata. Dla przypomnienia, tamtego wpisu:

Szczerze mówiąc, myślałem, że Sage jest więcej, szczególnie, że sporo spotkałem na IRCu. Tymczasem na PLNOG dowiedziałem się, że jest raptem 87 osób w Polsce i ok. 4600 na całym świecie.

A po trzech latach? 10600 sages na świecie, 224 w Polsce. Szału nie ma, delikatnie mówiąc, biorąc pod uwagę okoliczności. Firmy radzą sobie bez IPv6, np. niektórzy ISP w Polsce zaczęli po cichu ładować klientów za NAT. Praktyka, co do której mam mieszane uczucia – z jednej strony typowy klient indywidualny niby nie potrzebuje publicznego IP, z drugiej strony pewne rzeczy działają lepiej z publicznym IP, więc powinien mieć możliwość uzyskania go, jeśli ma takie życzenie.

Oczywiście, pytanie na ile można traktować program certyfikacji HE za miarodajny. Jakiś miernik zainteresowania tematem to jest. Zresztą, postanowiłem sprawdzić „do drugiej strony”, czyli ile stron z najpopularniejszych w Polsce wg rankingu Alexa dostępnych jest po IPv6. Popularne w Polsce nie oznacza stron polskich, ale mniejsza z tym. Z pierwszej setki najpopularniejszych adres IPv6 posiada (zakładam, że jak adres jest, to serwis na nim działa) 14 sztuk, konkretnie są to, wg popularności:

  • Google.pl
  • Facebook.com
  • Google.com
  • Youtube.com
  • Wikipedia.org
  • Blogspot.com
  • O2.pl
  • Pudelek.pl
  • Kwejk.pl
  • Home.pl
  • Bezuzyteczna.pl
  • Xhamster.com
  • Gratka.pl
  • Naszemiasto.pl

Ale portale takie jak allegro.pl, onet.pl, wp.pl, gazeta.pl czy interia.pl są dostępne tylko po IPv4.

Happy eyeballs wg Microsoft, czyli implementacja IPv6 w Windows 8.

Nietypowo nie będzie o Linuksie, a o Windows, który bardzo rzadko pojawia się na tym blogu.  Konkretnie o Windows 8 i IPv6.

Przy okazji wykładu na PLNOG na temat happy eyeballs[1] dowiedziałem się, jak to robią w Windows 8. Otóż Windows 8 określa, czy ma dostęp do sieci IPv6 poprzez pobranie pliku. Z serwera Microsoft[2]. A następnie cache’uje wynik na… bagatela 30 dni. Wystarczy, że w momencie sprawdzania sieć IPv6 albo serwer Microsoftu nie będą dostępne i żegnamy się z IPv6. Na miesiąc. Poza tym, to, że udało się połączyć z serwerem Microsoft nie oznacza, że istnieją trasy do wszystkich innych hostów IPv6. Więc rozwiązanie „takie sobie” (taki ładny eufemizm, zamiast sporej ilości przekleństw w kierunku twórców pseudostandardów w Microsoft).

W trakcie prezentacji przyszedł mi do głowy dirty hack (rozmowa po prezentacji sugeruje, że jak najbardziej powinien działać), który spowoduje, że system Windows będzie zawsze myślał, że ma dostęp do sieci IPv6. Do pliku hosts dopisujemy linię, która powoduje, że ipv6.msftncsi.com jest rozwiązywany na adres IPv4. Czyli plik jest pobierany z serwera IPv4, czyli system zawsze będzie próbował korzystać z IPv6. Tak, popsuje to mechanizm happy eyeballs (ale i tak był zepsuty). Może się przydać np. testerom, albo zwyczajnym fan(atyk)om IPv6.

Przy okazji, w prezentacji pojawia się Your task – check ipv6.msftncsi.com availability, które po sprawdzeniu pachnie mi lekkim FUDem. Przy sprawdzeniu co pięć minut dwóch rzeczy: pingowania po domenie i możliwości pobrania pliku, w ciągu 48h[3] nie zdarzył mi się ani jeden błąd. A dodatkowo sprawdzam przez tunel od HE, czyli potencjalny element, który może zawieść. Być może wyglądało to kiedyś gorzej i się poprawiło. To, że coś jest potencjalnie OKDR nie oznacza, że jest takie w praktyce. Bo wydaje się działać. Zresztą wystarczy zrobić farmę serwerów z adresem anycast i będzie to działać. Warto też sprawdzić:

host ipv6.msftncsi.com
ipv6.msftncsi.com is an alias for ipv6.msftncsi.com.edgesuite.net.
ipv6.msftncsi.com.edgesuite.net is an alias for a978.i6g1.akamai.net.
a978.i6g1.akamai.net has IPv6 address 2001:2030:0:f::d59b:9892
a978.i6g1.akamai.net has IPv6 address 2001:2030:0:f::d59b:9888

Czyli nie tyle serwery Microsoft, co Akamai (pozdrowienia dla f.). Nie jedno, ale 2 IP. Prawie na pewno rozproszone geograficznie i z wykorzystaniem anycastu. Nie zmienia to faktu, że dostępność tych IP nie oznacza dostępności po IPv6 każdego innego hosta („dziury” w routingu).

Źródła:

1. Prezentacja Krzysztofa Mazepy z EURONOG I PLNOG 2012 pt. IPv4 vs IPv6 IPv4 vs. – Happy Eyeballs.
2. Windows 8 moves to IPv6 Internet.

[1] Jest tylko po angielsku, więc w telegraficznym skrócie dla niespikających: w momencie połączenia host próbuje się łączyć po IPv6 i IPv4, jeśli ma łączność o zbliżonym opóźnieniu po obu protokołach, to preferuje IPv6. Zaleta jest taka, że w przypadku braku dostępności IPv6 nie czeka kilku(nastu/dziesięciu) sekund na timeout – użytkownik dostaje praktycznie bez opóźnienia content i oczka się cieszą.

[2] Konkretnie http://ipv6.msftncsi.com/ncsi.txt Zawartość jest stała i jest to po prostu Microsoft NCSI Jak widać wyżej, serwer jest Akamai.

[3] Tak, wiem, bardzo mała próbka, będzie aktualizowane wyniki z dłuższego okresu poniżej.

PS Kiedyś opisywałem, jak sprawdzić IP komputera pod różnymi systemami. Dodałem informację o sprawdzaniu łączności po IPv6.

UPDATE: Miała być statystyka z dłuższego okresu, to będzie. Minęło 16 dni. W tym czasie, przy sprawdzeniach co 5 minut, zanotowałem 75 braków odpowiedzi na ping i 26 błędów w pobraniu pliku przez WWW. Ale! Co minutę sprawdzam też, czy drugi koniec tunelu się pinguje po IPv6. Po wyeliminowaniu równoczesnego braku odpowiedzi z końca tunelu i błędów do hosta MS, zostało 49 błędów pingowania i 0 (zero) błędów pobrania pliku przez WWW. Czyli raczej błędy tunelu, niż rozwiązania MS. Jakby się ktoś zastanawiał, jak to możliwe, że plik się pobrał, przy braku odpowiedzi na ping do hosta – zapewne kwestia dłuższego timeoutu.