Jak testować IPv6 przez VPN z własnym zasobem
Nie potrzebujesz publicznego sprawdzianu IPv6, aby dowieść, że jedna ścieżka działa. Użyj zasobu, który kontrolujesz, zapisz oba końce i podaj, czego test nie objął.
Publiczna strona sprawdzania IP odpowiada na jedno pytanie i zwykle nie na to, które zadałeś. Podaje adres wyjściowy, który zaobserwowała strona; nie mówi, czy trasa IPv6 przez tunel działa, czy host przedłożył IPv6 czy się wycofał, ani czy wykluczona aplikacja poszła inną drogą. Autoryzowany zasób, który kontrolujesz, odpowiada poprawnie na węższe pytanie, ponieważ widzisz oba końce. Poniższa instrukcja dotyczy uzyskania obronnego wniosku, a nie zielonego wyniku.
Krok 1: powiedz, którą trasę IPv6 testujesz
Powiedz to jednym zdaniem. Żądanie do własnego adresu IPv6 serwera tunelu testuje tunel; żądanie do hosta za wyjściem testuje wyjście IPv6 wyjścia; żądanie do prywatnego adresu IPv6 testuje trasę wewnętrzną.
To trzy różne twierdzenia i jedno udane żądanie nie może ich wszystkich potwierdzić. Wybierz to, które ma znaczenie dla decyzji przed tobą, i zapisz je, zanim cokolwiek uruchomisz. Jeśli obawą jest, czy IPv6 nie wycieka wokół tunelu, pytanie dotyczy wyboru trasy przez hosta, a nie osiągalności wyjścia. Jeśli obawą jest, czy druga strona dotrze do usługi wewnętrznej, wyjście jest nieistotne.
Krok 2: potwierdź, że host wybiera tę trasę
ip -6 route get 2001:db8:1::10 wypisuje trasę, adres źródłowy i interfejs, którego użyłoby jądro, i od tego faktu zależy reszta testu.
Istnienie interfejsu to nie to samo co jego wybór. Hosty z dwoma stosami mają tabelę priorytetów, a /etc/gai.conf w Linuksie może zmienić, która rodzina wygrywa dla nazwy rozwiązującej się na obie.
Krok 3: użyj legalnego celu i legalnej nazwy
Jeśli testujesz HTTPS, użyj nazwy hosta, dla której wystawiono certyfikat, i pozostaw weryfikację włączoną; przejście na dosłowny adres, aby test przeszedł, wyłącza dokładnie tę kontrolę, która dowodzi, że dotarłeś do zamierzonego hosta. Kontrolowana przez ciebie usługa diagnostyczna, odpowiadająca pod znaną nazwą z ważnym certyfikatem, jest najczystszym celem. Daje też linię dziennika po stronie serwera do porównania, czego sprawdzian zewnętrzny nigdy nie da.
Uruchom żądanie w formie, która pokazuje użyty adres: curl -6 -sS -o /dev/null -w '%{remote_ip} %{http_code}\n' https://test6.example.net/. Opcja -6 wymusza rodzinę, i tak oddzielasz IPv6 nie działa od IPv6 nie został preferowany.
Do czystego testu osiągalności, gdzie ICMPv6 jest dozwolony, wystarczy ping -6 -c 3 2001:db8:1::10. Dowodzi ścieżki i niczego ponad nią.
Krok 4: skoreluj oba końce
Gdy masz dostęp do obu końców, uruchom tcpdump -ni any ip6 and host 2001:db8:1::10 na kliencie i odpowiednik na zasobie, ze znacznikami czasu, i potwierdź, że ten sam przepływ pojawia się po obu stronach. To właśnie zmienia prawdopodobny wynik w dowód: sam widok klienta nie odróżni odpowiedzi od zasobu od odpowiedzi od czegoś pomiędzy. Trzymaj przechwytywanie wąsko na jednym celu, aby wyjście pozostało czytelne i niczyja niepowiązana sesja nie trafiła do pliku.
Powtórz test po ponownym połączeniu, jeśli obawą jest, czy polityka przetrwa restart. Stan trasy i zapory zastosowany raz przy połączeniu może różnić się od stanu stosowanego ponownie, a różnica ujawnia się dopiero przy drugim połączeniu.
Przetestuj osobno przypadek awarii, jeśli go potrzebujesz. Tunel, który blokuje IPv6, gdy padnie, i ten, który je przepuszcza, to różne konstrukcje, i tylko jedną z nich można potwierdzić udanym żądaniem.
Krok 5: zapisz, czego test nie dowiódł
Piąty krok to zapisanie, czego test nie dowiódł, i właśnie ta część bywa pomijana. Udany test prywatnego punktu końcowego nie dowodzi publicznego wyjścia IPv6, nie dowodzi zachowania DNS i nie obejmuje aplikacji, które wykluczyłeś z tunelu. Każde z nich wymaga własnego celu i własnej obserwacji. Notatka, że IPv6 działa po jednym żądaniu do jednego hosta, nie jest ustaleniem; to domysł ze znacznikiem czasu.
Zapis wart zachowania jest krótki: cel, nazwa, adres źródłowy wybrany przez hosta, zaobserwowany adres zdalny i czas. RFC 7359 omawia, jak sprawdzić, czy odpowiednia trasa IPv6 jest naprawdę użyteczna, i to jest standard, do którego ta instrukcja zbliża się prostszymi narzędziami. Jeśli wniosek potrzebuje publicznego sprawdzianu, aby był prawdziwy, test nie był wystarczająco konkretny.