Ären Container äntwert nach ëmmer op senger Kontrollbréck, awer all erausgehende Pak verléisst d'Netz iwwer de Büro-macvlan. Näischt ass ausgefall. Zwee Uschlëss liwweren all een Gateway, an déi eenzeg Standardroute ass bei d'Netz gaang, dat Dir net gemengt hutt, sou datt de Service weiderleeft, während säin Traffic e méi laange Wee hëllt. Bis et engem opfält, ass de Beweis eng Routingstabelle an net eng Feelmeldung.

Déi gewéinlech Erklärung ass, datt Docker d'Netz zoufälleg ausgewielt huet. An der Praxis ass déi al Decisioun der alphabetescher Reihenfolg vun den Nimm vun den ugeschlossenen Netzwierker gefollegt, wat d'Routing zu engem Nieweneffekt vun engem Label gemaach huet. gw_priority ersetzt dat duerch eng Zuel, déi Dir bewosst wielt, an d'Ëmstellung dauert ongeféier eng Minutt, soubal de Layout opgeschriwwe ass.

Firwat d'Standardroute um falschen Netzwierk landt

All Netzwierk, deem e Service bäitriede kann, kann säin eegene Gateway ubidden, an de Container kritt trotzdem genau eng Standardroute. Virum Compose 2.33.1 gouf de Gläichstand duerch d'Sortéiere vun den Netznimm entscheet, sou datt e Label wéi control, dee virun office kënnt, decidéiert huet wou de Traffic higeet. Näischt am Container registréiert, datt d'Decisioun willkürlech war, an dowéinst iwwerlieft se d'Codereview a kënnt méi spéit als komesche Wee eraus. Eng Politik an der compose-Datei ze setzen ass deen eenzege Wee fir d'Wiel iwwerpréifbar ze maachen.

Zwee Saachen änneren tatsächlech, wien d'Netz gewënnt: d'gw_priority-Wäerter, déi Dir vergitt, a wéi eng Netzwierker iwwerhaapt ugeschloss sinn. Füügt en drëtt Netzwierk derbäi an de Kandidate-Set wiisst; hëlt de macvlan ewech an et bleift näischt fir mat der Bréck ze konkurréieren. Keng vun den zwou Beweegunge gesäit een an den Applikatiounslogs, well eng falsch Standardroute eng Verbindung selten ganz ënnerbrécht. Se suergt just dofir, datt Äntwerten vun enger Adress ukommen, déi déi aner Säit vläicht net erwaart.

Fixéiert de Gateway mat gw_priority

Compose bitt gw_priority op all Service-zu-Netz-Uschluss zënter Versioun 2.33.1 un, an déi héchst Zuel gewënnt. Et gëtt keen Gateway-Schlëssel pro Service, dofir gehéiert de Wäert an den networks-Block vum Service. Dat Beispill hei drënner gëtt d'Standardroute un control, wärend office fir säin direkt verbonnen LAN erreechbar bleift.

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

Liest de Block als zwee getrennte Steierungen: gw_priority entscheet d'Standardroute, an den ipam-Abschnitt entscheet d'Adresséierung. Nëmmen de subnet änneren léisst d'Ausgangswiel onberéiert, an dat ass dee gewéinlechste Wee, wéi dës Korrektur hallef ugewand gëtt. Halt d'Prioritéiten nieft dem Netz, dat se regéieren, sou datt den nächste Lieser d'Decisioun net muss sichen.

Verwiesselt gw_priority net mat der einfacher priority-Eegenschaft niewendrun. Déi ordert d'Uleeë vun de Verbindungen a seet näischt iwwer Routing, sou datt se kee Standard-Gateway ka wielen an d'Interface-Nimm net fléckt. Wa jemand empfielt, priority ze erhéijen fir den Traffic ze leeden, ass den Tipp falsch, och wann déi resultéierend Reihenfolg zoufälleg richteg ausgesäit.

Kontrolléiert, wien d'Netz d'Standardroute wierklech dréit

