Miundo miwili, programu moja ya HTTPS, na pakiti huchukua njia tofauti katika kila mmoja. Uelekezaji wa lango hubadilisha pakiti inapofikishwa na kuacha mengine kama yalivyo. VPN hubeba pakiti hiyo ndani ya pakiti nyingine kwanza, kwa hiyo msikilizaji wa programu huona chanzo tofauti na mzigo mkubwa mdogo zaidi. Usimbaji fiche ambao watu hujadili upo katika hali zote mbili, kwa sababu programu bado ni HTTPS; kinachotofautiana ni nani anaweza kufungua muunganisho na kile mtandao wa kati unaweza kuona. Tofauti hiyo hutatua maswali mengi ya kivitendo.

Kanuni ya DNAT huandika upya lengwa na kuishia hapo

Kwenye lango la Linux, kuchapisha huduma kunamaanisha kanuni katika mnyororo wa PREROUTING wa jedwali la nat, au kifananishi chake katika nftables. Kanuni hiyo inalingana na anwani na lango la umma, kisha huandika upya lengwa hadi anwani ya faragha ya programu. Anwani ya chanzo, lango la chanzo na mzigo hazibadiliki, na conntrack hurekodi ramani ili majibu yaandikwe upya wakati wa kutoka. Tabia hii ni mtindo wa jadi wa kutafsiri anwani ulioelezwa katika RFC 3022.

sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 443 \
  -j DNAT --to-destination 10.20.30.40:443
sudo iptables -t nat -L PREROUTING -n -v
sudo conntrack -L -p tcp --dport 443

Msikilizaji wa programu hajui kamwe kwamba muunganisho ulikuja kupitia tafsiri. Huona anwani halisi ya chanzo ya mteja, ambayo ni muhimu kwa kumbukumbu za ufikiaji na mipaka ya kasi, na hujibu kwa anwani ya faragha kwa sababu conntrack hugeuza ramani. Hakuna kitu kwenye njia hiyo kinachosimbua au kusimba upya: TLS bado inaendesha kati ya mteja na cheti cha programu yenyewe.

Kanuni pia huamua mbinu za kushindwa ambazo utazikuta baadaye. Ikiwa lango linasambaza lakini mwenyeji wa programu hana njia ya kurudi kwa mteja, majibu hutoka na chanzo kisicho sahihi na kupeana mkono kunakwama. Ikiwa kanuni ya pili inalingana kwanza, mpangilio huamua matokeo, na iptables -t nat -L -n -v huonyesha vihesabu vinavyothibitisha ni kanuni gani ilichukua pakiti.

Handaki hufunga pakiti kabla msikilizaji kuiona

VPN haichapishi programu kabisa. Mteja hujenga pakiti ya nje iliyoelekezwa kwa anwani ya umma ya lango, husimba pakiti ya ndani ndani yake, na lango husimbua na kuelekeza pakiti ya ndani hadi lengwa la faragha. Kwa WireGuard usafiri wa nje ni UDP, kwa kawaida kwenye lango la juu; kwa OpenVPN juu ya TCP 443 pakiti ya nje inaonekana kama TLS kwa kila kitu kinachochunguza njia.

Ndani ya handaki pakiti ya ndani huhifadhi anwani za faragha: anwani ya handaki ya mteja, tuseme 10.8.0.6, na programu kwenye 10.20.30.40. Kwa hiyo msikilizaji huona chanzo kutoka dimbwi la handaki, na kila mteja hushiriki lango hilo kama hatua inayofuata. Kumbukumbu za ufikiaji nyuma ya VPN mara nyingi huonyesha lango badala ya mtumiaji kwa sababu hii hasa, isipokuwa lango huhifadhi chanzo asilia.

Kufunga kunagharimu nafasi ya kichwa, na hiyo ndiyo tofauti pekee ya kiwango cha utaratibu yenye athari inayoweza kupimwa. Kichwa cha nje cha IP pamoja na UDP pamoja na kichwa cha WireGuard yenyewe hula kutoka MTU ya njia, kwa hiyo pakiti kubwa lazima zigawanywe au safu ya TCP ya ndani lazima ipunguze MSS yake. Uhamisho unaofanya kazi kwenye njia iliyoelekezwa unaweza kukwama kwenye handaki wakati kifaa cha kati kinatupa ICMP ambayo ingeonyesha MTU ndogo.

ip route get 10.20.30.40
ping -M do -s 1400 10.20.30.40
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --clamp-mss-to-pmtu

