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

0x03

保存网络设置
编辑vi /etc/rc.local

sudo ip link add macvlan2 link eth0 type macvlan mode bridge
sudo ip addr add 192.168.10.10 dev macvlan2
sudo ip link set macvlan2 up
sudo ip route add 192.168.10.6 dev macvlan2
sleep 5
sudo mount -t nfs -o nosuid,noatime,nodiratime,nodev,noexec,rsize=131072,wsize=131072 -o tcp 192.168.10.100:/mnt/user/Media /mnt/disk0
sudo service docker restart