Gerelateerde Artikelen

Maak een Macvlan Netwerk in Docker

Als je Docker gebruikt om je containers te beheren, kan het voorkomen dat je meerdere containers op dezelfde host moet draaien, elk met een eigen IP-adres. Hier komt een macvlan-netwerk goed van pas. Op deze website gebruiken we een macvlan-netwerk in al onze tutorials en we raden je aan om hetzelfde te doen. In deze tutorial nemen we je mee door het proces van het maken van een macvlan-netwerk in Docker en laten we je zien wat de voordelen zijn van het gebruik van dit type netwerk.

Table of Contents

Wat is een Macvlan Netwerk?

Een macvlan-netwerk is een type netwerk dat je in staat stelt om aan elke container in Docker een uniek MAC-adres en IP-adres toe te wijzen. Dit betekent dat elke container in het netwerk zijn eigen identiteit heeft en rechtstreeks kan communiceren met andere apparaten op hetzelfde netwerk.

In eenvoudigere termen stelt een macvlan-netwerk je in staat om virtuele netwerkinterfaces te creëren op je Docker-host. Deze virtuele interfaces gedragen zich als fysieke netwerkinterfaces en kunnen elk een eigen uniek IP-adres en MAC-adres krijgen. Dit stelt elke container in het netwerk in staat om zijn eigen netwerkidentiteit te hebben, die kan worden gebruikt om te communiceren met andere apparaten op hetzelfde netwerk.

Voordelen van een Macvlan Netwerk

Een macvlan-netwerk in Docker biedt verschillende voordelen, waaronder:

  • Elke container krijgt zijn eigen IP-adres: wanneer je een macvlan-netwerk gebruikt, krijgt elke container in het netwerk zijn eigen unieke IP-adres, net als elk ander apparaat op je netwerk. Dit betekent dat je elke container rechtstreeks via het IP-adres kunt benaderen, zonder dat je poorten op de hostmachine hoeft te gebruiken.

 

  • Meerdere containers laten draaien die dezelfde poort gebruiken: met een macvlan-netwerk kun je meerdere containers laten draaien die dezelfde poort gebruiken, zoals poort 80 voor een webserver. Elke container heeft zijn eigen IP-adres, dus er zullen geen poortconflicten zijn.

 

  • Geen poorten op de hostmachine gebruiken: wanneer je meerdere containers op één host draait, kun je problemen hebben met poortconflicten. Door een macvlan-netwerk te gebruiken, voorkom je dit probleem door elke container zijn eigen IP-adres te geven en dus zijn eigen set poorten.

 

  • Andere machines wijzen naar de container: met een macvlan-netwerk kun je andere machines op je netwerk naar een container wijzen via het IP-adres, in plaats van via de hostmachine te gaan. Dit is vooral handig als je een DNS-server of load balancer draait die het IP-adres van elke container moet weten.

Het creëren van een Macvlan Netwerk

Het creëren van een macvlan-netwerk in Docker is heel gemakkelijk! We zullen ons nieuwe netwerk in Docker creëren met behulp van de macvlan-driver. We noemen het “mac_vlan_network“. Open de terminal en gebruik de volgende opdracht:

				
					sudo docker network create -d macvlan \
--subnet 10.1.1.0/24 \
--gateway 10.1.1.1 \
-o parent=enp0s2 \
mac_vlan_network
				
			

Deze opdracht creëert een nieuw netwerk met behulp van de macvlan-driver. We hebben gespecificeerd:

  • een subnet: 10.1.1.0/24
  • een gateway: 10.1.1.1
  • de naam van de ouderinterface: enp0s2
  • de naam van ons macvlan-netwerk: mac_vlan_network

Pas deze gegevens aan naar de gegevens van je eigen netwerk.

Het Macvlan Netwerk Gebruiken

Nu we ons macvlan-netwerk hebben gecreëerd, kunnen we gemakkelijk containers op het netwerk aansluiten door het netwerktype tijdens de containerconfiguratie op te geven. Hier is een eenvoudig voorbeeld:

De Terminal Gebruiken

				
					docker run -it --name=webserver --network=mac_vlan_network --ip=10.1.1.10 nginx

				
			

Het is belangrijk om altijd een IP-adres op te geven bij het verbinden van een container met een macvlan-netwerk. Als je geen IP-adres opgeeft, zal Docker fungeren als een DHCP-server en een IP-adres toewijzen aan je container. Dit kan IP-conflicten in het netwerk veroorzaken als er al een DHCP-server actief is in het netwerk (wat meestal het geval is).

Docker Compose Gebruiken

				
					version: '3'
services:
  web:
    image: nginx
    container_name: nginx
    networks:
      mac_vlan_network:
        ipv4_address: 10.1.1.10

networks:
  mac_vlan_network:
    external: true

				
			

Veelvoorkomende problemen met een Macvlan-netwerk

IP-adresconflicten

Als je geen IP-adres opgeeft voor de containers, zal Docker fungeren als een DHCP-server en een IP-adres toewijzen aan de container. Dit kan IP-conflicten in het netwerk veroorzaken als er al een DHCP-server actief is in het netwerk.

Beperkte netwerktopologie

Een macvlan-netwerk is beperkt tot hetzelfde subnet als de fysieke interface op de host. Dit betekent dat als je verbinding wilt maken met apparaten op een ander subnet, je routing tussen de twee subnets moet instellen.

Beperkte ondersteuning voor broadcastverkeer

Broadcastverkeer wordt niet ondersteund op een macvlan-netwerk. Dit betekent dat als je broadcastverkeer tussen containers wilt verzenden, je multicast-routing moet instellen.

Beveiligingsrisico’s

Aangezien elke container in een macvlan-netwerk zijn eigen MAC-adres heeft, is het mogelijk dat een container het MAC-adres van een ander apparaat op het netwerk vervalst/spooft. Dit kan mogelijk leiden tot beveiligingsproblemen.

Door op de hoogte te zijn van deze problemen en passende maatregelen te nemen om ze te beperken, kunt je ervoor zorgen dat je macvlan-netwerk veilig en functioneel is.

Trakteer me!

Als je deze tutorial nuttig vond, overweeg dan om ons te steunen door ons te trakteren op een kopje koffie of een kleine donatie te doen. Jouw bijdrage zal ons helpen om gemakkelijk te volgen tutorials te blijven maken, zodat jij moeiteloos je eigen homelab kunt opzetten! Bedankt voor je steun!