Aika bytes ɗin da aka ɓoye ba tare da riƙe takardar shaidar ba shine abin da relay ɗin TLS passthrough ke yi, kuma wannan tsarin yana da daɗi kuma ɗan rikicewa a lokaci ɗaya. Domin ba a buɗe ɓoyen komai, babu wani abu mai siffar HTTP da za a tace, don haka block ɗin location na yau da kullum da dokokinsa na shiga ba su da amfani a nan. Shawarar da NGINX ke da ita ta shafi haɗin kanta: wane peer na cibiyar sadarwa ya ƙwanƙwasa, da kuma ko ya kamata a aika wannan peer gaba ɗaya.

Shawara ta kasance a stream, ba HTTP ba

A cikin mahallin stream NGINX yana aiki da zamuna TCP. Yana ganin adireshin peer na haɗin kuma zai iya amfani da dokokin allow da deny da aka tsara a kansa kafin kowane byte ya isa backend. Wannan cikakkiyar shawara ce ta shiga kuma ba ta buƙatar maɓalli na sirri, takardar shaidar ko nazarin HTTP.

MechanismWhat it decidesWhere it lives
stream allow/denyWhether this TCP peer is relayedstream server block
ssl_preread mapWhich backend a named connection goes tostream, with the preread module
HTTP location ruleWhether an HTTP request is servedhttp server block

Waɗannan layuka uku ba sa maye gurbin juna. Kwafin umarnin shiga HTTP cikin kowane fayil da ya ambaci tashar 443 ba ya canza komai, domin uwar garken stream ba ya karanta mahallin http.

Karɓi haɗin kafin aika shi

Ka ɗauka akwai shigarwa data kasance da modul ɗin stream da stream-access, abokan cinikin VPN suna riƙe adiresoshin tushe a cikin 10.90.0.0/24, kuma akwai backend a 192.168.50.20:443 wanda ke ba da asalin HTTPS da ake so.

stream {
    server {
        listen 443;

        allow 10.90.0.0/24;
        deny all;

        proxy_pass 192.168.50.20:443;
    }
}

Karanta wannan a matsayin guntun sabon listener, ba a matsayin maye gurbin kai tsaye na tsarin da ke aiki ba. Fara duba listener da include ɗin da ke akwai, domin listener na biyu a tashar da aka riga aka ɗaure yana gazawa a reload, ba a lokacin buƙatar ba.

Lura da abin da ya ɓace: babu listen ... ssl, babu umarnin takardar shaidar. NGINX yana aika ruwan da aka ɓoye, kuma backend yana kammala TLS kuma yana gabatar da takardar shaidar da abokin ciniki ke tantancewa. Abokin ciniki da ya kasa allowlist ana ƙin zamansa na TCP, ba shafin HTTP 403 ba, kuma duk kayan aiki da ke tsammanin lambar matsayi zai ba da labarin wani abu marar amfani.

Abin da allowlist ke rufewa da abin da ba ya rufewa

Idan relay ɗin ya riga ya zaɓi backend ɗin bisa sunan uwar garke, ssl_preread da map na iya ci gaba da wannan aikin, matuƙar modul ɗin yana nan. Abokin ciniki ne ke ba da sunan har yanzu, kuma babu abin da ke tabbatar da cewa abokin ciniki ya shiga VPN.

Dokar misali tana rufe duk listener ɗin stream. Wannan ya sa ta rashin dacewa ga wurin shiga ɗaya da ke ba da cakuda shafukan jama’a da na VPN kawai, inda za a buƙaci keɓancewa ga kowace suna; listener ɗin dabam yawanci sun fi manufar da ta dogara da suna da babu wanda zai iya karantawa.

Ya kamata a ambaci wasu guraben biyu. Daidaiton prefix ba ya faɗin ko wace interface fakiti ya zo, kuma dokar HTTP a wani wuri ba za ta iya iyakance wannan listener ba. Duka biyun dalilai ne na riƙe manufar shiga a matakin host a cikin hoto maimakon ɗaukar layin allow ɗaya a matsayin dukan iyaka. Rubuta iyakar a matsayin sarrafawa biyu da dole su yarda, domin duk wani canji a ɗayan ya sami bita.

Wane adireshi NGINX ke gani da gaske?

Mai daidaita lodi, wani proxy ko source NAT na iya sanya mai shiga tsakani a gaban NGINX, don haka peer ɗin da ake gani ba shine adireshin ciki na abokin cinikin VPN ba. Bincika hanyar gaske kafin ka zaɓi prefix, domin allowlist da aka rubuta don adireshin da bai dace ba ko dai yana ba da izini ga duk wanda ke bayan mai fassara ko kuma babu kowa.

Ka’idar PROXY da sarrafa ainihin IP amsoshi ne na halal, kuma dole ne a saita su kawai ga masu aikawa masu dacewa waɗanda aka amince da su a fili. Dukan hanyoyin biyu suna gaskata abin da mai aikawa ya faɗa, kuma shine dalilin da ya sa jerin masu aikawa dole su kasance gajere. Amincewa da kanun labarin asali daga kowane abokin cinikin intanet ba ya sake mai da bayanan tushe abin dogaro; yana mai da ƙin da ya dace ya zama karɓa na jabu.

Gwada duka sakamakon biyu kafin reload

Tabbatar da tsarin, yi reload, sannan gwada sau biyu: sabon zama da aka ba da izini wanda dole ya yi aiki, da wanda aka ƙi wanda bai kamata ya yi aiki ba. Riƙe tantance takardar shaidar backend ta yau da kullum a gwajin da aka ba da izini, domin relay ɗin da ke haɗawa amma ba zai iya tantance backend ba ya warware matsala ɗaya kuma ya haifar da wata.

nginx -t
ss -tnp | grep ':443'

Duba hanyar backend da amsa daban. Wucewa allowlist yana tabbatar da cewa NGINX ya karɓi zaman ne kawai; ba zai iya sa backend da ba a iya isa ba ya amsa ba, kuma ba zai iya gyara hanyar dawowa da ta ɓace kafin ka fara ba.

Labarai masu alaƙa