docker 网卡 隔离

您好,我的docker容器内多网卡间可以ping通,即使这些网卡不在一个网段,我想请问一下您如何隔离同一个docker容器内的不同网卡,让它们不能互ping?

您可以使用iptables来隔离不同网卡之间的通信,您可以使用iptables的FORWARD链来阻止不同网卡之间的通信,例如:
iptables -A FORWARD -i eth0 -o eth1 -j DROP
这条命令会阻止从eth0发出的数据包到达eth1,从而实现不同网卡之间的隔离。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7625075
  • 你也可以参考下这篇文章:docker使用总结
  • 除此之外, 这篇博客: docker的四种网络模式(Bridge、Host、Container、None 网络模式),自定义网络(创建自定义网桥、使两个不同网桥的容器通信、跨主机容器容器通讯等)中的 1、跨主机的两台虚拟机都需要两个网卡,其中一个打开网卡的混杂模式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    server1:
    在这里插入图片描述
    添加网卡配置文件:

    [root@server1 network-scripts]# pwd
    /etc/sysconfig/network-scripts
    [root@server1 network-scripts]# vim ifcfg-eth1 
    [root@server1 network-scripts]#  cat ifcfg-eth1
    BOOTPROTO=none
    DEVICE=eth1
    ONBOOT=yes
    [root@server1 network-scripts]# ifup eth1		#启动网卡
    

    server2:
    在这里插入图片描述
    添加网卡配置文件:

    [root@server2 ~]# cd /etc/sysconfig/network-scripts/
    [root@server2 network-scripts]# vim ifcfg-eth1
    [root@server2 network-scripts]# cat ifcfg-eth1
    BOOTPROTO=none
    DEVICE=eth1
    ONBOOT=yes
    [root@server2 network-scripts]# ifup eth1
    

    macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术。其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,一块网卡上配置多个 MAC 地址(即多个 interface),每个interface可以配置自己的IP,Docker的macvlan网络实际上就是使用了Linux提供的macvlan驱 动。

    因为多个MAC地址的网络数据包都是从同一块网卡上传输,所以需要打开网卡的混杂模式ip link set eth0 promisc on。

    • 打开server0和server1的eth1网卡的混杂模式
    [root@server1 network-scripts]# ip link set eth1 promisc on		#在server1上打开网卡eth0的混杂模式
    
    [root@server2 network-scripts]# ip link set eth1 promisc on
    

    看到PROMISC,表示成功
    在这里插入图片描述
    注意 : 如果不开启混杂模式,会导致macvlan网络无法访问外界,具体在不使用vlan时,表现为无法ping通路由,无法ping通同一网络内其他主机。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^