Wenyeji watatu wa Linux, muundo mmoja: kitovu cha OpenVPN kinachofikika hadharani, kompyuta ya mkononi ya mtumiaji na mashine ya kutoka nyuma ya kipanga njia cha kawaida cha nyumbani ambacho hakipitishi chochote kwenda ndani. Njia ya kutoka hupiga simu kitovu yenyewe. Kisha trafiki ya mtandao ya mtumiaji inaingia kwenye handaki kwenye kompyuta na kutoka kupitia kiungo cha juu cha njia ya kutoka yenyewe. Kila kitu cha kushangaza katika mpangilio huu kinatokana na undani mmoja: njia ya kutoka ilianzisha muunganisho, kwa hiyo njia ya kuingia ipo tayari na hakuna upelekaji wa mlango unaohitajika kuiumba.

Kinachofuata kinafuatilia njia ya pakiti badala ya mpangilio wa usanidi, kwa sababu usanidi una maana tu unapojua ni sehemu gani inamiliki uamuzi gani. Kila tabaka linamiliki uamuzi mmoja hasa, na makosa hukusanyika pale ambapo tabaka mbili huchukuliwa kama moja.

Vikao viwili vya usafirishaji, njia moja ya ndani

Kila mwenyeji hushikilia muunganisho wake wa nje kwa kitovu, na hakuna mmoja wa muunganisho huo unaojua kuhusu mwingine. Trafiki ya mtumiaji kuelekea mtandao ni mtiririko wa ndani tofauti ambao kwa bahati hubebwa ndani ya handaki la mtumiaji kisha hutolewa tena kutoka handaki la njia ya kutoka. Kitovu kinapaswa kupitisha mtiririko huo wa ndani, na njia ya kutoka inapaswa kuupeleka mbele.

outer: consumer --TLS--> hub
outer: exit     --TLS--> hub
inner: consumer --tun--> hub --internal--> exit --tun--> uplink

Kwa kuwa muunganisho wote wa nje unaenda nje kutoka upande wa mteja, kipanga njia cha njia ya kutoka hakioni SYN ya kuingia kamwe na hakihitaji kamwe kanuni ya NAT ya lengo. Kinapaswa tu kuendeleza usafirishaji ulioanzishwa ukiwa hai, jambo ambalo tayari hufanya kwa muunganisho wowote wa muda mrefu. Hakuna kitu kwenye mtandao wa umma kinachohitaji kufikia njia ya kutoka kwanza, ndiyo sababu anwani inayobadilika kwenye kiungo hicho cha juu si tatizo. Kipanga njia bado kinapaswa kuruhusu kikao cha kutoka, lakini hiyo ni ruhusa ile ile ambayo kivinjari tayari kinatumia.

Kile iroute inasakinisha kweli ndani ya seva

Kitovu ni kifaa pekee kinachoamua ni mwenzake gani anamiliki lengo gani, na kinafanya uamuzi huo katika jedwali lake la uelekezaji la nafasi ya mtumiaji, si la kerneli. Ingizo la client-config-dir la njia ya kutoka linaloitwa exit-node linaweza kudai kiambishi awali chaguo-msingi hapo:

# /etc/openvpn/server/ccd/exit-node
iroute 0.0.0.0 0.0.0.0

Mstari huo unaiambia mchakato wa seva "pakiti za ndani zilizo na lengo lolote ni za mteja huyu". Hauongezi njia chaguo-msingi kwenye mfumo wa uendeshaji wa kitovu na haufanyi kitovu kuwa lango la mtandao. Rejea ya OpenVPN 2.6 inashikilia uelekezaji wa ndani maalum kwa mteja na uelekezaji wa kerneli kama mifumo tofauti, na utengano huo ndio sababu muundo huu unafanya kazi bila kugusa njia chaguo-msingi ya kitovu.

Mtumiaji anahitaji maagizo ya kioo, yaliyowasilishwa kama push, ili trafiki yake iingie kwenye handaki badala ya kutoka kupitia lango la ndani. Kwa topolojia ya subneti, bwawa ni njia iliyounganishwa kwenye kifaa cha tun cha njia ya kutoka, kwa hiyo mwelekeo wa kurudi hauhitaji push ya ziada; kile njia ya kutoka haipaswi kupokea ni uelekezaji upya ulio chini, ambao ungerudisha trafiki yake ya kiungo cha juu kwenye handaki inayojaribu kutumia. Itume kwa mtumiaji pekee na usome njia zilizotumika kwenye mteja badala ya kuamini kuwa faili ya CCD ilichaguliwa.

# /etc/openvpn/server/ccd/consumer-01
push "redirect-gateway def1"

Upelekaji mbele unafanywa na kerneli ya njia ya kutoka

