组建一个由三个服务构成的架构和一个虚拟桥接网络,将这三个服务连接到它上面。我想让其中一个容器能够听取虚拟网络中的所有流量(混杂模式)。这可能吗?我已经尝试了几乎所有方法,但似乎都没有起作用。
我尝试过以下方法:
- 给容器完全权限。 - 将容器的eth0接口设置为混杂模式(ifconfig eth0 promisc)。 - 重新启动容器内的网络管理器。 - 从主机机器上以混杂模式设置相对于容器的veth。 - 修改pipework脚本中macvlan配置中的模式从“bridge”改为“passthru”。 - 在docker-compose文件的网络属性中将容器设置为网关。
尽管许多尝试结果都导致容器的eth0接口处于“认为”自己在混杂模式下,实际上ifconfig和syslog(来自主机)都显示是这样,但容器仍然只看到自己的流量。
我正在使用Docker 1.11,容器内的基础镜像是Ubuntu 14.04:latest。
以下是我的docker-compose文件:
docker-compose.yml
提前感谢!
我尝试过以下方法:
- 给容器完全权限。 - 将容器的eth0接口设置为混杂模式(ifconfig eth0 promisc)。 - 重新启动容器内的网络管理器。 - 从主机机器上以混杂模式设置相对于容器的veth。 - 修改pipework脚本中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"