sudo docker network create -d macvlan
--subnet=192.168.1.0/24
--gateway=192.168.1.1
--ip-range 192.168.1.32/27
--aux-address 'host=192.168.1.63'
-o parent=eth0
pihole_macvlan
uka47@ukapi:~ $ sudo docker network create -d macvlan \
--subnet=192.168.1.0/24
--gateway=192.168.1.254
--ip-range 192.168.1.32/27
--aux-address 'host=192.168.1.63'
-o parent=eth0
pihole_macvlan
uka47@ukapi:~ $ sudo docker network connect --ip 192.168.1.62 pihole_macvlan pihole
如果pihole本机需要dhcp,需要让主机连接macvlan接口 uka47@ukapi:~ $ sudo ip link add mvlan0 link eth0 type macvlan mode bridge uka47@ukapi:~ $ sudo ip addr add 192.168.1.63/32 dev mvlan0 uka47@ukapi:~ $ sudo ip link set mvlan0 up uka47@ukapi:~ $ sudo ip route add 192.168.1.32/27 dev mvlan0 uka47@ukapi:~ $ sudo dhclient -r uka47@ukapi:~ $ sudo dhclient
macvlan接口持久化: sudo systemctl enable systemd-networkd sudo systemctl start systemd-networkd
配置10-mvlan0.netdev: sudo nano /etc/systemd/network/10-mvlan0.netdev [NetDev] Name=mvlan0 Kind=macvlan
[MACVLAN] Mode=bridge
配置10-mvlan0.network: sudo nano /etc/systemd/network/10-mvlan0.network [Match] Name=mvlan0
[Network] Address=192.168.1.63/32 # 静态 IP,用于与 Docker 容器通讯 DHCP=ipv4 # 启用 DHCP,获取动态 IP sudo [Route] Destination=192.168.1.32/27
[Link] MACAddress=62:f7:fc:99:f7:67 #更换成macvlan macaddress
配置eth0.network: sudo nano /etc/systemd/network/10-eth0.network [Match] Name=eth0
[Network] DHCP=no
sudo systemctl restart systemd-networkd
检查: ip addr show mvlan0 禁用其他网络管理工具: sudo systemctl disable NetworkManager sudo systemctl stop NetworkManager sudo systemctl disable dhcpcd sudo systemctl stop dhcpcd
https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/
禁用持久化接口(不删除); sudo systemctl stop systemd-networkd sudo mv /etc/systemd/network/10-mvlan0.network /etc/systemd/network/10-mvlan0.network.disabled sudo systemctl start systemd-networkd
彻底清除持久化接口: sudo rm /etc/systemd/network/10-mvlan0.netdev sudo rm /etc/systemd/network/10-mvlan0.network sudo systemctl restart systemd-networkd