Docker配置macvlan网络时,网上的例子一般都是针对有线网卡,当我尝试对无线网卡使用macvlan时发现失败了,失败过程如下

sudo docker network create -d macvlan --subnet=192.168.12.0/24 --gateway=192.168.12.1 -o parent=wlp0s20f3 super_magic_macvlan
sudo docker run --rm -it --network=super_magic_macvlan alpine /bin/sh
/ # ping 192.168.11.1
PING 192.168.11.1 (192.168.11.1): 56 data bytes
...
--- 192.168.12.1 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

连网关都无法正常访问,经查找,发现是macvlan模式不支持大部分无线网卡

access points don’t like getting packets from MAC addresses that haven’t previously authenticated with them.

改用ipvlan可以解决这个问题,验证如下

sudo docker network create -d ipvlan --subnet=192.168.1.0/24 -o ipvlan_mode=l2 parent=wlp0s20f3 super_magic_macvlan
sudo docker run --rm -it --network=wlp0s20f3_super_magic_network alpine /bin/sh
/ # ping 192.168.11.1
PING 192.168.11.1 (192.168.11.1): 56 data bytes
64 bytes from 192.168.11.1: seq=0 ttl=63 time=9.606 ms
64 bytes from 192.168.11.1: seq=1 ttl=63 time=5.379 ms
64 bytes from 192.168.11.1: seq=2 ttl=63 time=3.442 ms
64 bytes from 192.168.11.1: seq=3 ttl=63 time=4.412 ms
--- 192.168.11.1 ping statistics ---
24 packets transmitted, 4 packets received, 0% packet loss

参考资料