Immaġina host Linux li jtemm VPN u fl-istess ħin iħaddem kontenitur fuq netwerk macvlan. Il-LAN huwa 192.168.60.0/24, il-kontenitur għandu 192.168.60.210, u l-klijenti VPN jiġu minn 10.95.0.0/24. Il-klijent jasal għas-servizz, it-tweġiba qatt ma tiġi lura, u kull regola tal-firewall fuq il-host tidher korretta. Żewġ restrizzjonijiet separati jipproduċu dan is-sintomu, u t-tiswija ta' waħda tħalli l-oħra f'postha.

Żewġ restrizzjonijiet, sintomu wieħed

L-ewwel restrizzjoni hija l-iżolament: id-driver macvlan ta' Docker ma jħallix kontenitur jitkellem mal-host tiegħu stess permezz tal-interface ġenitur. It-traffiku bejn l-istack tal-host u l-kontenitur m'għandux triq, kif inhi miktuba r-rotot fuq il-host.

It-tieni restrizzjoni hija t-triq lura. Il-gateway awtomatiku tal-kontenitur huwa normalment ir-router tal-LAN, għalhekk tweġiba indirizzata lil klijent VPN toħroġ minn dak ir-router. Jekk ir-router m'għandux rotta lura lejn il-pool VPN, it-tweġiba tiġi mwarrba xi mkien fin-nofs.

Iż-żewġ fallimenti jidhru identiċi min-naħa tal-klijent: talba li tasal u tweġiba li qatt ma tasal. Jeħtieġu tiswijiet differenti, u regola masquerade wiesgħa tista' taħbi liema minnhom għadha miksura. Għalhekk l-ewwel test huwa qabda fuq in-naħa tal-kontenitur u mhux bidla oħra fil-firewall. Jekk it-talba qatt ma tidher hemm, hija r-restrizzjoni tal-iżolament li qed taġixxi.

Ibni l-shim fuq in-naħa tal-host, b'mod dejjaq

It-tieni interface macvlan fuq il-host, imqabbad mal-istess ġenitur fil-modalità bridge, jagħti lill-istack tal-host l-identità tiegħu f'dak is-segment tal-LAN. Irriżerva indirizz barra mill-pool DHCP u barra mill-firxa tal-kontenitur għalih, u għaddi biss il-kontenitur minnu.

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

L-ewwel kmand joħloq l-interface fil-modalità bridge, li hija l-valur awtomatiku dokumentat għal dan id-driver u l-modalità li trid għat-traffiku bejn host u kontenitur. It-tieni jassenja /32 sabiex l-indirizz ma jaħbatx mal-prefiss tal-LAN, u r-raba' jibgħat biss l-indirizz tal-kontenitur mill-shim.

Terġax tiddirieġi l-LAN kollu mill-interface il-ġdid. Ir-rotta konnessa ordinarja tibqa' kif inhi, u r-rotta tal-host hija apposta dejqa sabiex kontenitur wieħed jikseb triq mingħajr ma l-bqija tas-segment ibiddel l-imġiba tiegħu. Rotta awtomatika lejn l-shim tkun disinn ieħor b'konsegwenzi oħra. Żommha speċifika u r-raġġ tad-dannu jibqa' żgħir.

Dawn il-kmandi jbiddlu l-konfigurazzjoni tan-netwerk fuq host li qed jaħdem. Fuq apparat jew pjattaforma ġestita, uża l-mekkaniżmu ta' konfigurazzjoni appoġġat ta' dik il-pjattaforma, għax bidla interattiva f'root shell tista' ma tibqax wara aġġornament.

Iddeċiedi kif jinżamm is-sors

Bl-shim f'postu, il-kontenitur jista' jasal għall-host, u l-mistoqsija ssir liema indirizz tas-sors iġġorr it-tweġiba. Li jinżamm is-sors VPN oriġinali huwa l-mudell aktar nadif: il-kontenitur jara l-indirizz veru tal-klijent, u l-logs u r-regoli tal-aċċess tas-servizz jistgħu jużawh.

Biex dan jaħdem, il-konfigurazzjoni tan-netwerk tal-kontenitur trid tibgħat it-traffiku għal 10.95.0.0/24 lil 192.168.60.250 bħala l-gateway tiegħu għal din it-triq. Din hija konfigurazzjoni ta' rotta jew gateway appoġġata fil-konfigurazzjoni tal-kontenitur stess, mhux trick fuq in-naħa tal-host. Ikkonfermaha minn ġol-kontenitur minflok ma tassumi li l-konfigurazzjoni daħlet fis-seħħ. Gateway awtomatiku li għadu jindika lejn ir-router tal-LAN se jkompli jibgħat tweġibiet fl-istess toqba.

Jekk id-disinn approvat jaħbi minflok is-sorsi VPN, illimita t-traduzzjoni b'mod dejjaq: il-pool VPN veru, l-shim bħala interface tal-ħruġ, u l-kontenitur u s-servizz speċifiċi.

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

Qabbel l-shim bħala interface tal-ħruġ, mhux it-tunnel. Regola li ssemmi t-tunnel bħala interface tal-ħruġ ma taqbilx ma' pakkett li jmur lejn il-kontenitur, u din hija l-iżball li tipikament ikun f'dawn it-tip ta' setup. Żomm ir-regola dejqa daqs is-sentenza ta' fuq u erġa' teżaminaha meta jinbidel il-pool.

Ivverifika mill-klijent, mhux mill-host

Talba mill-host innifsu, marbuta mal-indirizz tal-shim, tipprova li l-shim jista' jasal għall-kontenitur. Ma tipprovax li l-kontenitur jista' jibgħat it-traffiku lura lejn sors ippreservat 10.95.0.x, għax l-indirizz tas-sors f'dak it-test huwa tal-shim stess.

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

L-ewwel kmand jittestja s-sezzjoni mill-host għall-kontenitur, u t-tieni juri x'jgħaddi tassew mill-shim waqt li klijent VPN veru jagħmel it-talba. Ħares lejn l-indirizz tas-sors fit-triq tad-dħul u jekk tidhirx tweġiba bl-istess fluss.

Il-forwarding irid ikun attivat fuq il-host, u t-triq tal-forwarding teħtieġ permess għall-pool VPN lejn l-shim fuq il-port tas-servizz flimkien ma' tweġibiet stabbiliti. Regola INPUT fuq il-host ma tawtorizzax traffiku li jiġi forwardjat, u din hija raġuni komuni għalfejn il-pakkett jintrema wara li r-rotta tidher korretta.

Ħaddem l-applikazzjoni vera b'kredenzjali veri, imbagħad iċċekkja li t-tieni servizz, mhux relatat, fuq l-istess kontenitur għadu jirrifjutak. Jekk l-uniku mod biex jaħdem kien li tiftaħ kull regola tal-forwarding, id-disinn mhux lest. Innota wkoll liema indirizz tas-sors irrikordja s-servizz, għax dak huwa li se jużaw ir-regoli tal-aċċess tiegħu stess minn issa 'l quddiem.

Artikli relatati