Waxaan ka bilaabay bannaanka, sida isticmaale sameeyo: magaca waxaan ku qoray biraawsarka telefoonka oo xogta mobilka ah, waxaanan daawaday xiriirka oo laalaadayaa ilaa waqtigu dhammaado. Magacu wuu xallimay, marka DNS wuu fiicnaa. Bogga gudbinta dekedaha ee router-ka guriguna wuxuu ahaa dariiq xiran, sababtoo ah cinwaankiisa WAN wuxuu muujinayay 100.64.31.42, taasina ma aha cinwaan uu bixiye iga soo gaarsiiyo internetka. Lambarkaas wuxuu sharraxayaa cillida oo dhan: khadka wuxuu ka dambeeyaa carrier-grade NAT, marka cinwaanka dadweynaha ee dhinacayga tunnel-ka waa kan bixiyaha. Waxa soo socda waa wadada aan qaaday anigoo ka imanaya tabkii laalaadayaa ilaa adeeg jawaabaya.

Ka bilow macmiilka oo gudaha u gal

Ka hor inta aadan beddelin qaanuun kasta, caddee halka silsiladdu joogsato. Laptop-ka waxaan ku shaqeeyay dig +short files.example.net oo waxaan helay cinwaanka VPS, taas oo meesha ka saartay DNS duug ah mishiinkayga. Kadib curl -v --connect-timeout 5 files.example.net:5022 wuu waqti dhammaaday halkii la diidi lahaa. Farqigani waa muhiim: waqti dhammaadku badanaa waxay taxan tahay in baakadaha la tuurayo jidka, halka diidmadu ay taxan tahay in wax jawaabay oo yiri maya.

Tallaabada xigta ee gudaha waxay ahayd VPS lafteeda. ss -ltnp ma muujin wax dhageysanaya 5022, taas oo la filayay ka hor inta aanaan qaanuunka DNAT jirin. Isla mishiinkaas wg show (ama ip -br a show tun0 OpenVPN) wuxuu xaqiijiyay in peer-ka gurigu shaqeynayo oo uu leeyahay handshake cusub. Haddii peer-ku shaqeynayn, ma jiro qaanuun NAT caawinaya, nalka cagaaran ee bogga VPN ee router-ka guriguna waxba ma tilmaamayo.

Xaqiiji in khadka gurigu dhab ahaan ka dambeeyo CGNAT

Isbarbardhig cinwaanka router-ku soo sheego interface-ka WAN iyo waxa adeeg bannaanka ahi arko. Wax kasta oo ku jira 100.64.0.0/10, taas oo ah 100.64.x.x ilaa 100.127.x.x, waa baaxadda cinwaannada la wadaago ee RFC 6598 oo lama gaari karo internetka. Isla gunaanadkaas ayaad gaartaa marka router-ku sheegto cinwaan gaar ah oo caadi ah halka raadinta dadweynahu soo celiso wax aan xiriir la lahayn. Khadka CGNAT waxaa laga yaabaa inuu la yimaado cinwaan dadweyne oo soconaya ilaa lease-ka xiga oo keliya, sidaas darteed gudbinta dekeddu waxay u muuqataa inay shaqeyso saacad kadibna si aamusnaan ah u dhinto.

Bixiyeyaasha qaarkood waxay si dhab ah u bixiyaan cinwaan dadweyne laakiin waxay xannibaan dekedaha soo galaya 80 iyo 443 ee akoonnada guryaha. Haddii adeeggaagu web kaliya yahay oo cinwaanka WAN uu dhab ahaan dadweyne yahay, weydii taageerada ka hor inta aadan dhisin relay. Haddii kale, naqshadda hoose waxay si isku mid ah u khuseysaa deked kasta, waana mudan in la joojiyo tijaabada dhinaca router-ka: turjumaanka ku jira shabakadda bixiyaha wuxuu joojiyaa xiriirka ka hor inta uusan waligiis gaarin interface-kaaga WAN.

U jeedi magaca cinwaanka VPS

DNS ma gudbiyo taraafikada, marka diiwaanka A ee adeeggu waa inuu ka koobnaadaa cinwaanka dadweynaha ee VPS. Diiwaanka A ee u jeeda 192.168.1.20 waxaa si faa'iido leh loo xalliyaa kaliya macmiillada hore ugu jira VPN; internetka waxaa loo xalliyaa cinwaan aan cidina maarayn karin. Helitaanka maamulka VPS lafteeda waxaan hayaa magac gaar ah, si aanan marnaba u khaldin goobta ay diiwaanku tilmaamayo.

