组成一个 3 服务架构和一个虚拟桥接网络,三个服务连接在该网络上。我希望其中一个容器能够监听虚拟网络中的所有流量(混杂模式)。可能吗?我几乎尝试了所有方法,但似乎没有任何效果。
我试过的:
- 授予容器完全权限
- 将容器 eth0 接口设置为混杂(ifconfig eth0 promisc)
- 重启容器内的网络管理器
- 从主机以混杂模式设置相对于容器的 veth
- 从 pipework 脚本中将 macvlan 配置中的模式从“bridge”修改为“passthru”
- 在 docker-compose 文件的网络属性中将容器设置为网关
上述许多尝试导致容器的 eth0 接口“认为”它处于混杂模式,实际上 ifconfig 和 syslog(来自主机)都说它是,但容器仍然只看到自己的流量。
我正在使用 Docker 1.11,容器内的基本映像是 Ubuntu 14.04:latest
下面列出了我的 docker-compose 文件在此先感谢
码头工人-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"