SOCKS5 dros OpenVPN: twnnel TCP neu ddirprwyo'r apiau?
Mae dirprwy yn cludo ffrwd, nid datagram. Cymharwch dwnnel TCP y tu ôl i socks-proxy ag ailgyfeiriad redsocks, a gwelwch lle mae pob dyluniad yn methu gyntaf.
Rhwydweithiau sy'n caniatáu allanfa drwy ddirprwy yn unig yw'r lle mae proffil sy'n gweithio yn marw'n sydyn. Y cyfeiriad dirprwy yw'r newidyn lleiaf diddorol yn y methiant hwnnw. Y peth sy'n penderfynu popeth yw siâp y traffig y bydd y dirprwy yn ei gludo, oherwydd mae'r dirprwyon hyn yn anfon ffrwd beitiau ac nid yw twnnel UDP yn un. Mae hynny'n gadael dwy bensaernïaeth, ac maen nhw'n torri mewn gwahanol leoedd.
Un cyfyngiad sy'n penderfynu'r dyluniad
Mae SOCKS5 yn nodi modd cysylltiad UDP. Er hynny, mae cymorth dirprwy cleient OpenVPN wedi'i adeiladu o gwmpas ffrydiau: socks-proxy yn cael ei ddogfennu ar gyfer proffiliau TCP, ac nid oes gan ddirprwy HTTP CONNECT unrhyw lwybr datagram o gwbl. Mae un llinell o ddogfennaeth yn setlo'r bensaernïaeth cyn i chi gyffwrdd â ffeil ffurfweddu.
Felly nid y cwestiwn yw pa ddirprwy i'w ddewis. Y cwestiwn yw a ddaw'r twnnel yn ffrwd, neu a erys yn ddatagram ac yn gadael i rywbeth arall amsugno'r dirprwyo.
Opsiwn A: troi'r twnnel yn ffrwd
Mae hyn angen gweinydd â gwrandäwr TCP, a phroffil cleient sy'n enwi'r dirprwy. Mae'r ddau ddarn yn hanfodol, a'r ochr weinydd yw'r un y mae pobl yn ei hanghofio:
proto tcp-client
remote vpn.example.net 443
socks-proxy 127.0.0.1 1080Newidiwch y llinell olaf am http-proxy proxy.internal 8080 pan fo'r dirprwy'n siarad HTTP, ac ychwanegwch ffeil dystlythyrau os yw'n gofyn am un. Rhaid i'r dirprwy fod yn fodlon gwneud CONNECT i'ch porthladd VPN, a rhaid i'r gweinydd ateb ar TCP; mae gwrandäwr UDP yn unig yn anwybyddu'r ymgais. Mae dewis 443 yn symudiad ymarferol, gan fod llawer o rwydweithiau cyfyngol yn caniatáu hynny a fawr ddim arall.
Y gost yw TCP wedi'i bentyrru ar TCP. Mae un segment allanol a gollwyd yn tagu pob ffrwd fewnol sy'n rhannu'r cysylltiad hwnnw, felly daw adferiad a fyddai fel arfer yn annibynnol yn un a rennir. Mae'r gosodiad hefyd yn cymryd mwy o amser, ac mae llwybr allanol ansad yn troi'n dwnnel ansad yn hytrach nag yn un araf.
Opsiwn B: gadael y twnnel yn llonydd
Pan fo'r twnnel yn gorfod aros ar UDP, nid y twnnel yw'r lle rydych chi'n ffurfweddu unrhyw beth. Yn lle hynny, mae TCP allan o apiau yn cael ei ailgyfeirio i wrandäwr SOCKS lleol, ac nid yw'r apiau byth yn dysgu bod dirprwy yn bodoli. Ar Linux fel arfer dyna redsocks ynghyd â rheol NAT REDIRECT yn y tabl nat.
TCP yn unig, eto. Nid yw dirprwy HTTP yn unig fel privoxy yn gallu cludo protocolau mympwyol, ac nid yw'r dyluniad hwn yn ychwanegu cymorth datagram ar gyfer yr apiau chwaith.
Mae dweud wrth bob ap am y dirprwy yn uniongyrchol fel arfer yn well lle mae'r meddalwedd yn ei gefnogi. Mae'n haws i'w archwilio, ac mae'n methu yn rhywle y gallwch chi ei weld go iawn.
Lle mae pob opsiwn yn methu
Mae Opsiwn A yn methu pan nad oes gan y gweinydd wrandäwr TCP, pan fo'r dirprwy'n gwrthod y targed CONNECT, neu pan fo'r ffrwd allanol yn cael ei throtli islaw'r hyn sydd ei angen ar y twnnel. Mae'r ddau gyntaf yn gadael cofnod yng nghofnod y dirprwy; mae'r trydydd yn gadael cysylltiad sy'n sefydlu ac wedyn yn teimlo'n anghywir. Darllenwch y cofnod hwnnw cyn golygu'r proffil, oherwydd mae'n gwahanu problem caniatâd oddi wrth broblem capasiti. Mae CONNECT wedi'i gwblhau yn symud yr ymchwiliad i mewn i'r twnnel.
Mae Opsiwn B yn methu ar gyfer unrhyw beth sy'n angen datagramau, ar gyfer protocolau nad yw'r dirprwy yn eu deall, ac yn ddistaw ar westeion lle mae'r rheol ailgyfeirio yn bodoli ond mae'r llwybro yn anfon y traffig heibio iddi.
Nid yw'r naill opsiwn na'r llall yn newid y gofyniad am y ddyfais. Mae pecynnau'n dal i fod angen nod TUN neu TAP cyn i'r cnewyllyn eu llwybro, felly mae'r broses yn dal i fod angen caniatâd ar /dev/net/tun. Mae troellwr yn newid beth sy'n digwydd ar ôl i'r nod hwnnw fod ar agor, nid a oes ei angen arnoch.
Profi pa lwybr a adeiladwyd gennych
Edrychwch ar socedau yn hytrach nag ar eicon y hambwrdd. Dylai'r broses VPN ddal cysylltiad sefydledig â chyfeiriad y dirprwy, a dylai'r dirprwy fod wedi cofnodi'r targed y gofynnwyd iddo ei gyrraedd:
ss -tnp | grep openvpnYna cyrhaeddwch gyrchfan na all ond y twnnel ei gwasanaethu, ac enw na all ond datryswr y twnnel ei ateb. Mae cysylltiad dirprwy wedi'i gwblhau gyda thwnnel marw fel arfer yn golygu na chynigiodd y pen pellaf byth y cludiant a enwir yn eich proffil.
Nodwch y cludiant a'r dirprwy sy'n derbyn mewn man parhaol. Pan fydd yr un proffil yn methu ar rwydwaith arall, mae'r nodyn hwnnw'n diarddel neu'n cadarnhau'r dirprwy o fewn eiliadau.