Ndani ya njia ya kutoka, pakiti kutoka kwa mtumiaji inafika kwenye kiolesura cha tun ikiwa imeelekezwa kwa mwenyeji fulani wa mtandao. Kerneli inatazama jedwali lake la uelekezaji, inapata kiungo cha juu halisi kama ulinganifu bora kisha inatumia sera mbili huru: je, pakiti hii inaweza kupelekwa mbele kabisa, na je, inaweza kutoka kupitia kiolesura hicho na anwani hiyo ya chanzo. Upelekaji mbele ni sysctl, na katika usambazaji mwingi huzimwa kwa chaguo-msingi.

Kwa hiyo njia ya kutoka inahitaji upelekaji mbele wa IPv4 uliowashwa daima, kanuni inayokubali vyanzo vya handaki la mtumiaji kuelekea kiungo cha juu, na njia ya jibu kurudi kupitia tun. Kuwasha upelekaji mbele kwa mwenyeji mzima kunabadilisha pia tabia ya kitu kingine chochote kinachopitishwa kupitia kwake, ndiyo sababu kanuni inapaswa kutaja vyanzo na violesura badala ya kukubali kila kitu.

Njia ya kurudi inanunuliwa na tafsiri ya chanzo

Mwenyeji wa mtandao hana njia kuelekea anwani ya 10.90.0.x, kwa hiyo majibu yangetupwa kabla hayajafikia njia ya kutoka. Kuandika upya chanzo wakati pakiti inaondoka kwenye kiungo cha juu kunatatua hilo, na ufuatiliaji wa muunganisho hugeuza uandishi upya wakati wa kurudi.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o enp1s0 -j MASQUERADE
ip -4 route get 10.90.0.9   # run on the exit: must point at the tun

Kanuni iliyo juu ni mahali pa kuanzia kwa kiolesura kimoja cha kiungo cha juu, si sera ya firewall. Punguza chanzo kwa mgawo ulioidhinisha kweli, na weka sera yako ya kuingia ya njia ya kutoka kando, ili ufichaji wa trafiki ya handaki usifichue huduma za ndani kwa utulivu. Kwenye mwenyeji mwenye anwani ya kiungo cha juu inayobadilika, ufichaji pia hukuokoa kuifuatilia anwani kwa mkono.

Mahali kitovu kinaweza kutekeleza na mahali hakiwezi

Kwa client-to-client na njia ya jadi ya data ya nafasi ya mtumiaji, kitovu hukabidhi pakiti za ndani kati ya wenzake ndani ya mchakato wa seva. Hazipiti kamwe mnyororo wa FORWARD wa kerneli ya kitovu, kwa hiyo kanuni ya kerneli hapo haiwezi kuzuia upitishaji kati ya wenzake, hata ikiwa imeandikwa kwa uangalifu kiasi gani. Utekelezaji lazima uishi katika sera ya seva yenyewe: nani anaruhusiwa kuunganisha, faili gani ya CCD anapata, na kama umiliki chaguo-msingi wa njia ya kutoka unatolewa kabisa.

Ndiyo sababu iroute chaguo-msingi ni uamuzi mpana wa uaminifu. Njia ya kutoka lazima ikubali kihalali trafiki ya kurudi kutoka anwani za mtandao holela, na lazima iwe mashine unayodhibiti, unayoboresha na unayofuatilia. Kutoa umiliki huo huo kwa mwenzake ambaye usingempa kipanga njia ndilo kosa ambalo muundo huu unakaribisha.

Uanachama ndio udhibiti halisi. Mteja yeyote anayeweza kusanidi njia zake mwenyewe anaweza kujaribu kutumia njia ya kutoka, kwa hiyo kupunguza nani anaruhusiwa kuunganisha, au wenzake gani njia ya kutoka itawahudumia, ni sehemu ya muundo na si wazo la baadaye.

Kushindwa kwa usalama wakati njia ya kutoka inatoweka

Zima njia ya kutoka na umiliki wa ndani wa chaguo-msingi unatoweka pamoja na kikao chake. Kinachopaswa kutotokea ni kitovu kuwa kimya kimya njia ya kutoka mbadala: hakuna njia chaguo-msingi kutoka bwawa la VPN kuelekea kiungo cha juu cha kitovu, na hakuna kanuni pana ya ufichaji kwenye kitovu ambayo ingepeleka mbele kwa furaha trafiki hiyo hiyo. Jaribu kushindwa huko kwa makusudi, kisha jaribu urejeshaji kwa mtiririko mpya na si kwa ukurasa uliokuwa umefunguliwa tayari.

# on the consumer, with the exit up and then down
ip -4 route get 1.1.1.1
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com

Ikiwa trafiki ya mtumiaji bado inafikia mtandao baada ya njia ya kutoka kuondoka, kitu kingine kinaibeba na mpaka uliokusudia haupo. Shughulikia DNS na IPv6 pia kama maamuzi tofauti: njia ya IPv4 pamoja na ufichaji haisemi chochote kuhusu trafiki ya AAAA, na kitatuzi kinachosukumwa na kitovu kitajibu kutoka pale ambapo swali linatoka kweli.

Makala zinazohusiana