Samband berre med IPv6, teneste på IPv4: lat ein SOCKS-proxy byggje bru
Ein SOCKS-proxy tek imot éi tilkopling og opnar ei anna, slik at ein klient med berre IPv6 når ei IPv4-teneste. Det er vidaresending, ikkje innebygd IPv4-tilgang.
Du treng ikkje ei adresse i adressefamilien til målet for å nå det, så lenge noko på vegen er viljug til å vidaresende. Programmet koplar til proxyen, og proxyen opnar ei andre tilkopling til målet. Det er to sockets med uavhengige adressefamiliar, og ingenting i nokon av protokollane krev at dei stemmer overeins. Det er vidaresending på programnivå, ikkje ein innebygd IPv4-veg, og skilnaden avgjer kva som vil verke og kva som ikkje vil. Å blande dei to er korleis ein berbar datamaskin endar opp med å bli skildra som å ha IPv4-tilkopling når alt han har er ein proxy.
To sockets, to adressefamiliar
Ein SOCKS5-førespurnad namngjev målet i ein av tre former: ei bokstavleg v4-adresse, ei bokstavleg v6-adresse eller eit namn som proxyen skal slå opp. Førespurnaden skildrar kvar proxyen skal kopla til, ikkje korleis klient-til-proxy-tilkoplinga ser ut.
Les desse adressetypane som tre uavhengige val i éi melding. Ein proxy som er tilgjengeleg over IPv6, kan opne ein socket mot eit IPv4-mål når han har fungerande IPv4-utgang og policyen tillèt førespurnaden. SOCKS5-spesifikasjonen definerer dei utan noka tilvising til transporten til klienten i det heile.
Eit kontrollert SSH-døme
Ta ein SSH-vert du har løyve til å bruke, som svarar på IPv6 og sjølv kan nå ei HTTPS-teneste som berre finst på v4. Den dynamiske vidaresendinga til OpenSSH set ein lokal SOCKS-lyttar på maskinen din medan innloggingsøkta går over v6.
ssh -6 -N -D 127.0.0.1:1081 -o ExitOnForwardFailure=yes [email protected]Verten og kontoen ovanfor er døme, og loopback-bindinga held lyttaren på denne datamaskinen. Ikkje erstatt ho med ei jokerteiknbinding så eit kontor kan dele ein uautentisert proxy. ExitOnForwardFailure=yes finst for at ei mislukka vidaresending avsluttar økta i staden for å la ein stille kommando køyre i bakgrunnen.
Med økta køyrande ser førespurnaden slik ut:
curl --proxy socks5h://127.0.0.1:1081 https://v4-only.example/Loopback-tilkoplinga er ikkje ein IPv4-internettveg. Det som forlèt maskinen din, er innloggingsøkta over v6, og det er den andre sida som opnar målsocketen. Forma socks5h delegerer òg namneoppslag til den sida, noko som tel når klienten ikkje har sin eigen IPv4-oppslagsveg.
Kva målet faktisk ser
Målet ser utgangsadressa til vidaresendaren. Ingen adresse som høyrer til den berbare datamaskinen din viser seg der. Ei kjelde-tillatingsliste på den tenesta må namngje vidaresendaren. Loggane vil òg tilskrive trafikken til vidaresendaren. Skriv det i endringsjournalen før revisjonen, fordi ei tillatingsliste bygd rundt klientadresser feilar ved den første førespurnaden.
Vidaresendaren er òg staden der dei to halvdelane av samtalen er synlege, noko som er ein nyttig eigenskap under diagnostisering og ei byrde om vidaresendaren blir delt utan policy.
Dette er ikkje DNS64 eller NAT64
DNS64 svarar med syntetiserte postar som erstattar v4-mål, og NAT64 skriv om pakkar langs ein konfigurert veg. Ingen av dei skildrar det som skjer her, der éin transportsamtale sluttar og ein annan byrjar, og inga syntetisert adresse forklarar resultatet. Ein vellukka førespurnad seier derfor ingenting om kva omsetjingstenester leverandøren din driv, og proxyen kan køyre vanleg NAT på sin eigen utgang.
Båe mekanismane kan finnast i same nettverk, så skildre den du faktisk verifiserte i staden for den som høyrest nærast ut.
Kjenn omfanget før du lovar det
Den dynamiske vidaresendinga til OpenSSH ber TCP-tilkoplingar, ikkje vilkårleg IP-trafikk, så UDP, ICMP og ein kvar protokoll som ignorerer proxyen treng eit anna støtta design. Hald på SSH-vertnøkkelverifisering, vidaresendingsavgrensingane til tenaren og HTTPS-sertifikatvalidering, fordi proxyen er ein ekstra betrudd deltakar og ikkje ein grunn til å svekkje identitetskontrollar. Viss målet er å bere den ytre transporten til ein VPN gjennom proxyen, må du verifisere at båe endar støttar den transporten i staden for å gå ut frå at ein kvar SOCKS-lyttar kan vidaresende han.
Ingenting av dette gjer klienten dual-stack, og ingenting av det trengst. Det får eitt program til å nå éi teneste gjennom éin vidaresendar, noko som er ein mindre påstand og langt lettare å verifisere.