【问题标题】:Docker Container's network interface in promiscuous modeDocker Container 在混杂模式下的网络接口
【发布时间】:2016-10-19 11:37:05
【问题描述】:

组成一个 3 服务架构和一个虚拟桥接网络,三个服务连接在该网络上。我希望其中一个容器能够监听虚拟网络中的所有流量(混杂模式)。可能吗?我几乎尝试了所有方法,但似乎没有任何效果。

我尝试过的:

  • 授予容器完全权限
  • 将容器 eth0 接口设置为混杂(ifconfig eth0 promisc)
  • 重启容器内的网络管理器
  • 从主机以混杂模式设置相对于容器的 veth
  • 在管道脚本的macvlan配置中将模式从“bridge”修改为“passthru”
  • 在 docker-compose 文件的网络属性中将容器设置为网关

上述许多尝试导致容器的 eth0 接口“认为”它处于混杂模式,事实上 ifconfig 和 syslog(来自主机)都说它是,但容器仍然只看到自己的流量。

我使用的是 Docker 1.11,容器内的基础镜像是 Ubuntu 14.04:latest

下面列出了我的 docker-compose 文件 提前致谢

docker-compose.yml

version: '2'

networks:

  snort_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.19.0.0/24
          gateway: 172.19.0.3

services:

   mysql:
     build:
       context: .
       dockerfile: MySql/MySqlFile
     environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
     networks:
       snort_net:
         ipv4_address: 172.19.0.2

   snort:
     build:
       context: .
       dockerfile: Snort/SnortFile
     depends_on:
       - snorby
     env_file:
       - Snort/snort_variables.env
     networks:
       snort_net:
         ipv4_address: 172.19.0.3
     expose:
       - "80"
       - "21"
     ports:
       - "10100:80"
       - "10101:80/udp"
       - "21:21"
     cap_add:
       - NET_ADMIN
     privileged: true


   snorby:
     build:
       context: .
       dockerfile: Snorby/SnorbyFile
     depends_on:
       - mysql
     env_file:
       - Snorby/snorby_variables.env
     networks:
       snort_net:
         ipv4_address: 172.19.0.4
     ports:
       - "3000:3000"

【问题讨论】:

    标签: docker networking containers promiscuous-mode


    【解决方案1】:

    我可以在创建容器时使用以下命令,因为我决定关闭以监听所有流量

    administrator@gitlabrunner-prod01:~$ docker run --rm --privileged -t -d -p 23:22 --name ubuntu ubuntu
    

    【讨论】:

      【解决方案2】:

      容器有效地附加到虚拟交换机;除了(a)到容器的单播流量或(b)docker网络上的广播/多播流量之外,它永远不会看到任何东西。如果您将其设置为网络网关,它还会看到从其他容器发送到网络外目的地的任何流量(但仍然看不到同一网络上其他容器之间的通信)。

      如果您使用的是 Linux 网桥而不是 macvlan,您应该能够将 tcpdump 附加到 docker 网桥并获得您想要的(通过在主机上运行它,或者通过在带有 @987654322 的容器中运行它@)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2020-05-18
        • 1970-01-01
        • 2014-01-02
        • 2020-04-23
        • 1970-01-01
        相关资源
        最近更新 更多