Qiyaas martigeliye Linux ah oo joojiya VPN isla markaana konteenar ku socodsiiya shabakad macvlan. LAN waa 192.168.60.0/24, konteenarku waxa uu hayaa 192.168.60.210, macmiiliinta VPN-na waxay ka yimaadaan 10.95.0.0/24. Macmiilku wuu gaadhaa adeegga, jawaabtu waligeed soo noqon mayso, oo qaanuun kasta oo dab-damis ah oo martigeliyaha ku yaal wuu u muuqdaa mid sax ah. Laba xaddidaad oo kala duwan ayaa soo saara calaamaddaas, mid ka mid ah hagaajintuna tan kale meesheeda ayay ku reebtaa.

Laba xaddidaad, hal calaamad

Xaddidaadda koowaad waa go'doon: darawalka macvlan ee Docker uma oggolaado konteenarka inuu la hadlo martigeliyaha u gaar ah isagoo maraya interface-ka waalidka. Socodka u dhexeeya stack-ga martigeliyaha iyo konteenarka ma leh waddo, si kastaba ha ahaatee loo qoro waddooyinka martigeliyaha.

Xaddidaadda labaad waa waddada soo noqodka. Gateway-ga caadiga ah ee konteenarku badanaa waa router-ka LAN, sidaas darteed jawaabta loo diray macmiil VPN waxay ka baxdaa router-kaas. Haddii router-ku uusan lahayn waddo ku soo noqota barkada VPN, jawaabta meel dhexe ayaa lagu tuuraa.

Labada ciladood ayaa macmiilka ka muuqda isku mid: codsi soo gaadha iyo jawaab marnaba soo gaadhin. Waxay u baahan yihiin hagaajinno kala duwan, qaanuunka masquerade ee ballaadhanna wuu qarin karaa midka weli jaban. Taasi waa sababta imtixaanka koowaad uu yahay duubista dhinaca konteenarka ee aan ahayn isbeddel kale oo dab-damis ah. Haddii codsigu waligiis halkaas ka soo muuqan, xaddidaadda go'doonka ayaa shaqaynaysa.

Dhis shim-ka dhinaca martigeliyaha, si cidhiidhi ah

Interface macvlan labaad oo martigeliyaha dul yaal, oo ku xidhan isla waalidka qaabka buundada, waxa uu stack-ga martigeliyaha siinayaa aqoonsigiisa gaar ah qaybtaas LAN. U kaydi ciwaan ka baxsan barkada DHCP iyo ka baxsan baaxadda konteenarka, oo konteenarka oo keliya ku mar shim-ka.

ip link add macvlan-vpn link eth0 type macvlan mode bridge
ip address add 192.168.60.250/32 dev macvlan-vpn
ip link set macvlan-vpn up
ip route add 192.168.60.210/32 dev macvlan-vpn src 192.168.60.250

Amarka koowaad waxa uu abuuraa interface-ka qaabka buundada, taas oo ah caadiga la diiwaan geliyey ee darawalkaan iyo qaabka aad rabto socodka martigeliyaha iyo konteenarka. Tan labaad waxay bixisaa /32 si ciwaanku uusan ula kulmin horudhaca LAN, tan afraadna waxay shim-ka ku diraa ciwaanka konteenarka oo keliya.

Ha u weeciyo LAN-ka oo dhan interface-ka cusub. Waddada caadiga ah ee xidhan waxay ahaanaysaa sidii ay ahayd, waddada martigeliyahuna si ula kac ah ayay cidhiidhi u tahay si hal konteenar u helo waddo iyada oo qaybta kale ee gobolku aanay beddelin dhaqankeeda. Waddo caadi ah oo shim-ka tilmaamaysa waxay noqon lahayd naqshad kale oo leh cawaaqib kale. Ku hay mid gaar ah oo baaxadda waxyeelladu way yaraataa.

Amarradan waxay beddelaan habaynta shabakadda martigeliye shaqaynaya. Qalab ama goob la maamulo, isticmaal habka habaynta la taageeray ee goobtaas, maxaa yeelay isbeddel is-dhexgal ah oo ku yimaada root-shell ayaa laga yaabaa inuusan ka badbaadin cusboonaysiinta.