Mfiduo huamuliwa mlangoni, si kwa usimbaji fiche

Miundo yote miwili huishia kwa msikilizaji yule yule wa TLS, kwa hiyo yote miwili hurithi cheti kile kile, matoleo yale yale ya itifaki na kuingia kule kule kwa programu. Kinachobadilika ni nani anaruhusiwa kuanza kupeana mkono. Kwa uelekezaji wa umma, mwenyeji yeyote anayefikia 203.0.113.10:443 hupata kupeana mkono kwa TCP na TLS ClientHello kabla idhini ya programu yako haijazingatiwa. Kwa ufikiaji kupitia handaki pekee, msikilizaji anafikiwa tu kutoka anwani ambazo lango huelekeza ndani ya handaki, na SYN ya mgeni hufa kwenye sera ya lango.

Tofauti hiyo inahusu ufikivu, si usiri. Huduma ya HTTPS iliyoelekezwa si maandishi wazi, na VPN haiondoi hitaji la uthibitishaji wa programu: kuingia handakini hujibu ikiwa kifaa kinaweza kutuma pakiti kwenye mtandao huu, wakati programu ya faili hujibu ikiwa mtumiaji anaweza kusoma hati. Kuchanganya mambo yote mawili ni jinsi timu huishia na VPN inayotoa LAN yote na programu yenye nenosiri moja linaloshirikiwa.

Chunguza msikilizaji na sera kwa tofauti, kwa sababu yoyote kati yao inaweza kuwa pana kuliko unavyodhani:

sudo ss -ltnp 'sport = :443'
sudo nft list ruleset
openssl s_client -connect 203.0.113.10:443 -servername files.example.com </dev/null

Ikiwa ss inaonyesha msikilizaji amefungwa kwa 0.0.0.0, programu inafikiwa kutoka popote uelekezaji na sera ya firewall zinaporuhusu, na uelekezaji ni njia moja tu ya kuingia. Kufunga kwa anwani ya faragha, au kupunguza masafa ya chanzo kwenye firewall, ni uamuzi tofauti na kuchagua VPN, na ndio uamuzi unaopunguza mfiduo kwa kweli.

Pima njia, si lebo

Mtu anapodai uelekezaji ni wa haraka zaidi, ulinganisho wa haki huweka mambo mengine yote sawa: mteja yule yule, mtandao ule ule wa ufikiaji, faili ile ile, usanidi ule ule wa TLS, mwenyeji yule yule wa programu. Endesha uhamisho mara mbili kwa kila njia na uandike jumla ya muda, idadi ya kushindwa na mwitikio, si matokeo ya jaribio la kasi lisilohusiana.

curl -sS -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
  https://files.example.com/report.pdf
mtr -rwc 20 203.0.113.10
mtr -rwc 20 10.20.30.40

Nambari hizo hutenganisha kuanzishwa kwa muunganisho na muda wa uhamisho, jambo ambalo ni muhimu kwa sababu njia mbili kwa kawaida hutofautiana katika ucheleweshaji wa kwenda na kurudi na MTU, si katika gharama ya usimbaji. Kazi ya TLS hufanyika kwenye ncha katika miundo yote miwili, na handaki huongeza ufungaji, njia tofauti na labda lango lenye shughuli nyingi. Ikiwa njia ya handaki ni ndefu au lango lake lina mzigo, tofauti ni ya njia na si ya neno usimbaji fiche.

Chagua sera ya kuingia ambayo huduma inahitaji kweli, kisha amua ikiwa tofauti iliyopimwa inahalalisha kuibadilisha. Uelekezaji wa umma unafaa huduma iliyokusudiwa intaneti wazi, ikiwa na vikwazo vya chanzo, TLS iliyosasishwa na ufuatiliaji mbele yake. Ufikiaji kupitia handaki pekee unafaa chombo cha ndani ambacho watumiaji wake wameshajiandikishwa, mradi uelekezaji wa lango na ruhusa za programu zote mbili ni nyembamba kuliko LAN yote.

Kabla ya kutangaza muundo umekamilika, thibitisha mambo manne: msikilizaji amefungwa kwa anwani gani, kanuni au njia gani inaruhusu pakiti kuingia, njia ya kurudi inafanya kazi kutoka anwani halisi ya mteja, na mizigo mikubwa inavuka MTU. Kila moja ina amri hapo juu, na hakuna inayojibiwa na neno salama au chati ya bandwidth.

Makala zinazohusiana