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.
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.
Een macvlan-netwerk in Docker biedt verschillende voordelen, waaronder:
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:
Pas deze gegevens aan naar de gegevens van je eigen netwerk.
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:
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).
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
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.
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.
Broadcastverkeer wordt niet ondersteund op een macvlan-netwerk. Dit betekent dat als je broadcastverkeer tussen containers wilt verzenden, je multicast-routing moet instellen.
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.
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!