Go'aan ka gaar sida ilka loo ilaaliyo

Marka shim-ku meeshiisa joogo, konteenarku wuu gaadhi karaa martigeliyaha, su'aashuna waxay noqotaa ciwaanka il ee jawaabtu qaaddo. Ilaalinta ilka VPN ee asalka ah waa qaabka nadiifka ah: konteenarku waxa uu arkaa ciwaanka dhabta ah ee macmiilka, diiwaannada adeegga iyo qaanuunnada gelitaankuna way isticmaali karaan.

Taasi si ay u shaqayso, habaynta shabakadda konteenarku waa inay waddadan u dirto socodka 10.95.0.0/24 xagga 192.168.60.250 oo ah gateway-kiisa. Taasi waa habayn waddo ama gateway la taageeray oo ku dhex jirta habaynta konteenarka laftiisa, ma aha khiyaano dhinaca martigeliyaha. Ka xaqiiji gudaha konteenarka halkii aad ka fikiri lahayd in habayntu dhaqan gashay. Gateway caadi ah oo weli tilmaamaya router-ka LAN waxa uu jawaabaha sii wadi doonaa inuu ku tuuro godkaas.

Haddii naqshadda la ansixiyey ay beddelkeeda qariso ilaha VPN, ku xaddid tarjumaadda si cidhiidhi ah: barkada VPN ee dhabta ah, shim-ka oo ah interface-ka baxa, iyo konteenarka iyo adeegga gaar ah.

iptables -t nat -A POSTROUTING -s 10.95.0.0/24 -o macvlan-vpn -j SNAT --to-source 192.168.60.250

Ku habee shim-ka interface-ka baxa, ma aha tunnel-ka. Qaanuunka u magacaabaya tunnel-ka interface-ka baxa ma qabanayo baakad u socota konteenarka, taasina waa khaladka ay badanaa ku jirto habaynta noocan ah. Ku hay qaanuunka sida cidhiidhi ah sida jumladda kore oo dib u eeg marka barkadu isbeddesho.

Ka xaqiiji macmiilka, ma aha martigeliyaha

Codsi ka yimaada martigeliyaha laftiisa, oo ku xidhan ciwaanka shim-ka, waxa uu caddeeyaa in shim-ku gaadhi karo konteenarka. Ma caddeeyo in konteenarku ku celin karo socodka il la ilaaliyey 10.95.0.x, maxaa yeelay ciwaanka ilka imtixaankaas waa kan shim-ka laftiisa.

curl -sS --interface 192.168.60.250 -o /dev/null -w '%{http_code}\n' http://192.168.60.210:8080/health
sudo tcpdump -ni macvlan-vpn host 192.168.60.210

Amarka koowaad waxa uu imtixaamaa qaybta martigeliyaha ilaa konteenarka, tan labaadna waxay muujinaysaa waxa dhab ahaan shim-ka mara inta macmiil VPN dhab ah uu codsiga sameynayo. Fiiri ciwaanka ilka waddada soo gelitaanka iyo haddii jawaab ku soo baxdo isla qulqulkaas.

Martigeliyaha waa in gudbinta laga hawlgeliyo, waddada gudbintuna waxay u baahan tahay ruqsad barkada VPN ilaa shim-ka oo ku taal dekedda adeegga iyo jawaabaha la aasaasay. Qaanuunka INPUT ee martigeliyaha ma ogola socodka la gudbiyo, taasina waa sababta caadiga ah ee baakadka loo tuurayo ka dib marka waddo-marinta ay u muuqato mid sax ah.

Soco barnaamijka dhabta ah oo leh aqoonsi dhab ah, ka dibna hubi in adeeg labaad, oo aan xiriir la lahayn, oo isla konteenarka ku yaal uu weli ku diido. Haddii habka keliya ee loo shaqeysiin karo uu ahaa in la furo qaanuun kasta oo gudbin ah, naqshaddu ma dhammaan. Sidoo kale xusuuso ciwaanka il ee adeeggu diiwaan geliyey, maxaa yeelay taas ayaa qaanuunnadiisa gelitaan ee u gaar ah isticmaali doona.

Maqaallo la xiriira