Połączenie tylko IPv6, usługa IPv4: niech proxy SOCKS zbuduje most
Proxy SOCKS przyjmuje jedno połączenie i otwiera drugie, więc klient z samym IPv6 dociera do usługi IPv4. To przekazywanie, nie natywny dostęp IPv4.
Nie potrzebujesz adresu z rodziny docelowej, aby do niego dotrzeć, o ile coś na ścieżce jest gotowe przekazywać. Aplikacja łączy się z proxy, a proxy otwiera drugie połączenie do celu. To dwa gniazda z niezależnymi rodzinami adresów i nic w żadnym z protokołów nie wymaga, aby się zgadzały. To przekazywanie na poziomie aplikacji, a nie natywna ścieżka IPv4, i ta różnica decyduje, co zadziała, a co nie. Mylenie obu to powód, dla którego laptop bywa opisywany jako mający łączność IPv4, choć ma tylko proxy.
Dwa gniazda, dwie rodziny adresów
Żądanie SOCKS5 nazywa cel w jednej z trzech form: literalny adres v4, literalny adres v6 lub nazwa, którą proxy ma rozwiązać. Żądanie opisuje, gdzie proxy ma się połączyć, a nie jak wygląda połączenie klient–proxy.
Czytaj te typy adresów jako trzy niezależne wybory w jednej wiadomości. Proxy osiągalne przez IPv6 może otworzyć gniazdo celu IPv4, gdy ma działające wyjście IPv4, a jego polityka zezwala na żądanie. Specyfikacja SOCKS5 definiuje je bez żadnego odwołania do transportu klienta.
Kontrolowany przykład SSH
Weź host SSH, którego wolno ci używać, który odpowiada przez IPv6 i sam może dotrzeć do usługi HTTPS istniejącej tylko na v4. Dynamiczne przekazywanie OpenSSH umieszcza lokalny odbiornik SOCKS na twojej maszynie, podczas gdy sesja logowania biegnie przez v6.
ssh -6 -N -D 127.0.0.1:1081 -o ExitOnForwardFailure=yes [email protected]Host i konto powyżej to przykłady, a powiązanie loopback utrzymuje odbiornik na tym komputerze. Nie zastępuj go powiązaniem wieloznacznym, aby biuro mogło współdzielić nieuwierzytelnione proxy. ExitOnForwardFailure=yes istnieje po to, by nieudane przekazywanie zakończyło sesję, zamiast zostawiać w tle cicho działające polecenie.
Gdy sesja działa, żądanie wygląda tak:
curl --proxy socks5h://127.0.0.1:1081 https://v4-only.example/Połączenie loopback nie jest ścieżką internetową IPv4. To, co opuszcza twoją maszynę, to sesja logowania przez v6, a gniazdo celu otwiera druga strona. Forma socks5h przekazuje także rozwiązywanie nazw tej stronie, co ma znaczenie, gdy klient nie ma własnej ścieżki resolvera IPv4.
Co cel naprawdę widzi
Cel widzi adres wyjściowy pośrednika. Żaden adres należący do twojego laptopa tam nie występuje. Lista dozwolonych źródeł w tej usłudze musi wskazywać pośrednika. Jej logi również przypiszą ruch pośrednikowi. Zapisz to w rejestrze zmian przed audytem, ponieważ lista dozwolonych zbudowana wokół adresów klientów zawodzi przy pierwszym żądaniu.
Pośrednik jest też miejscem, w którym widoczne są dwie połowy rozmowy, co jest użyteczną właściwością podczas diagnozy i obciążeniem, jeśli pośrednik jest współdzielony bez polityki.
To nie jest DNS64 ani NAT64
DNS64 odpowiada syntetyzowanymi rekordami, które zastępują cele v4, a NAT64 przepisuje pakiety wzdłuż skonfigurowanej ścieżki. Żadne z nich nie opisuje tego, co dzieje się tutaj, gdzie jedna rozmowa transportowa się kończy, a druga zaczyna, i żaden syntetyzowany adres nie wyjaśnia wyniku. Udane żądanie nie mówi więc nic o tym, jakie usługi tłumaczenia prowadzi twój dostawca, a proxy może uruchamiać zwykły NAT na własnym wyjściu.
Oba mechanizmy mogą istnieć w tej samej sieci, więc opisz ten, który naprawdę zweryfikowałeś, a nie ten, który brzmi najbliżej.
Poznaj zakres, zanim go obiecasz
Dynamiczne przekazywanie OpenSSH przenosi połączenia TCP, a nie dowolny ruch IP, więc UDP, ICMP i każdy protokół ignorujący proxy potrzebują innego obsługiwanego projektu. Zachowaj weryfikację klucza hosta SSH, ograniczenia przekazywania serwera i walidację certyfikatu HTTPS, ponieważ proxy jest dodatkowym zaufanym uczestnikiem, a nie powodem do osłabiania kontroli tożsamości. Jeśli celem jest przeniesienie zewnętrznego transportu VPN przez proxy, sprawdź, czy oba końce obsługują ten transport, zamiast zakładać, że dowolny odbiornik SOCKS może go przekazać.
Nic z tego nie czyni klienta dwustosowym i nic z tego nie jest potrzebne. Powoduje, że jedna aplikacja dociera do jednej usługi przez jednego pośrednika, co jest mniejszym twierdzeniem i znacznie łatwiejszym do zweryfikowania.