Docker Container的networking接口处于混杂模式

组成一个3个服务架构和一个虚拟桥接networking,在这个networking上连接三个服务。 我希望其中一个容器能够监听虚拟networking中的所有stream量(混杂模式)。 可能吗? 我已经尝试几乎所有东西,但似乎没有任何工作。

我试过了:

  • 给容器充分的特权
  • 将容器eth0接口设置为混杂(ifconfig eth0 promisc)
  • 重新启动容器内的networkingpipe理器
  • 从主机上以混杂模式设置容器相对于容器
  • 在pipe道脚本的macvlanconfiguration中将模式从“网桥”修改为“passthru”
  • 将容器设置为docker-compose文件的networking属性中的网关

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

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

下面列出了我的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" 

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

如果您使用的是Linux网桥而不是macvlan,则应该能够将tcpdump附加到docker网桥并获取所需内容(通过在主机上运行它,或者通过在具有--net=host的容器中运行它)。