Traffiku tad-Docker u tal-VM wara OpenVPN: rotta jew rinumerazzjoni?
Il-kontenituri u l-klijenti fuq hosts b'klijent OpenVPN jew jitilfu t-triq tar-ritorn jew jaħbtu mal-prefiss tat-tunnel. Tliet mistoqsijiet jagħżlu s-soluzzjoni.
Il-host jibbaħħar bit-tunnel u l-kontenitur ħdejh ma jasal imkien. Li tippubblika port minn kontenitur li jmexxi l-klijent VPN tiegħu stess huwa agħar: it-talba tasal u t-tweġiba ma toħroġ qatt. It-tnejn huma deċiżjonijiet ta' routing fuq il-host, u Docker huwa biss il-messaġġier.
Tliet mistoqsijiet jiddeċiedu liema mill-żewġ każijiet qed tara, u jieħdu madwar minuta.
Żewġ ħsarat li jidhru l-istess
L-ewwel hija problema tat-triq tar-ritorn. Port ippubblikat jiġi tradott fil-kontenitur, it-talba tasal, u t-tweġiba tiġi routed bit-triq default tal-host, li l-klijent OpenVPN ikun indika lejn tun0. It-tweġiba toħroġ minn indirizz li l-pari remot ma jistenniex, u tiġi mwarrba. It-tieni hija kolliżjoni tal-prefiss: il-pont default tad-Docker għandu 172.17.0.0/16 u tunnel korporattiv jimbotta l-istess firxa.
Waħda tiġi rettifikata b'tabella tar-routing, l-oħra billi l-pont jiġi rinumerat. L-editjar qabel ma tkun taf liema hija liema huwa l-mod kif tkisser kontenitur li jaħdem.
Iddeċiedi bi tliet mistoqsijiet
Mistoqsija waħda: il-ħsara tisparixxi meta twaqqaf il-VPN? Jekk kollox jaħdem bit-tunnel mitfi, issuspetta t-triq tar-ritorn. Mistoqsija tnejn: ip route show table all jelenka l-istess prefiss darbtejn, darba fuq pont u darba fuq tun0? Dik hija l-kolliżjoni. Mistoqsija tlieta: l-indirizz affettwat huwa kontenitur, mistieden NAT jew mistieden b'pont?
It-tielet mistoqsija hija importanti għax kull wieħed għandu rettifika korretta differenti, u li tapplika r-rettifika tal-kontenitur fuq mistieden libvirt taħli s-serata.
ip route
ip route show table all | grep -E '172\.1[7-9]|10\.8'
docker network inspect bridge --format '{{.IPAM.Config}}'Triq tar-ritorn: tabella għal indirizz sors wieħed
Meta t-traffiku tal-kontenitur irid joħroġ mill-interface fiżika waqt li l-host innifsu juża t-tunnel, routing ibbażat fuq is-sors hija l-iżgħar bidla. Żid regola li taqbel mal-indirizz tal-kontenitur u ibgħatha lil tabella ddedikata. Xejn ieħor fuq il-host ma jiċċaqlaq.
ip rule add from 172.22.0.3 lookup 10
ip route add default via 172.22.0.1 table 10Kull pakkett li s-sors tiegħu huwa dak l-indirizz jikkonsulta l-ewwel tabella 10, u tabella 10 tibagħtu lill-gateway tal-pont minflok lit-tunnel.
Ivverifika b' ip route get 1.1.1.1 from 172.22.0.3. It-tweġiba trid issemmi l-interface tal-pont, mhux tun0. Regoli miżjuda b'dan il-mod jisparixxu meta jerġa' jibda, għalhekk poġġihom fl-unit jew fil-hook tan-netwerk li jippossjedi l-kontenitur.
L-istess mudell jaħdem għal kontenitur WireGuard, fejn it-triq tat-tweġiba wkoll teħtieġ regola espliċita.
Kolliżjoni tal-prefiss: erġa' numerizza l-pont
Tabella tar-routing tibgħat prefiss wieħed f'post wieħed. Jekk il-VPN jimbotta 172.17.0.0/16 waqt li l-pont tad-Docker diġà hemm, tirbaħ il-metrika l-iktar baxxa: Docker jinstalla r-rotta konnessa tiegħu b'metrika 0, u r-rotta mibgħuta tasal b'50. Imbagħad it-tunnel jidher miksur waqt li Docker ikompli jaħdem, jew bil-maqlub, skont l-ordni tal-installazzjoni. Erġa' numerizza l-pont minflok ma titħabat mal-metrika.
{
"bip": "10.200.0.1/24",
"default-address-pools": [{"base": "10.201.0.0/16", "size": 24}]
}Erġa' ibda Docker wara l-bidla u erġa' oħloq netwerks mibnija bil-pool antik. Il-bidla tal-metrika minflok iċċaqlaq biss il-konflitt għall-boot li jmiss.
Il-VM għandhom bżonn tweġiba oħra għal darb'oħra
Mistieden libvirt fuq in-netwerk NAT default jiret ir-routing tal-host u jieqaf jilħaq barra malli t-tunnel tal-host ikollu t-triq default. Li tħaddan il-mistieden għal apparat b'pont jew macvtap jagħtih triq tiegħu stess fuq in-netwerk fiżiku. Fil-virt-manager żid ħardwer, agħżel Network, issettja s-sors għall-apparat host macvtap, żomm virtio bħala mudell, imbagħad iddiżattiva l-interface NAT antika.
Mistieden macvtap normalment ma jistax jilħaq il-host tiegħu stess. Dan huwa mġiba mistennija u mhux ħsara, u jappartjeni għan-nota li tħalli warajk.
Għal mistieden li jeħtieġ biss il-LAN tal-host, il-klijent tal-fornitur jista' jkollu l-iswiċċ nieqes: bil-Mullvad, mullvad lan set allow terga' ġġib l-aċċessibbiltà lokali mingħajr ma tmiss libvirt. U meta kontenitur irid ikun aċċessibbli biss bit-tunnel, orbot il-port ippubblikat mal-indirizz tat-tunnel, -p 10.8.0.5:8080:8080, minflok tippubblikah fuq kull indirizz.