Haddii VPS iyo mishiinka gurigu labaduba bixiyaan HTTP, mid kasta sii magac u gaar ah oo u ogolow VPS inuu go'aamiyo cidda jawaabaysa. In labadooda lagu daro hal magac oo la rajeeyo in proxy-ga uu doorto backend-ka saxda ah waa si sax ah oo aad ugu qaadanayso galab dhan adigoo ku mashquulsan cillad raadinta mashiinka khaldan.

Hal deked DNAT, SSH ha ku sii ahaado 22

Xulashada tooska ah waa NAT-ka meesha loo socdo ee VPS. Daar forwarding-ka kernel-ka shaqeynaya oo ku hay qaanuunka cinwaanka tunnel-ka ee server-ka guriga, ma aha cinwaankiisa LAN:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp -d 198.51.100.10 --dport 5022 -j DNAT --to-destination 10.8.0.2

Kaga tag SSH-ga VPS lafteeda 22 oo u gudbi deked kale, tusaale ahaan 5022, mishiinka guriga. Haddii aad u gudbiso 22 mishiin damisan, waxaad waayi doontaa wadada keliya ee hagaajin karta. Isla caqligaas waxay khuseysaa proxy-ga: ka hay dekedda maamulka VPS meel ka baxsan qaanuunnada relay-ga.

Ka dhig qaanuunnada kuwo joogto ah markay shaqeeyaan. Debian ama Ubuntu, apt install iptables-persistent iyo kadib netfilter-persistent save waxay ku qoraan /etc/iptables/rules.v4. Martigeliyaha leh firewalld waxaa u dhigma gudbin deked joogto ah oo ku jirta aagga, taas oo u baahan firewall-cmd --reload ka hor inta aanay dhaqan galin. Qaanuunnada ku nool xusuusta oo keliya waxay lumi karaan dib u bilaabista dayactirka ugu horreysa ee bixiyaha, badanaa saacad xun.

Hagaaji wadada soo noqoshada, ama ka fogow baahideeda

DNAT waxay dib u qortaa meesha loo socdo oo keliya. Server-ka gurigu wuxuu arkaa xiriir ka imanaya cinwaanka asalka ah ee macmiilka, haddii wadadiisu caadiga ahi u jeeddo router-ka guriga, jawaabtu waxay ka baxdaa WAN-ka guriga halkaas oo turjumaanka bixiyaha uu ku tuuro. Isku dheelitir la'aantaas waxay ahayd cillida labaad ee aan la kulmay, kadib markii qaanuunka DNAT uu u muuqday mid si buuxda u saxan.

Laba sixid ayaa shaqeeya. Sii mishiinka guriga waddo siyaasad ah si taraafikada tunnel-ka uga soo noqoto tunnel-ka:

ip rule add from 10.8.0.2 table 100
ip route add default dev wg0 table 100

Ama u ogolow VPS inuu dib u qoro isha si jawaabtu u yeelato cinwaan uu gaari karo, oo u ogolow conntrack inuu u rogo marka uu baxayo:

iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 5022 -j SNAT --to-source 10.8.0.1

Nooca SNAT wuxuu ka qariyaa cinwaanka dhabta ah ee macmiilka server-ka guriga, sidaas darteed diiwaannada barnaamijka waxay muujinayaan 10.8.0.1 sida peer. Gudbi cinwaanka asalka ah heerka barnaamijka, ama aqbal luminta diiwaangelinta macmiil kasta, laakiin si ula kac ah u go'aanso halkii aad ka ogaan lahayd inta lagu jiro dhacdo.

Hubi wadada oo dhan bannaanka

Xaqiiji shabakad aan ahayn VPS iyo aan ahayn guriga: telefoon ku jira xogta mobilka, ama shell jaban meel kale. nc -vz files.example.net 5022 waa inuu soo sheegaa xiriir guul leh, openssl s_client -connect files.example.net:443 -servername files.example.net na waa inuu muujiyaa shahaadada magaca dadweynaha. Kadib hubi kooxda amniga ama firewall-ka daruuraha ee bixiyaha. Qaanuunka DNAT ee aan waligiis arag baakad badanaa waxaa lagu xannibaa hal lakab ka sarreeya martigeliyaha.

Ugu dambeyntii, go'aanso waxa dhaca marka tunnel-ku dhaco. Qaanuunka DNAT wuxuu sii wadaa aqbalaadda xiriirada oo si aamusnaan ah ugu shubaa tunnel dhintay, taas oo u eg sidii adeeg jabay. Hubinta caafimaadka ee VPS ee diidda dekedda inta peer-ku shaqeynayo waxay qaadataa dhowr sadar oo badbaadisaa saacad qiyaas ah. Kadib jooji tafatirka qaanuunnada oo fiiri maalin ka hor intaadan aaminin.

Maqaallo la xiriira