Docker macvlan host to container 互通

使用通常的方式创建macvlan,容器关联macvlan网络,网内其他主机都可以互通访问,但唯独host和container是无法互通的,这是并不是一个错误,而是macvlan特性决定的,网上能搜到解决方法,在这里记录备忘。

解决方案

由于流量无法回传而导致无法互通,所以解决方案就是在host再创建一个macvlan网络,使用这个接口当作一个路由,这样就可以实现网络互通了。

ip link add macvlan-router link eth0 type macvlan mode bridge
ip addr add 192.168.10.33/32 dev macvlan-router
ip link set macvlan-router up
ip route add 192.168.10.32/28 dev macvlan-router

静态地址设置为前一篇文章内--aux-address设置的ip。
经过上面设置host和container就可以互通了,但是主机重启后设置会丢失,看网上有说可以写到/etc/network/interfaces里面,但是我用的arch,并没有这个文件,使用下面的方式也是可以的。

使用NetworkManager设置

nmcli con add con-name macvlan-router type macvlan ifname macvlan-router ip4 192.168.10.33/32 dev eth0 mode bridge
nmcli con mod macvlan-router +ipv4.routes "192.168.10.32/28"

以上命令中的网络接口、ip请根据实际情况进行调整

https://kcore.org/2020/08/18/macvlan-host-access/
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_host_configuration_and_guest_installation_guide/app_macvtap

你可能感兴趣的:(Docker macvlan host to container 互通)