sshuttle tsjin in folsleine VPN: wat syn metoade eins dekt
sshuttle ferfiert allinnich wat syn trochstjoermetoade stipet: kontrolearje earst de dekking fan TCP, DNS en UDP, it nedige lokale rjocht en de help op ôfstân.
sshuttle wurdt keazen om't SSH al wurket en de kryptografy fertroud liket, en dy redenearring slacht de iennige fraach oer dy't beslút oft it past. Hokker pakketten ferlitte de masjine, hokker akkount ferfiert se oan de oare kant, en hoefolle lokaal rjocht it ark easket. Dy trije antwurden ferskille per trochstjoermetoade, sadat in opset dy't foar ien applikaasje wurket, foar de folgjende stil weiwurde kin. De útliz hjirûnder begjint by it protokol dat de applikaasje echt nedich hat.
Begjin by it protokol dat de applikaasje nedich hat
Protokolstipe yn sshuttle 2.0 hinget ôf fan 'e metoade dy't jo kieze. De Linux-metoaden NAT en nft behannelje TCP en DNS, en TPROXY foeget algemien UDP ta. Elk platfoarm en elke metoade bringt eigen grinzen mei, en macOS ûnderskept fia in hiel oare meganisme. Nota de ynstallearre ferzje, de keazen metoade en de protokollen dy't de applikaasje nedich hat foardat jo wat kieze.
In wurkjend TCP-fersyk bewiist dus hiel lyts by in UDP-applikaasje of by elk DNS-opfreage. sshuttle behannelt TCP ek as streamen ynstee fan hiele IP-pakketten te tunneljen, sadat in trochfierkonklúzje liend fan in gewoane VPN hjir net oergiet. Ferlykje it meganisme dat jo echt draaie mei de lading dy't jo echt hawwe.
| Approach | What it carries | What it needs locally |
|---|---|---|
| SSH local forward | One explicitly named TCP destination | Nothing beyond the SSH client |
| sshuttle, nft or nat method | TCP and DNS to the routed prefixes | Root or sudo for firewall rules |
| sshuttle, tproxy method | TCP, DNS and general UDP | Root or sudo, and kernel support |
| IP VPN | Routed IP traffic in a tunnel | A client with the required privileges |
Wat de klant lokaal nedich hat
De dokumintearre klantopset hat root of sudo nedich, om't it lokale ûnderskepingsregels ynstallearret ynstee fan in tunnelinterface te meitsjen. Dat iene feit feroaret it feiligensferhaal: in proses mei dat rjocht kin ferkear fan 'e hiele masjine omliede, net allinnich fan ien applikaasje. Behannelje it rjocht as diel fan it ûntwerp en net as in ynstallaasjedetail.
Befêstigje hokker regels it ark ynstallearre hat en dat se ferdwine as it ôfslút. In crashte sesje dy't ûnderskepingsregels efterlit, kin ferkear lang nei't de operator tinkt dat de ferbining fuort is yn in swart gat stjoere, en it symptoom liket op in netwurkstoring, net op in oerbleaune regel.
sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route
It earste kommando is de foarm fan in typyske oanrop, mei it foarheaksel dat jo echt nedich hawwe. It twadde lit sjen wat it ark ynstallearre hat, en it tredde befêstiget dat der gjin tunnelinterface ferskynde, wat it ferwachte resultaat foar dit ûntwerp is.
Wat de fiere kant draait
De fiere kant is in autorisearre SSH-akkoart plus in kompatibele Python-helperomjouwing. In oanmelding dy't slagget ûnder in beheinde shell jout net automatysk tastimming om dy helper te draaien, en in akkoart dat de helper draaie kin, berikt net automatysk elke doeltsjinst. Beide feiten hearre yn it tagongsferzoek en net yn 'e notysjes foar probleemoplossing.
Beskermje de ferifikaasje fan hostidentiteit en de autentikaasje fan it akkoart. In ûnbekende hostsleutel akseptearje om de earste ferbining wurkje te litten hellet de kontrôle fuort dat de fiere kant de masjine is dy't jo bedoelden, en dat jildt hjir swierder as by in trochstjoering foar ien doel.
Behein it fiere akkoart ta de tsjinsten dy't de wurkstream nedich hat, en ûnderhannele dy omfang mei dejingen dy't de host beheare. Se binne diel fan 'e fertrouwensrelaasje, en gjin ynstelling oan 'e klantkant feroaret dat.
Wêr't de fertrouwensgrins leit
It trochstjoeren fan in privee API-ferbining fia SSH jout gjin tastimming foar elke API-operaasje. De TLS fan 'e applikaasje en de oanmelding by de applikaasje jilde noch, en it ark kin in tsjinst sûnder autentikaasje net feilich meitsje. In fierdere sprong fan 'e fiere host is ek net automatysk itselde beskerme segmint as it SSH-kanaal, om't dy twadde ferbining folget wat foar belied de fiere host hat.
Skriuw de grins as ien sin: ferkear nei dizze foarheaksels giet fuort fia dit akkoart op dy host. As de sin in paragraaf útsûnderings nedich hat, docht it ûntwerp mear as syn dokumintaasje beweart en fertsjinnet it in twadde blik foardat it produksje berikt.
Bewiis it per protokol en kies dan it ark
Test elk nedich protokol mei in ûnskuldich fersyk, ynklusyf it paad fan 'e resolver en de adresfamyljes dy't de applikaasje brûkt. Nim in ferbrekking op yn 'e test, sadat it tastiene falgedrach fan 'e applikaasje in kend resultaat wurdt ynstee fan in ferrassing by in ynsidint. In sesje dy't korrekt trochstjoerde wylst er oan wie, seit neat oer wat der bart as er falt.
Foar in hantsjefol eksplisyt neamde tsjinsten is in gewoane lokale trochstjoering makliker te besitjen en makliker te auditearjen. Foar applikaasjefersyk dat by syn metoade past, biedt sshuttle in legitime middenwei. As de eask brede IP-ferbining is, is in VPN-ûntwerp it earlike antwurd, en de kar folget dekking en operasjonele ferantwurdlikheid ynstee fan in ranglist fan fersiferingsalgoritmen.