Skip to content
This repository was archived by the owner on Jan 5, 2025. It is now read-only.
This repository was archived by the owner on Jan 5, 2025. It is now read-only.

docker-dhcpd and macvlan interfaces #25

@rostchri

Description

@rostchri

The following information is useful for everybody who is using macvlan-interfaces and dhcpd ...

To get network-boot/docker-dhcpd working with macvlan-interfaces in a setup like this:

    version: "3"
    networks:
       macvlan-network1:
         external:
             name: macvlan-network1
       macvlan-network2:
         external:
             name: macvlan-network2
       macvlan-network3:
         external:
             name: macvlan-network3
    services:
      dhcpd:
        cap_add:
        - NET_ADMIN
        container_name: dhcpd
        hostname: dhcpd
        image: networkboot/dhcpd:latest
        networks:
            macvlan-network1:
                aliases:
                - dhcpd_network1
                ipv4_address: 10.0.0.7
            macvlan-network2:
                aliases:
                - dhcpd_network2
                ipv4_address: 10.1.0.7
            macvlan-network3:
                aliases:
                - dhcpd_network3
                ipv4_address: 192.168.132.7

the entrypoint.sh script should be extended by:

for i in /sys/class/net/eth*
do 
  echo "### Enabling promiscous mode for network-interface $${i##*/net/}"
  ip link set $${i##*/net/} promisc on || ifconfig $${i##*/net/} promisc
done

I don't know exactly why this is needed for macvlan, but with promiscuous-mode enabled interfaces, the dhcpd works fine in the above setup. Without promisc-mode, the dhcpd is not answering to broadcast-requests at all. To get the interfaces in the promisc-mode NET_ADMIN-capability is needed and the docker-image should be extended by iproute2 (ip-command) or net-tools (ifconfig-command). Maybe together with an environment-variable which signalize
entrypoint.sh to put the interfaces in promiscuous mode ...

At least this case should be mentioned in the documentation ...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions