docker macvlan虚拟化网络与宿主机通信问题解决——筑梦之路

默认情况下各个macvlan之间可以通讯,但是不能与宿主机进行通讯!!

主要原因:为了安全而禁止互通

如宿主机ping容器的ip,尽管他们属于同一网段,但也是ping不通的,反过来也是。

这里用两个实例来说明如何解决这个问题。

实例一

环境说明:

宿主机: 10.0.1.80
容器:10.0.1.2
虚拟 IP(做路由实现通信):10.0.1.8
宿主机物理网卡名称:ens33

# 添加一个虚拟接口桥接到物理网卡
ip link add macvlan-proxy link ens33 type macvlan mode bridge

# 给虚拟接口配置ip
ip addr add 10.0.1.8/32 dev macvlan-proxy

# 启用虚拟接口
ip link set macvlan-proxy up

# 添加到容器网络的静态路由规则
ip route add 10.0.1.2/32 dev macvlan-proxy

此时,就可以实现宿主机和容器通信了

使用 ifconfig 查看是否有 macvlan-proxy 的网卡出现。
使用 route -n 查看是否有相关路由出现
10.0.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 macvlan-proxy
使用 ping 直接测试

 实例二

环境说明:

宿主机网络:192.168.100.100

容器网络:172.20.0.0/16

虚拟IP:172.20.1.2/16

宿主机物理网卡:ens32


ip link add macvlan-proxy link ens32 type macvlan mode bridge

ip addr add 172.20.1.2/16 dev macvlan-proxy

ip link set macvlan-proxy up

ip route add 172.20.1.2/16 dev macvlan-proxy

此处容器网络和宿主机不同网段,宿主机通过虚拟IP和容器网络进行通信

另一种方式:

环境说明:

宿主机网络:192.168.100.100

容器网络:172.20.0.0/16

虚拟IP:192.168.100.110/32

宿主机物理网卡:ens32


ip link add macvlan-proxy link ens32 type macvlan mode bridge

ip addr add 192.168.100.110/32 dev macvlan-proxy

ip link set macvlan-proxy up

ip route add 172.20.1.2/16 dev macvlan-proxy

参考资料:

解决Docker macvlan网络与宿主机通讯问题_docker macvlan无法ping通网关_不会拯救世界的SuperMan的博客-CSDN博客

macvlan 网络 docker 容器与宿主机通信 - 运维学习记录

猜你喜欢

转载自blog.csdn.net/qq_34777982/article/details/130736402