Container b'żewġ netwerks jagħżel il-gateway ħażin
Żewġ konnessjonijiet, rotta default waħda, u n-netwerk ħażin jirbaħ dejjem. Iffissa l-ħruġ b'Compose gw_priority u kkonfermah minn ġewwa l-container.
Il-container tiegħek għadu jwieġeb fuq il-pont tal-kontroll tiegħu, iżda kull pakkett li joħroġ jaqbad il-macvlan tal-uffiċċju. Xejn ma falla. Żewġ konnessjonijiet kull waħda tipprovdi gateway, u l-unika rotta default marret lejn in-netwerk li ma kellekx ħsieb, allura s-servizz ikompli jaħdem filwaqt li t-traffiku tiegħu jaqbad triq itwal. Meta xi ħadd jinduna, l-evidenza hija tabella ta' routing u mhux messaġġ ta' żball.
L-ispjegazzjoni tas-soltu hija li Docker għażel in-netwerk b'aċċident. Fil-prattika d-deċiżjoni l-qadima kienet issegwi l-ordni alfabetika tal-ismijiet tan-netwerks imqabbda, li biddlet ir-routing f'effett sekondarju ta' tikketta. gw_priority jissostitwiha b'numru li tagħżel apposta, u l-adozzjoni tiegħu tieħu madwar minuta ladarba t-tqassim ikun miktub.
Għaliex ir-rotta default tinżel fuq in-netwerk ħażin
Kull netwerk li servizz jingħaqad miegħu jista' joffri l-gateway tiegħu, u l-container xorta jispiċċa bi rotta default waħda biss. Qabel Compose 2.33.1 l-ugwaljanza kienet tiġi deċiża billi jitqabblu l-ismijiet tan-netwerks, allura tikketta bħal control li tiġi qabel office kienet tiddetermina fejn imur it-traffiku. Xejn ġewwa l-container ma jirreġistra li d-deċiżjoni kienet arbitrarja, u għalhekk tgħaddi mir-reviżjoni tal-kodiċi u tidher aktar tard bħala triq stramba. L-introduzzjoni ta' politika fil-fajl compose hija l-uniku mod kif l-għażla ssir spezzjonabbli.
Żewġ affarijiet verament ibiddlu liema netwerk jirbaħ: il-valuri gw_priority li tassenja, u liema netwerks huma mqabbda xejn. Żid it-tielet netwerk u s-sett ta' kandidati jikber; neħħi l-macvlan u ma jibqa' xejn li jikkompeti mal-pont. L-ebda waħda miż-żewġ movimenti ma tidher fil-logs tal-applikazzjoni, għax rotta default ħażina rarament tinqa' l-konnessjoni għal kollox. Hija biss tagħmel it-tweġibiet jaslu minn indirizz li n-naħa l-oħra forsi ma tistenniex.
Iffissa l-gateway b'gw_priority
Compose jesponi gw_priority fuq kull konnessjoni servizz-ma'-netwerk minn verżjoni 2.33.1, u l-ogħla numru jirbaħ. M'hemm l-ebda ċavetta gateway għal kull servizz, allura l-valur jappartjeni taħt il-blokka networks tas-servizz. L-eżempju hawn taħt jagħti r-rotta default lil control filwaqt li office tibqa' tista' tintlaħaq għall-LAN konnessa direttament tagħha.
services:
vpn:
networks:
control:
gw_priority: 1
office:
gw_priority: 0
networks:
control:
driver: bridge
ipam:
config:
- subnet: 172.30.50.0/24
office:
driver: macvlan
driver_opts:
parent: eno1.120
macvlan_mode: bridge
ipam:
config:
- subnet: 192.168.120.0/24
ip_range: 192.168.120.192/27
gateway: 192.168.120.1
Aqra l-blokka bħala żewġ kontrolli separati: gw_priority jiddeċiedi r-rotta default, u s-sezzjoni ipam tiddeċiedi l-indirizzar. Li tbiddel biss is-subnet iħalli l-għażla tal-ħruġ bla ma tmissha, u dan huwa l-aktar mod komuni kif din il-korrezzjoni tiġi applikata nofsu. Żomm il-prijoritajiet ħdejn in-netwerk li jmexxu sabiex il-qarrej li jmiss ma jkollu l-ebda bżonn ifittex id-deċiżjoni.
Tħawwadx gw_priority mal-proprjetà priority sempliċi ħdejha. Dik tordna l-ħolqien tal-konnessjonijiet u ma tgħid xejn dwar ir-routing, allura ma tistax tagħżel gateway default u ma tissewwix l-ismijiet tal-interfaces. Jekk xi ħadd jirrakkomanda li tgħolli l-priority biex iddawwar it-traffiku, ir-rakkomandazzjoni hija ħażina anke meta l-ordni li tirriżulta jidher sew b'kumbinazzjoni.
Ivverifika liema netwerk verament iġorr ir-rotta default
Iċċekkja ġewwa l-container li qed jaħdem, għax it-tabella tar-routing tal-host tiddeskrivi l-host u mhux l-ispazju tal-ismijiet li jutilizza s-servizz. Mexxi l-verifika tal-konfigurazzjoni l-ewwel sabiex żball tat-tip jaqa' qabel restart, imbagħad aqra r-rotta li l-container effettivament installa.
docker compose config --quiet
docker exec vpn ip -4 route show default
docker exec vpn cat /proc/net/route
Riżultat korrett isemmi l-apparat tal-pont u 172.30.50.1; wieħed ħażin isemmi 192.168.120.1 u l-apparat macvlan. Jekk l-immaġni ma jkollhiex il-pakkett iproute2, il-fajl /proc xorta jirrapporta r-rotta default, b'destinazzjoni 00000000 u l-bytes tal-gateway maqluba. Qabbel il-kolonna tal-interface ma' docker inspect meta l-ismijiet tal-apparati mhumiex ċari.
Macvlan huwa port fiżiku, mhux klon tal-pont
Macvlan jagħti lill-container identità oħra fuq il-kejbil, u dan huwa eżattament dak li jagħmel l-aċċess għall-apparati lokali jaħdem. Dan ifisser ukoll li l-port tas-switch u l-hypervisor iridu jaċċettaw indirizz MAC żejjed, u ħafna netwerks tal-cloud jiċħduh b'mod kwiet. Ipprova container wieħed qabel tippjana flotta, għax MAC miċħud normalment jidher bħala konnessjoni li hija għolja u ma tgħaddix xejn.
Is-setting macvlan_mode: bridge huwa mod tad-driver macvlan, mhux il-pont tas-software ta' Docker, u passthru huwa mod speċjalizzat separat u mhux default. Linux ukoll iżomm container macvlan milli jilħaq il-host tiegħu stess permezz tal-istess parent, u għalhekk il-pont tal-kontroll jinżamm minflok ma jiġi mistenni li konnessjoni waħda tagħmel iż-żewġ xogħlijiet.
Semmi l-parent tal-VLAN qabel ma Compose jarah
Docker jittratta parent b'tikka bħal eno1.120 bħala sotto-interface 802.1Q u joħloq hu l-apparat VLAN. Dan il-vantaġġ għandu limiti: l-isem derivat jiddependi mill-isem tal-interface fiżika, u ismijiet twal jistgħu jimbottaw ir-riżultat lil hinn minn dak li jistennew l-għodod ta' madwar. Il-ħolqien ta' interface VLAN bl-isem fil-konfigurazzjoni tan-netwerk tal-host u l-indirizzar ta' parent lejha jżomm iż-żewġt itruf prevedibbli.
Ftakar li ċ-ċavetta taħt networks hija isem Compose, mhux apparat Linux. It-tfittxija fuq il-host għal interface bl-isem office se tfalli, għax il-qalba tara biss l-interface parent u l-par veth wara l-container.
Agħmel spazju għall-VPN fuq
Klijent VPN jingħaqad wara li dawn in-netwerks jeżistu, allura jista' jżid rotot aktar speċifiċi, regoli ta' politika u filtri irrispettivament minn gw_priority. Ippjana l-prefissi remoti kontra ż-żewġ subnet lokali, inklużi t-tweġibiet li għandu bżonn il-passaġġ tal-kontroll. Meta prefiss remot jikkoinċidi mal-LAN tal-uffiċċju, sewwi l-pjan tal-indirizzi minflok ma tqaċċer il-firxa privata kollha mit-tunnel.
Erġa' ċċekkja l-indirizzi, ir-rotot u l-passaġġ tas-servizz wara li l-VPN jibda u għal darb'oħra wara li jerġa' jingħaqad, għax huwa fi tqabbid mill-ġdid li rotta miżjuda bl-idejn tisparixxi. Ikteb it-tabella mistennija qabel l-ewwel test sabiex il-paragun wara jkun diff u mhux eżerċizzju tal-memorja. Żomm is-sjieda persistenti tan-netwerk f'Compose u ħalli l-konfigurazzjoni tal-VPN tippossjedi biss il-politika tagħha stess.