Conas feidhmchlár amháin a ródú trí VPN gan an meaisín iomlán
Ní thairgeann aon deasc neamhbhainistithe lasc VPN in aghaidh an phróisis. Roghnaigh an tsraith a roghnaíonn an trácht: soicéad ceangailte, riail UID, próifíl balla dóiteáin nó léim SOCKS.
Ceanglaíonn an cliant VPN, oibríonn an brabhsálaí, agus téann an t-aon ordú a bhfuil cúram ort faoi i ndáiríre amach trí do cheangal baile fós. Nó tarlaíonn a mhalairt: gabhann an tollán an bealach réamhshocraithe agus imíonn an freastalaí comhad áitiúil ón deasc. Tháinig mé air seo le gníomhaire tógála a bhí le teacht ar scáthán déantán inmheánach agus an chuid eile den óstach fós ar LAN na hoifige, agus níor thairg an cliant ach dhá rogha: an trácht ar fad nó faic. Tá an iarraidh mar an gcéanna sa dá threo, an clár seo agus ní an meaisín iomlán, agus níl seicbhosca ag formhór na gcliant chuige sin, mar nárbh eol do thábla na mbealaí riamh cad is clár ann.
Cén fáth nach bhfeiceann tábla na mbealaí do chlár
Nuair a sheolann próiseas paicéad, lorgaíonn an chruach an seoladh cinn scríbe i dtábla na mbealaí. Ní thagann ainm an inrite ná an phort isteach sa lorg sin. Teipeann ainmneacha fearainn ar an gcúis chéanna: iompraíonn tollán trácht chuig seoladh, agus faoin am a réitítear ainm ina sheoladh, is é an ródú an t-aon luamhán atá fágtha ag an eithne. Sin é an fáth a gciallaíonn „VPN don suíomh seo amháin“ seachfhreastalaí sa deireadh, agus a gciallaíonn „VPN don chlár seo amháin“ ceann de bheagán meicníochtaí.
| Mechanism | What selects | Covers | On tunnel drop |
|---|---|---|---|
| Socket bind | source address | a client you control | connections fail |
| UID rule (Linux) | owning user | every process of one account | connections fail |
| Firewall profile (Windows) | adapter profile | one program | fails closed |
| Network namespace | namespace membership | everything started inside | connections fail |
| SOCKS hop | app proxy setting | one app or one browser profile | connections fail |
Ní bealach in aghaidh an phróisis aon cheann díobh seo. Aistríonn gach ceann an cinneadh chuig sraith a fheiceann an clár, an t-úsáideoir nó cumraíocht an fheidhmchláir féin.
Is bealach fós é ceann scríbe amháin, ní riail cláir. Ar macOS is é an t-oideas is coitianta an tic a bhaint de „Seol an trácht ar fad thar VPN“ agus bealach óstaigh a chur leis: sudo route add -host internal-tuner.example -interface ppp0, a bhaintear arís le sudo route delete -host internal-tuner.example -interface ppp0. Léigh ainm an chomhéadain ó ifconfig ar dtús, mar níl in ppp0 ach sampla. Ní oibríonn saorghnéithe i mbealach óstaigh, mar sin teastaíonn iontráil amháin in aghaidh an ainm ó sheirbhís a labhraíonn le roinnt ainmneacha, agus clúdaíonn an riail gach próiseas ar an meaisín, ní an ceann a bhí i do cheann.
Ceangail an soicéad le seoladh an tolláin
Nuair a bhíonn an cliant faoi do smacht, is é an ceangal an roghnóir is saoire. Téann soicéad atá ceangailte le seoladh áitiúil an tolláin amach tríd an gcomhéadan sin fad a bhíonn bealach chuig an gceann scríbe ann, agus coimeádann gach rud eile ar an meaisín a ghnáthbhealach. Is é an mhínghléas go roghnaíonn an ceangal an seoladh foinse agus go roghnaíonn tábla na mbealaí an t-eascair fós. Ní aistríonn ceangal leis féin trácht nach bhfuil bealach aige isteach sa tollán, agus sin é an earráid atá taobh thiar den chuid is mó de na tuairiscí „cheangail mé é agus téann sé amach an taobh mícheart fós“.
import socket
s = socket.socket()
s.bind(("10.8.0.2", 0))
s.connect(("build.internal.example", 443))Nochtann uirlisí ardleibhéil an smaoineamh céanna: curl --interface 10.8.0.2, CURLOPT_INTERFACE i PHP agus an argóint source_address i gcliant HTTP Python. Caithfidh an seoladh a bheith ag an tollán, agus teipeann clóscríobhán anseo mar ghnáth-earráid cheangail, ní mar ghearán ródaithe. Is pribhléid Linux é ceangal le hainm gléis seachas le seoladh agus ní aistrítear chuig Windows ná macOS é, agus sin é an fáth a dtéann scripteanna iniompartha an seoladh ar aghaidh.
Linux: déan an t-úinéir a mheaitseáil, ní ainm an chláir
Is féidir leis an eithne úinéir soicéid a mheaitseáil, mar sin tagann cuntas tiomnaithe chun bheith ina roghnóir. Cuir an tollán ina thábla bealaí féin agus seol trácht an chuntais sin amháin ann:
ip rule add uidrange 1001-1001 lookup 100
ip route add default dev tun0 table 100Ní oibríonn sé seo ach amháin mura bhfuil an tollán ina bhealach réamhshocraithe cheana. Tosaigh an cliant le --route-nopull, nó déan an atreorú brúite a scagadh le --pull-filter ignore "redirect-gateway" ar OpenVPN 2.4 agus níos déanaí, agus cuir iontráil an tábla leis ansin tú féin. Seachas sin bíonn an dá réamhshocrú ann agus buaíonn an ceann a bhfuil an t-íos-tosaíocht aige. Is é an leagan d’aon ghnó de sin an bealach réamhshocraithe a dhíriú ar gheata an tolláin, nó é a dhéanamh ó script dícheangail: coimeádann sé an trácht amach ón idirlíon nuair a thiteann an tollán, ach is lasc mhúchta é sin, ní roghnóir, agus fanann sé go dtí go mbaineann duine éigin é.
Is é an leagan is láidre spás ainmneacha líonra. Cruthaigh é, rith an cliant istigh ann, agus tosaigh an feidhmchlár le ip netns exec. Ní fheiceann aon rud lasmuigh den spás ainmneacha comhéadan an tolláin, mar sin ní féidir leis an bhfeidhmchlár titim ar ais ar bhealach an óstaigh de thimpiste. Tá an costas fíor: teastaíonn péire veth ón spás ainmneacha chun an líonra fisiceach a bhaint amach agus a chomhad réitithe féin, mar ní roinneann spás ainmneacha an fheistithe socruithe réitithe an óstaigh.
Míníonn dhá mhodh teipe an chuid is mó de na sceitheanna. Tarlaíonn réiteach ainmneacha sa réititheoir óstaigh fós, mar sin téann an cheist amach lasmuigh den tollán fiú nuair a théann an ceangal TCP isteach. Agus teastaíonn a ip -6 rule féin ó IPv6, mar ní chlúdaíonn riail v4 é.
Windows agus macOS: cuir teorainn leis an mballa dóiteáin nó tabhair seachfhreastalaí
Níl roghnóir bealaigh in aghaidh an fheidhmchláir ag Windows ach an oiread, ach is féidir a chuid rialacha balla dóiteáin a theorannú do phróifíl, agus is féidir oiriúnaitheoir VPN a aicmiú mar „poiblí“ agus LAN an tí fós „príobháideach“. Cruthaigh rialacha blocála amach don chlár ar na próifílí „príobháideach“ agus „fearann“, fág „poiblí“ oscailte, agus ní féidir leis an bhfeidhmchlár an líonra a bhaint amach ach tríd an tollán. Socraigh catagóir líonra an cheangail ar dtús, agus dearbhaigh ansin gur mheaitseáil an riail i bpainéal faireacháin an bhalla dóiteáin. Blocáil atá ann, ní bealach: teipeann sé dúnta nuair a thiteann an tollán, agus ní féidir leis feidhmchlár a stopadh a dhéanann neamhshuim den bhalla dóiteáin.
Leanann macOS an loighic chéanna le huirlisí eile. Is é éisteoir SOCKS a shroichtear thar SSH an rogha is lú cur isteach, mar cruthaíonn ssh -D 1080 user@host port áitiúil amháin agus ní ghlacann ach feidhmchláir atá cumraithe lena úsáid an bealach sin. Is féidir le riail pf clár a bhlocáil de réir úsáideora nó grúpa, ach ní féidir léi an tollán a roghnú don chlár sin amháin fós. Ní féidir le Tunnelblick scagadh de réir fearainn ar chor ar bith, mar oibríonn bealaí le seoltaí; iompaíonn úsáideoirí OpenConnect chuig vpn-slice nuair a bhrúnn an freastalaí liosta réimíre atá ró-leathan.
Clúdaíonn dhá sheachbhealach an rud a chailleann uirlisí an ardáin. Is iad síntí brabhsálaí a athraíonn seachfhreastalaí de réir fearainn an freagra praiticiúil ar „an suíomh seo amháin“, mar gníomhaíonn siad ag sraith an fheidhmchláir áit a bhfuil ainmneacha fós ann; clúdaíonn siad brabhsálaí amháin agus faic eile. Is é an réiteach amhlánta an cliant ón díoltóir a rith i meaisín fíorúil ionas gurbh é an t-aíonna a shealbhaíonn athrú an bhealaigh agus an t-óstach ag coinneáil a bhealaigh, ar chostas dhá chruach líonra le cothabháil.
Léim SOCKS d’uirlisí gan rogha ceangail
Is féidir formhór na bhfeidhmchlár a dhíriú ar sheachfhreastalaí HTTP nó SOCKS fiú nuair nach bhfuil a fhios acu faoi chomhéadain. Soláthraíonn cliant SSH ceann gan aon athrú ar thaobh an fhreastalaí:
ssh -N -D 127.0.0.1:9999 [email protected]Téann gach rud atá cumraithe chun an phort sin a úsáid amach ag an mbastaon agus coimeádann an chuid eile den deasc a ghnáthcheangal. Déanann cóip áitiúil de 3proxy atá ceangailte le seoladh an tolláin an rud céanna d’aon phort amháin gan SSH, agus clúdaíonn stunnel port amháin atá fillte i TLS. Tá na teorainneacha praiticiúil: ní iompraíonn seachfhreastalaí ach prótacail a bhfuil a fhios acu conas é a úsáid, teastaíonn comhcheangal UDP SOCKS5 ó UDP nach gcuireann socrú „SOCKS5“ a lán cliant ar siúl, agus caithfidh an seachfhreastalaí DNS a réiteach (socks5h i curl), nó sceitheann an t-ainm chuig an réititheoir áitiúil.
Coinnigh an t-éisteoir ar loopback mura bhfuil gá ag meaisín eile leis.
Fíoraigh an bealach le gabháil, ní le teachtaireacht stádais
Déanann fuinneoga stádais an fheidhmchláir cur síos ar an socrú, ní ar an bpaicéad. Gabh ar an dá chomhéadan agus cuir i gcomparáid:
tcpdump -i any -n port 443
ss -tnp | grep 443Má thagann an ceangal chun solais ar an gcomhéadan fisiceach gan iontráil mheaitseála ar an tollán, níl an roghnóir i bhfeidhm, cibé a thuairiscíonn an cliant. Seiceáil IPv6 agus an réititheoir ar leithligh, agus seiceáil an bhfuil an dara bealach ann mar phróiseas cúnta nó seachfhreastalaí córais a fuarthas le hoidhreacht.
Ansin roghnaigh an teorainn a fhreagraíonn don riachtanas: is leor seachfhreastalaí do shuíomh amháin, is leor riail UID do chuntas amháin, is leor próifíl balla dóiteáin nuair a chaithfidh an ceangal teip go dúnta, agus is é spás ainmneacha an t-aon rogha a cheiltíonn an tollán ó gach rud lasmuigh de.