Docker macvlan网络模式下容器与宿主机互通

0x00

一般在macvlan模式下同网段的其他机器可以和容器互通,但宿主不能和容器互通,这是在macvlan模式设计的时候为了安全而禁止了宿主机和容器直接通信。

如果想要实现互通,有个曲线救国的方法,就是macvlan与macvlan之间可以互通,只需要在宿主机再创建一个macvlan网络,然后修改路由,让数据经过这个macvlan达到互通的目的。

0x01

假设现有网段为192.168.1.0/24的网络:

名字 ip 接口
宿主机 192.168.1.10 eth0
容器 192.168.1.20 macvlan

建立一个名为macvlan2macvlan接口,并分配一个ip:

名字 ip 接口
macvlan2 192.168.1.15 macvlan

命令:

ip link add macvlan2 link eth0 type macvlan mode bridge
ip addr add 192.168.1.15 dev macvlan2
ip link set macvlan2 up

修改路由,让宿主机到容器(192.168.1.20)的数据经过macvlan2:

ip route add 192.168.1.20 dev macvlan2

0x02

宿主机 访问 容器的ip:192.168.1.20

容器 访问 宿主机ip:192.168.1.15


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!