场景是构建一个
watcher
能够监听给定网络流量的容器
docker-compose
服务组合除此之外,我必须有可能
观察者
直接将数据包发送到专用服务。
我发现了
host
联网
观察者
基本上就是我要找的(包括可能有太多的关于Docker引擎管理的所有网络设备的信息)为了将通信直接指向任何服务,它似乎需要使用
link
设置-与
主办
网络。
当前
docker-compose.yaml
(完整配置可在
https://github.com/ohader/docker-watcher-demo
)
version: "3.7"
services:
watcher:
build:
context: ./custom
network_mode: host
entrypoint: "tcpdump -i any"
first:
build:
context: ./custom
networks:
default:
ipv4_address: 172.25.0.11
entrypoint: "sleep infinity"
second:
build:
context: ./custom
networks:
default:
ipv4_address: 172.25.0.22
entrypoint: "ping first"
networks:
default:
ipam:
driver: default
config:
- subnet: "172.25.0.0/16"
基本上
second
服务正在ping
first
服务这个
观察者
可以通过使用
network_mode: host
.
从例如。
ping first
不可能从内部
观察者
,因此
观察者
正在使用例如。
ping 172.25.0.11
相反。
问题
-
有没有更好的方法让“物理”访问发送到动态组合网桥的所有包
br-*
使用
tcpdump
(目前通过使用
主办
网络连接)?
-
有没有办法结合
主办
和
bridge
联网,例如使用不同的驱动程序,甚至自定义插件?我调查了司机
macvlan
和
ipvlan
(L2,实验功能打开
但无法监视所有组合服务的流量。
提前感谢任何反馈或提示。我用
overlay
对于我的场景来说,这感觉有点太多了(没有使用其中的大部分功能)。