Programos nukreipimas į SOCKS prievadą veikia naršyklėje ir nepavyksta žaidime, o priežastis yra ne konfigūracija. SOCKS5 apibrėžia kelias komandas, o įgyvendinimas gali palaikyti tik kai kurias jų; Tor sąsaja priima srauto ryšius ir vardų sprendimą, o ne savavališką datagramų perdavimą. Klientas, kuris siunčia UDP ir tikisi, kad tarpinė programa jį persiųs, prašo komandos, kurios serveris neįgyvendina. Toliau pateiktas vadovas tai patikrina per kelias minutes ir tada pasirenka transportą, kuris tikrai gali veikti.

Patikrinkite, ką programa tikrai siunčia

Pradėkite nuo transporto, o ne protokolo pavadinimo. Balso klientas gali prisijungti per HTTPS ir tada perduoti mediją per UDP; žaidimas gali autentifikuotis per TCP ir žaisti per UDP; failų perdavimas gali naudoti TCP valdymui ir UDP aptikimui. Pirmieji du elgsenos atvejai atrodo vienodai, kol prisijungimas pavyksta, o skambutis vis tiek nepavyksta, todėl „prisijungė“ nėra įrodymas, kad veikia visa programa. Kai kurie klientai patys grįžta iš UDP į TCP, todėl iš dalies veikianti sesija atrodo kaip nestabilus tinklas, o ne užblokuotas transportas.

Užsirašykite paskirties prievadą ir transportą tai daliai, kuri nepavyksta. Ta viena eilutė nusprendžia, ar tarpinė programa apskritai gali padėti.

Ką priims Tor SOCKS sąsaja

Tor įgyvendina komandą SOCKS5 CONNECT srauto ryšiams ir plėtinio komandas vardams spręsti, todėl naršyklė per ją veikia be pakeitimų. UDP ASSOCIATE, komanda, kuri leistų klientui perduoti datagramas tarpinei programai persiųsti, nėra tai, ką Tor siūlo. Plėtinių dokumentacija yra projekto SOCKS plėtinių specifikacijoje ir yra trumpa. Datagramų komandos nebuvimas yra sąmoningas: savavališko UDP persiuntimas suteiktų tinklui persiuntėjo vaidmenį, kuriam jis niekada nebuvo skirtas.

Tai taip pat atsakymas dėl WireGuard, kuris pagal projektą yra UDP ir neturi TCP atsarginio kelio. Nėra palaikomo kelio, kuris nukreiptų WireGuard į SOCKS prievadą, o viskas, kas teigia priešingai, yra apvalkalas su sava pasitikėjimo ir priežiūros istorija, o ne kurio nors iš dviejų įrankių funkcija.

OpenVPN yra dalinė išimtis, nes jį galima sukonfigūruoti tuneliuoti per TCP ir jis supranta SOCKS tarpinės programos parinktį. Tam vis tiek reikia serverio, sukonfigūruoto TCP, ir sąmoningo sprendimo dėl našumo bei pirštų atspaudo pasekmių, todėl tai dizaino pasirinkimas, o ne suderinamumo pataisa.

Atlikite patikrą iš eilės

Pirmiausia patvirtinkite, kad tarpinė programa veikia srautams, kad vėlesnė nesėkmė nebūtų priskirta nepasiekiamam prievadui. Tada patvirtinkite pačios programos srautą ir stebėkite, kuriuos lizdus ji iš tikrųjų atidaro.

curl --socks5-hostname 127.0.0.1:9050 -sS https://check.torproject.org/api/ip
ss -tupn | grep 9050
ss -aun | grep -E ':(3478|5060|27015)\b'

Sėkminga pirmoji komanda ir antroje eilutėje nustatytas srautas rodo, kad tarpinės programos kelias veikia taip, kaip suprojektuota. Trečioji komanda ieško vietinių datagramų lizdų, priklausančių programai; jei klientas vieną atidaro ir siunčia tiesiogiai į nuotolinį adresą, jis niekada neklausė tarpinės programos ir jokia tarpinės programos nuostata to nepakeis. Jei tai nepavyksta jau pirmame žingsnyje, sustokite ir pataisykite tarpinės programos kelią prieš tirdami programą, nes du gedimai vienu metu duoda ataskaitą, su kuria niekas negali nieko daryti.

Grįžkite atgal ir pasirinkite tinkamą įrankį

Pašalinkite visas tarpinės programos aplinkos kintamuosius arba kiekvienai programai skirtas tarpinės programos nuostatas, kurios nukreipė UDP klientą į SOCKS prievadą; palikus jas, vėlesni testai tampa dviprasmiški. Atkurkite ankstesnę konfigūraciją iš kopijos, paleiskite programą iš naujo ir patvirtinkite, kad pradinė elgsena grįžta, kad palyginimas būtų švarus. Nepatikrintas grąžinimas yra tik viltis, kad būsena pasikeitė.

Transportui, kuris turi likti UDP, VPN paprastai tinka geriau: jis perduoda programos paketus nereikalaudamas, kad programa kalbėtų tarpinės programos protokolu, už visiškai kitokias anonimiškumo savybes. Naudokite kiekvieną įrankį tam, ką jis dokumentuoja, o bet kokį tiltą tarp jų traktuokite kaip atskirą sistemą, kuriai reikia savo apžvalgos. Galutinėje ataskaitoje užrašykite, kuris sluoksnis perduoda kurį transportą, kad kitas žmogus su kita programa iš naujo neatrastų tos pačios ribos.

Susiję straipsniai