Kontrolléiert am lafenden Container, well d'Routingstabelle vum Host den Host beschreift an net den Nummraum, deen de Service benotzt. Start fir d'éischt d'Konfiguratiounsprüfung, sou datt e Schreiffeeler virun engem Neistart opfält, a liest duerno de Wee, deen de Container tatsächlech installéiert huet.

docker compose config --quiet
docker exec vpn ip -4 route show default
docker exec vpn cat /proc/net/route

E richtegt Resultat nennt d'Bréck-Gerät an 172.30.50.1; e falscht nennt 192.168.120.1 an de macvlan-Gerät. Wann d'Image kee iproute2-Paket enthält, mellt d'/proc-Datei d'Standardroute nach ëmmer, mat Zil 00000000 an de Gateway-Byte ëmgedréit. Vergläicht d'Interface-Spal mat docker inspect, wann d'Gerätenimm onkloer sinn.

Macvlan ass e physesche Port, kee Klon vun der Bréck

Macvlan gëtt dem Container eng zweet Identitéit um Kabel, an dat ass genau dat, wat den Zougang zu lokalen Geräter funktionéiere léisst. Et bedeit och, datt de Switchport an den Hypervisor eng zousätzlech MAC-Adress mussen akzeptéieren, a vill Cloud-Netzwierker refuséieren dat roueg. Test eng Container, ier Dir eng Flott plangt, well eng refuséiert MAC normalerweis als Verbindung erschéngt, déi uewen ass an näischt duerchléisst.

D'Astellung macvlan_mode: bridge ass e Modus vum macvlan-Treiber, net Docker seng Softwarebréck, an passthru ass en eegene spezialiséierte Modus an net e Standard. Linux hält och e macvlan-Container dovun of, säin eegene Host z'erreechen iwwer dee selwechte Parent, an dat ass de Grond fir d'Kontrollbréck ze behalen, amplaz ze erwaarden datt een Uschloss déi zwou Aufgaben mécht.

Nennt de VLAN-Parent, ier Compose en gesäit

Docker behandelt e Parent mat Punkt wéi eno1.120 als 802.1Q-Subinterface a leet d'VLAN-Gerät selwer un. Dës Bequemlechkeet huet Grenzen: den ofgeleeeten Numm hänkt vum Numm vun der physescher Interface of, an laang Nimm kënnen d'Resultat iwwer dat erausdrécken, wat d'Werkzich ronderëm erwaarden. Eng genannt VLAN-Interface an der Netzwierkkonfiguratioun vum Host unzeleeën a parent drop ze weisen hält béid Enden viraussobar.

Denkt drun, datt de Schlëssel ënner networks en Compose-Numm ass, keen Linux-Gerät. D'Siche vum Host no enger Interface mam Numm office wäert feelen, well de Kernel nëmmen d'Parent-Interface an d'veth-Paar hannert dem Container gesäit.

Maacht Plaz fir de VPN uewendrop

E VPN-Client verbënnt sech, nodeem dës Netzwierker existéieren, sou datt en nach spezifesch Weeër, Politikregelen a Filtere bäisetze kann onofhängeg vum gw_priority. Plant d'Remote-Präfixer géint béid lokal subnet, inklusiv den Äntwerten, déi de Kontrollwee brauch. Wa en Remote-Präfix de Büro-LAN iwwerlappt, fléckt den Adressplang, amplaz eng ganz privat Gamme aus dem Tunnel ze rappen.

Kontrolléiert Adressen, Weeër an de Servicewee nach eng Kéier, nodeem de VPN gestart ass, an nach eng Kéier nodeem en sech nei verbonnen huet, well et bei enger Neiverbindung ass, wou e manuell bäigefüten Wee verschwënnt. Schreift déi erwaart Tabell virum éischten Test op, sou datt de Verglach duerno en Diff ass an net eng Gediechtnisübung. Halt d'dauerhaft Netzwier-Eegentum am Compose a loosst der VPN-Konfiguratioun nëmmen hir eege Politik.

Ähnlech Artikelen