Sākotnējie galamērķi caurspīdīgā TCP–SOCKS pārsūtīšanā
Paskaidro, kāpēc caurspīdīgai TCP–SOCKS pārsūtīšanai vajadzīgs tulkotājs, kas atjauno sākotnējo galamērķi pirms sarunām ar starpniekserveri.
Ugunsmūris var mainīt, kur nonāk TCP savienojums. Taču ar šo vienu izmaiņu tas nevar iemācīt sākotnējai lietotnei runāt SOCKS.
Parasts SOCKS serveris gaida sarunas, kurās aprakstīts pieprasītais galamērķis. Lietotne, kas nezina par starpniekserveri, tā vietā nekavējoties nosūta savus protokola baitus. Novirziet šos baitus tieši uz SOCKS klausītāju, un abas puses nesaskaņos par pirmo ziņojumu.
Trūkstošā sastāvdaļa ir tulkotājs
Caurspīdīga TCP–starpniekservera sastāvdaļa atrodas starp šīm saskarnēm. Tā noskaidro galamērķi, kuru lietotne sākotnēji pieprasīja, izveido atbilstošo SOCKS vai HTTP CONNECT sesiju un pēc tam pārsūta lietotnes datus pa radušos plūsmu.
Savā Linux iptables ceļā redsocks pirmkods iegūst saglabāto galamērķi, izmantojot SO_ORIGINAL_DST. Citas operētājsistēmas un novirzīšanas metodes izmanto citus mehānismus. Tā ir novirzītāja un tīkla iestatījuma īpašība, nevis parasta SOCKS klienta funkcija.
Informācija par sākotnējo galamērķi arī izskaidro, kāpēc novirzīšanas noteikuma pārvietošana no starpniekservera resursdatora uz nesaistītu vārteju ne vienmēr ir līdzvērtīga. Uzņemošajam procesam vajag metadatus, ko prasa tā pārtveršanas režīms. Citur pārrakstīta adrese, iespējams, vairs nesniedz šo informāciju gaidītajā formā.
Saglabājiet tulkotāja tvērumu skaidru. Strādājošs novirzīts TCP savienojums nepierāda atbalstu patvaļīgam UDP, ICMP vai katram atrisinātāja ceļam. Augšupējā starpniekservera protokols un tulkotāja ieviešana joprojām nosaka atbalstītās darbības.
Ja iestatījums neizdodas tūlīt pēc savienojuma, pirms piekļuves noteikumu paplašināšanas pārbaudiet protokola robežu. Pilnīgi sasniedzams SOCKS klausītājs var noraidīt baitus, kas nekad nav bijuši SOCKS pieprasījums.