[TUT] MacVlan konfigurieren - Schritt für Schritt Anleitung

  • Alle Screenshots stammen aus meiner eigenen Umgebung. Das Tutorial wurde selbsstsänig verfasst, Inspirationen hierzu wurden aus dem YouTube-Video youtube.com/watch?v=Y3B0kBl5cn8 von Navigio geholt.
    Yes

    Liebe Forengemeinde,
    in diesem Tutorial stelle ich Euch eine detaillierte Schritt-für-Schritt Anleitung inkl. aller Details und wichtiger Besonderheiten zur Verfügung, mit welcher Ihr ein MacVlan für Eure Docker-Container konfigurieren könnt. Voraussetzung für dieses Tutorial ist eine installierte Instanz von Portainer.

    Empfehlung:
    Überlegt Euch im ersten Schritt, wie viele IP-Adressen Ihr benötigt. Erfahrungsgemäß ist es besser, lieber mehr als zu wenig Adressen zu haben, da ein MacVlan im Nachgang nicht mehr erweitert werden kann. Man kann dieses nur löschen und neu erstellen, wodurch aber alle Container ihre IP-Adresse verlieren und diese nach einer Neukonfiguration manuell neu vergeben werden müssen. Wählt also einen großzügigen Bereich, insbesondere wenn ihr mit vielen Docker-Containern experimentieren möchtet.

    Wichtiger Hinweis:
    In meiner Anleitung konfiguriere ich als Beispiel den IP-Adressbereich 192.168.178.224/27 mit 32 IP-Adressen, wovon 30 IP-Adressen effektiv nutzbar sind. Solltet Ihr eine andere Adresskonfiguration haben oder mehr/weniger IP-Adressen benötigen, so muss das nachfolgende Konfigurationsbeispiel natürlich an Eure Gegebenheiten und Wünsche angepasst werden.

    Eine Übersicht zu den Präfixen (im Beispiel /27), mit welchen Ihr den gewünschten IP-Adressbereich festlegen könnt, findet ihr in folgender Tabelle von Manitu: https://wiki.manitu.de/index.php/Server:IPv4-Subnetze

    Vorbereitend zur eigentlichen Konfiguration sind einige ToDos erforderlich, welche ich im nachfolgenden beschreibe:

    Subnetz für das MacVlan definieren:

    1. Öffnen der IT-Tools (erreichbar unter https://it-Tools.tech oder Eigeninstallation lt dieser Anleitung).
    2. In die Suchleiste „Subnet (ohne „“) eintippen und „IPv4 subnet calculator“ auswählen.

    image

    3. Gewünschte Start-IP-Adresse und Präfix angeben.

    image

    4. Alle Informationen notieren, diese werden bei der Konfiguration benötigt.

    Excludieren des IP-Adressbereichs aus der DHCP-Range des Routers (am Beispiel meiner Fritzbox):

    1. Browser öffnen und das Webinterface deines Routers aufrufen und anmelden.
    2. In folgende Ansicht wechseln:

    • Heimnetz > Netzwerk > Netzwerkeinstellungen > Weitere Einstellungen > IPv4-Einstellungen

    image

    3. Den DHCP-Bereich so anpassen, dass der Teilbereich des MacVlans davon ausgenommen ist.

    image

    4. Anschließend auf „Übernehmen“ klicken.

    image

    Ermitteln der aktiven Netzwerkverbindung:

    1. Sofern noch nicht erfolgt, muss auf dem NAS wie folgt SSH aktiviert werden.

    • Systemsteuerung > Terminal > SSH aktivieren (Haken setzen)

    image

    2. Terminal öffnen und per ssh anmelden.
    3. Nachfolgende Befehle ausführen:

    • sudo -i
    • ifconfig

    4. In der Ausgabe werden nun alle verfügbaren Netzwerkverbindungen aufgelistet, sucht hier nach der IP-Adresse Eures NAS (in meinem Fall 192.168.178.10). Die aktive Netzwerkverbindung für diese IP-Adresse heißt in meinem Fall also „eth0“, notiert Euch diesen Namen, dieser wird bei der Einrichtung des MacVlans gleich benötigt.

    image

    Einrichtung des MacVlans in Portainer:

    1. Browser Eurer Wahl öffnen und Portainer aufrufen (http://IP-des-NAS:9443, z.B. http://192.168.178.10:9443)
    2. Anmeldedaten eingeben und auf Login klicken.

    image

    3. Auf „Live connect“ klicken.

    image

    4. Links im Menü auf „Networks“ klicken.

    image

    5. Rechts oben auf „Add network“ klicken.

    image

    6. Mac-Vlan Vorlage erstellen - die Angaben in den Feldern basieren auf meiner Beispiel, bei Bedarf anpassen:

    • Name: mvl-vorlage
    • Parent network card: eth0
    • Driver: macvlan
    • Subnet: 192.168.178.0/24
    • Gateway: 192.168.178.1
    • IP range: 192.168.178.224/27
    • Auf „Add excluded“ IP klicken
      image
    • Exclude IP: 192.168.178.250
    • Alles andere kann so belassen werden.

    image

    • Nun etwas nach unten scrollen und auf „Create the network“ klicken.

    image

    • Es erscheint eine Erfolgsmeldung.

    image

    7. Links im Menü auf wieder auf „Networks“ klicken.

    image

    8. Rechts oben wieder auf „Add network“ klicken.

    image

    9. Mac-Vlan Netzwerk erstellen - die Felder mit den nachfolgenden Werten befüllen:

    • Name: mvl
    • Driver: macvlan
    • Den Button „Creation“ anklicken

    image

    • Configuration: mvl-vorlage
    • Alles andere kann so belassen werden.

    image

    • Anschließend auf „Create the network“ klicken.

    image

    • Es erscheint erneut eine Erfolgsmeldung.

    image

    Wir sind fast fertig, aber noch nicht ganz. Ihr erinnert euch bestimmt, bei der mvl-vorlage haben wir die "excluded IP" 192.168.178.250 definiert. Diese werden wir nun dazu nutzen, um sicherzustellen, dass alle Docker-Container mit dem Host und auch umgekehrt kommunizieren können. Hierzu sind ein paar Anpassungen im Terminal erforderlich.

    Abschließende ToDos - Kommunikation Docker-Container <> Host:

    1. Folgenden Code kopieren und in einen Texteditor einfügen:

    Bash
    #!/bin/sh  
    ip link add mvl-brg link eth0 type macvlan mode bridge  
    ip addr add 192.168.178.250/32 dev mvl-brg  
    ip link set mvl-brg up  
    ip route add 192.168.178.224/27 dev mvl-brg  

    2. Folgende Anpassungen vornehmen:

    • In Zeile 2, sofern es eine Abweichung zu Eurer Konfig besteht, die "excluded IP" 192.168.178.250/32 anpassen.
    • In Zeile 4, sofern es eine Abweichung zu Eurer Konfig besteht, die "IP range" 192.168.178.224/27 anpassen.

    3. Die Datei unter dem Namen "docker-network.sh" abspeichern.
    4. Die Datei "docker-network.sh" auf eine Freigabe des NAS hochladen (in meinem Fall /volume2/Scripte/).
    5. Terminal öffnen und per ssh anmelden.
    6. Nachfolgende Befehle der Reihe nach (von oben nach unten) ausführen:

    • sudo -i
    • mv /volume2/Scripte/docker-network.sh /usr/local/sbin
    • cd /usr/local/sbin
    • chmod +x docker-network.sh

    7. Service erstellen, damit das Script beim Systemstart ausgeführt wird - folgende Befehle eingeben:

    • cd /etc/systemd/system
    • nano docker-network.service
    • Folgenden Inhalt kopieren und einfügen:
    Code
    [Unit]  
    Description=Docker Host redet mit Container  
    After=multi-user.target  
    
    [Service]  
    ExecStart= /usr/local/sbin/docker-network.sh &  
    
    [Install]  
    WantedBy=multi-user.target

    8. Das Script unter dem Namen "docker-network.service" (ohne"") speichern.
    9. Folgende Befehle der Reihe nach (von oben nach unten) ausführen

    • chmod 644 docker-network.service  
    • systemctl start docker-network.service  
    • systemctl status docker-network.service  
    • systemctl enable docker-network.service  

    Tipp: Solltest du an dieser Stelle Fehlermeldungen erhalten, hast du eventuell vorher bereits schon eine falsche Konfiguration eingespielt, weche nun bereigt werden müsste. Schau dir in diesem Fall den Beitrag #90 an und befolge die beschriebenen Schritte. Wenn du keine Fehlermeldungen erhältst, fahre direkt mit Punkt 10 fort.

    10. NAS neu starten.

    Hinweis:
    Nach Einrichtung eines oder mehrerer Docker mit MacVlan-Konfiguration kann geprüft werden, ob der Workaround "Kommunikation Docker-Container <> Host" erfolgreich war. Hierzu einfach vom PC aus einen Ping auf die IP-Adresse eines laufenden Docker-Containers (in meinem Fall z.B 192.168.178.251) absetzen.

    Erhält man eine Antwort, war der Workaround erfolgreich:

    image

    Gratuliere, nun bist du einsatzbereit - viel Spaß beim nachbauen!

  • Danke für die investierte Zeit für das Forum! 🙂

    Meine Hardware

    iDX6011 Pro in Späh ^^

    DXP4800+ 2x8TB WDRedPl Btrfs Raid1 2x 2TB Lexar NM790 Raid1, 64GB RAM Kingst. KVR48S40BD8-32 DDR5/4800MH

    DXP2800 1x 12TB Seag. 1x 12TB WDRedPl, Raid1 Btrfs 16GB RAM Cruc. CT16G56C46S5.C8B2, 2x NVME Samsg,

    DS1525+ 2x8TB WD, Btrfs SHR, 2x 2TB NVME Lexar NM790 Raid1. 40GB ECC RAM_Speicher.de

    DS920+ DSM 7.3.2 Btrfs Raid1 2x8TB WD, 2x2TB Samsg. 970 EVOPlus, RAM 20GB DDR4-2666MHZ Speicher.de

    USV US3000, EatonEllip.PRO 850DIN, Switch Zyxel GS1200-8 1GB, Zyxel XMG-108 8 x 2,5GB

  • Hab es mal mit der Anleitung gemacht. Auf der UGOS Oberfläche unter Docker, Netzwerke ist mir das Ausrufezeichen aufgefallen (ungültiges Netzwerk), ist das so richtig oder hab ich irgendwo nen Fehler gemacht?

    image

    Ugreen DXP2800 | 32GB Crucial RAM | 2x 10 TB Ironwolf Pro
    Synology DS716+ | 8GB Samsung RAM | 2x 8TB Ironwolf Pro

  • Klasse Anleitung. Vielen Dank.
    Ich würde den Punkt 4 mit dem hochladen des docker-network.sh Scripts sparen. Wie du in Punkt 7 für den Service erklärst kann man sich das "docker-network.sh" Script auch direkt in der Shell erzeugen :)

  • Quote

      kampfpopcorn Hab es mal mit der Anleitung gemacht. Auf der UGOS Oberfläche unter Docker, Netzwerke ist mir das Ausrufezeichen aufgefallen (ungültiges Netzwerk), ist das so richtig oder hab ich irgendwo nen Fehler gemacht?

    Das Ausrufezeichen sollte so nicht da stehen, da scheint sich bei deiner Umsetzung irgendwo ein Fehler eingeschlichen zu haben. Am Besten das MacVlan (mvl-Vorlage + mvl) wieder löschen und nochmal von vorne anfangen.

    Bei mir sieht das im von dir genannten Dialog so aus, also ohne Ausrufezeichen:

    image

    EDIT: Fortsetzung der Korrespondenz mit @"kampfpopcorn"#45 wurde aufgrund Themenüberschneidung in den folgenden Thread verschoben: Home Assistant kann mit NAS nicht kommunizieren

  • Hallo,
    ein Hinweis, am Anfang wird eth0 als Schnittstelle mit der IP der NAS und unter Punkt 7 bei ip link dann bond0, da sollte noch ein Hinweis stehen, daß die Schnittstelle angepasst werden muß.

  • Quote

      ds106 Hallo,
    ein Hinweis, am Anfang wird eth0 als Schnittstelle mit der IP der NAS und unter Punkt 7 bei ip link dann bond0, da sollte noch ein Hinweis stehen, daß die Schnittstelle angepasst werden muß.

    Vielen Dank für den Hinweis, sehr aufmerksam von dir!
    Da hat sich ein Fehler eingeschlichen, natürlich muss der "link" im Konfigurationsbeispiel eth0 lauten 😊.
    Anleitung wurde dahingehend korrigiert.

  • Hallo,
    in docker-network.sh hab ich noch als erste Zeile #!/bin/sh eingefügt, hatte
    Jan 20 21:25:00 DXP2800 (twork.sh)[5459]: docker-network.service: Failed to execute /usr/local/sbin/docker-network.sh: Exec format error Jan 20 21:25:00 DXP2800 (twork.sh)[5459]: docker-network.service: Failed at step EXEC spawning /usr/local/sbin/docker-network.sh: Exec format error

  • ds106
    Danke für den Hinweis! Ich hatte bei mir diesen Fehler zwar nicht, habe die Zeile nun aber im Coder der Anleitung trotzdem ergänzt. Kann nicht schaden, sicher ist sicher 😊.

  • Nach gefühlt "ewiger" Zeit hier nochmal drüber geflogen. Was ich damals nicht wusste bzw. mein Fehler war:
    Zur Erinnerung:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.


    Falls wer also auch die VBR-LAN1 (virtuelle Bridge) angelegt hatte, um z.b. Home Assistant in der VM auch mit dem NAS kommunizieren zu lassen, muss statt: eth0 hier die bridge0 eintragen.

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    dann natürlich hier auch:

    Bash
    #!/bin/sh  
    ip link add mvl-brg link bridge0 type macvlan mode bridge  
    ip addr add 192.168.178/32 dev mvl-brg  
    ip link set mvl-brg up  
    ip route add 192.168.178/27 dev mvl-brg

    Alles andere bleibt unverändert, und dann klappts auch 8)

    Ugreen DXP2800 | 32GB Crucial RAM | 2x 10 TB Ironwolf Pro
    Synology DS716+ | 8GB Samsung RAM | 2x 8TB Ironwolf Pro

  • oha chinesische dörfer

    kann das nicht als app direckt von ugreen kommen

    danke für todo aber das bekommen anfänger nicht hin

    schade fand die kiste am anfang so gut ...

  • kann das nicht als app direckt von ugreen kommen

    Diese Anleitung / TUT bezieht sich auf macvlan und Portainer.

    Zwischenzeitlich lässt sich macvlan auch in der GUI von UGOS Pro in der Docker-App konfigurieren:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

  • Bräuchte kurz Hilfe: Habe beim Anlegen der macvlan-bridge bei der IP-Adresse dummerweise die falche IP hinterlegt.

    Wie kann ich die mvl-brg löschen und neu anlegen oder die IP-Adresse von 192.168.178.190/32 auf 192.168.2.190/32 ändern?

    Hinweis: Der obere Teil mit der macvlan-brigde hat sich mittlerweile erledigt.

    Und noch eine Frage, die zwar nichts mit macvlan zu tun hat: Wie bekommt man das Passwort für root@dxp6800pro raus? Das Passwort für den als Admin hinterlegten Benutzer funktioniert nicht.

    Mein NAS

    Ugreen DXP6800 Pro | 64GB RAM Kingston FURY Impact DDR5-RAM, 4800 MHz | 4x 4TB WD Red SA500 SATA SSD | 2x 4TB Kingston DC600M SATA SSD

    Edited 3 times, last by Kosmo (March 22, 2025 at 6:34 PM).

  • Hallo montragon ,

    du musst nichts neu aufsetzen, keine Sorge ;)...

    Du kannst deine vorhandenen Stacks überarbeiten, sprich Entfernung nicht mehr benötigter Ports und hinzufügen des Netzwerks, die persistenten Daten deiner Container bleiben von der Änderung natürlich unberührt:

    Code
        networks:
            default:
                ipv4_address: 192.168.178.235     #Freie IP-Adresse aus deinem MacVlan   
    
    networks:
        default:
            name: mvl                             #Name deines MacVlans
            external: true

    VG Willi

  • Hallo,

    ich bin neu im Thema NAS/Ugreen/Docker. Deswegen benötige Hilfe.

    • MacVlan
      Wenn ich das richtig verstehe, wenn eingerichtet, kann man die Apps die in Docker laufen von außen erreichen?
      Falls ja hat bei mir nicht geklappt. Wäre top wenn ich mit jemanden Schritt für Schritt (gerne auch per Anydesk oder so) hilft.
      Kann man auch MacVlan auch nachträglich einrichten und dann den einzelnen apps zu ordnen?
      Wenn Ja wie genau.

    Bin leider nicht immer online. Also bitte nicht wundern, wenn meine Antwort bzw Reaktion etwas dauert.

    Falls ich irgendeine Regel verletzt habe bitte gerne drauf hinweisen, damit ich nächste Mal besser machen kann.

    Vielen Dank schonmal und liebe Grüße

    Habe 1-mal ein Ugreen DXP2800 mit 2 Platten (zur Probe) am laufen und einen weiteren (noch eingepackt)

  • Hallo AxPi
    hier die Antworten zu deinen Frage...

    Wenn ich das richtig verstehe, wenn eingerichtet, kann man die Apps die in Docker laufen von außen erreichen?

    Jein, dazu sind noch viele weitere Kriterien zu erfüllen.

    Falls ja hat bei mir nicht geklappt. Wäre top wenn ich mit jemanden Schritt für Schritt (gerne auch per Anydesk oder so) hilft

    Eine Rundum Schritt-für-Schritt Anleitung gibt es nicht, denn der Weg dort hin besteht aus vielen Einzelschritten. Schreibe uns, am Besten in einem neuen Thread, was du schon gemacht hast und woran du genau scheiterst, dann können wir dir gezielt dabei helfen, dein Ziel zu erreichen. Gerne auch mal per Remote Session ;).

    Hier ein grober Überblick aller notwendigen Schritte, damit du deine Container von Extern erreichen kannst:

    • Dein Router muss von extern erreichbar sein, entweder per statischer IP, DynDNS oder MyFritz (sofern du eine FritzBox verwendest)
    • Du musst einen Reverse-Proxy, wie z.B. NginX installieren (am Besten mit MacVlan, damit dieser am Router sichtbar ist).
    • Du musst deinen Router entsprechend konfigurieren und die Ports 80 und 443 auf zum Reverse-Proxy weiterleiten (siehe Anleitung oben am Beispiel einer FritzBox).
    • Du brauchst eine eigene Domain/Subdomain, welche du auf deinen Router richten kannst.
    • In Nginx wird dann für diese Domain ein SSL-Zertifikat via Letscrypt angefordert und die Weiterleitung zu deinem Container eingerichtet.

    Anleitungen findest du in unserer Tutorial-Sektion, einfach mal durchstöbern.

    Kann man auch MacVlan auch nachträglich einrichten und dann den einzelnen apps zu ordnen?

    Das kann man am einfachsten in Portainer machen. Falls du deine Container mit Docker-Compose installierst, kannst du die Stacks gleich mit IP-Adressen aus deinem MacVlan ausstatten. Ansonsten geht das auch manuell.

    VG Willi

  • Wenn ich das richtig verstehe, wenn eingerichtet, kann man die Apps die in Docker laufen von außen erreichen?

    Wenn Du etwas von außen erreichbar machen möchtest, schaue Dir mal ein paar Videos über Cloudflare an. Am besten mit der Kombi Homeassistant. Hier gibt es viele kurze und einfache Videos. Funktioniert einfach und ist schnell gemacht.

    VG

  • Vielen Dank an euch

    ich habe leider gerade nicht so viel Zeit, aber versuche mich mal durch Zufuchsen. Falls dies nicht zum erwünschten Ziel führt, melde ich mich noch einmal.

    ich besitze mehrere Domains (.eu bei ionos), weiß aber nicht genau wie ich die für die Fritz!Box nutzen kann. Oder in NginX. Die Fritz!Box ist von aussen erreichbar. Ich habe mal diese Anleitung benutzt, war laut Portainer erfolgreich, aber bin dann nicht weiter gekommen. Habe dann MacVlan wieder gelöscht.

    Vielen Dank schonmal

    Habe 1-mal ein Ugreen DXP2800 mit 2 Platten (zur Probe) am laufen und einen weiteren (noch eingepackt)

  • AxPi
    Richte das MacVlan wieder ein und öffne danach einen neuen Thread zum Thema Domain und externe Erreichbarkeit.
    Dann können wir dein Anliegen thematisch sinnvoll vom Tutorial trennen und die Einzelschritte im neuen Thread der Reihe nach durchgehen.
    VG Willi

Participate now!

Join our community with over 10,000 members!

Register yourself now for free to get full access to all content, graphics, downloads and other exclusive features!