Puncte:0

Netplan - Solicitarea de ajutor pentru a gestiona corect rutele în configurarea macvlan

drapel in

Folosesc docker cu macvlan, unde fiecare dintre containerele mele are propria conexiune L2 cu adresa MAC și IP. De asemenea, trebuie să garantez că containerele ajung la gazdă și invers. Pot realiza asta în acest moment, folosind netplan și un script pentru a șterge unele rute, dar vreau ca ajutorul tău să înțeleagă dacă pot face acest lucru folosind netplan.

Configurația mea este aceasta:

Script batch pentru a crea interfața macvlan (nu este încă acceptată pe netplan)

#! /bin/bash
#! link ip adăugați link macvlan vlan10 tip macvlan mode bridge

Interfața vlan10 este creată cu configurația netplan

01-netcfg.yaml

reţea:
  versiunea: 2
  redator: în rețea
  ethernet:
    eno1:
      dhcp4: da
      dhcp6: da
      adrese:
        - aaaa:bbbb:cccc:1::11/64

  vlans:
    vlan10:
      id: 10
      link: eno1
      dhcp4: nu
      dhcp6: nu
      adrese:
        - 192.168.10.11/24
        - aaaa:bbbb:cccc:10::11/64

Acest lucru asigură că interfața VLAN creată doar pentru docker este creată și disponibilă.

20-docker.yaml

reţea:
    versiunea: 2
    redator: în rețea
    ethernet:
        macvlan:
            dhcp4: nu
            dhcp6: nu
            adrese:
                - 192.168.10.5/24
                - aaaa:bbbb:cccc:10::5/64

Aș recunoaște că poate acesta nu este cel mai eficient mod de a configura soluția de care am nevoie, dar funcționează și în acest fel evit să creez scripturi care să fie rulate la repornire folosind cron.

Traseele se despart

Acum că am creat interfețele, când acestea sunt în funcțiune, sunt create automat un set de rute, chiar și eu nu le definesc poarta de acces4 și poarta de acces6 directive și definiți netplat pentru a ignora rutele implicite DHCP. Dar, în ciuda acestui fapt, aceste rute pentru IPv4 și IPv6 sunt create automat, ceea ce evită să ajungă la containere în rețeaua vlan10 din cauza limitării driverelor de rețea docker prin proiectare.

Rute IPv4 pentru noile interfețe

192.168.10.0/24 dev vlan10 proto kernel scope link src 192.168.10.11
192.168.10.0/24 dev macvlan proto kernel scope link src 192.168.10.5
192.168.10.0/24 prin 192.168.10.5 dev macvlan proto static metric 100
192.168.10.0/24 prin 192.168.10.11 dev vlan10 proto metric static 150

Rute IPv6 pentru noile interfețe

aaaa:bbbb:cccc:10::/64 dev vlan10 proto kernel metric 256 pref mediu
aaaa:bbbb:cccc:10::/64 dev macvlan proto kernel metric 256 pref mediu

Pentru ca soluția mea să funcționeze, ar trebui să șterg manual (sau să folosesc un script de boot bash) pentru a șterge rutele nucleului de mai sus pentru dispozitivul vlan10 în IPv4 și IPv6. Făcând această sarcină, pot restabili comunicarea gazdă-container.

Există o modalitate de a îmbunătăți această soluție și de a evita crearea acelor rute sau o comandă pentru a ignora acea rută specifică de care nu am nevoie pe acea interfață specială pentru a garanta că îmi folosesc soluția în netplan?

Expertiza și disponibilitatea dumneavoastră sunt foarte apreciate. Mulțumesc

** 20.10.2021 - Editați după comentarii și teste suplimentare**

După mai multe revizuiri, testare și învățare, am trecut la următoarele modificări care mi-au rezolvat problemele și au permis gazdei mele să contacteze containerele din interior macvlan interfață.

01-netcfg.yaml

reţea:
  versiunea: 2
  redator: în rețea
  ethernet:
    eno1:
      dhcp4: da
      dhcp6: da
      adrese:
        - aaaa:bbbb:cccc:dddd:192:168:1:11/64

  vlans:
    vlan10:
      id: 10
      link: eno1
      dhcp4: nu
      dhcp6: nu
      adrese:
        - 192.168.10.11/32
        - aaaa:bbbb:cccc:10::11/128
      link-local: []

S-au schimbat măștile de subrețea IPv4 și IPv8 la /32 și, respectiv, /128. Acest lucru a creat regulile adecvate și a făcut gazda mea să restabilească comunicațiile cu rețeaua mea de containere Docker. Include, de asemenea, `link-local: []´ pentru a evita ca această interfață să creeze o legătură IP locală care ar putea interfera.

20-docker.yaml

reţea:
  versiunea: 2
  redator: în rețea
  ethernet:
    macvlan:
      dhcp4: nu
      dhcp6: nu
      adrese:
        - 192.168.10.5/24
        - aaaa:bbbb:cccc:10::5/64

Cu această configurație, aș putea restabili comunicațiile între gazdă și containere, pentru IPv4 și IPv6 și pot evita scripturile externe pentru a elimina rute sau a declara anumite rute: și politici de rutare: directive în netplan.

Sper că acest lucru îi ajută pe alții cu probleme similare. Mulțumiri

Puncte:0
drapel us

Aceste rute sunt create automat deoarece ați declarat următoarele în netplan yaml:

  adrese:
    - 192.168.10.11/24
    - aaaa:bbbb:cccc:10::11/64

Dacă nu doriți să existe rute către aceste rețele pe vlan10 interfață, pur și simplu nu le puteți declara.

drapel in
Multumesc pentru comentariu. Este logic să puneți subrețeaua /32 și /128 pe interfața `vlan10` și să forțați toate rutele să treacă prin interfața `macvlan`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.