组成3服务架构和虚拟桥接网络,其中附加了三个服务。我希望其中一个容器能够侦听虚拟网络中的所有流量(混杂模式)。可能吗?我几乎尝试了所有东西,但似乎没有任何工作。
我尝试了什么:
上面的许多尝试导致容器的eth0接口“认为”它处于混杂模式,实际上ifconfig和syslog(来自主机)都说它是,但容器仍然只看到自己的流量。 / p>
我正在使用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"
答案 0 :(得分:1)
容器有效地连接到虚拟交换机;除了(a)单播到集装箱的流量或(b)在docker网络上的广播/多播流量之外,它永远不会看到任何其他内容。如果您将其设置为网络网关,它还会看到从其他容器发送到网络外部目的地的任何流量(但仍然看不到同一网络上其他容器之间的通信)。
如果您使用的是Linux网桥而不是macvlan,那么您应该能够将tcpdump
连接到docker网桥并获得所需内容(通过在主机上运行它,或者在容器中运行它--net=host
)。
答案 1 :(得分:0)
当我决定关闭以侦听所有流量时,我能够在创建容器时使用以下命令运行
administrator@gitlabrunner-prod01:~$ docker run --rm --privileged -t -d -p 23:22 --name ubuntu ubuntu