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.

Artikli relatati