采用 docker 相关测试

通过使用docker搭建网络隔离环境

docker里面的NAT往往采用的是端口限制锥形或者是主机限制锥形


在私网内的主机通信的方式
举例来说:
userA向服务器C发送打洞命令,服务器C进行打洞(会将报文:源A、目的地B,发送出去到B)routerB进行向routerA发送数据,但由于NAT(端口限制或者主机限制)锥形A没有向B实质上发送报文,因此,A会把B的请求过滤。此时A会再次向发送数据给B,由于B已经发送数据给A了,就会成功接收数据,建立连接。

综上所述,容器是通过NAT进行对docker0进行网络地址转化,转成eth0的地址与外网进行通信;
测试Flow_Collector
那么问题来了,如果是公网的流量能否到达私网?换句话说,公网能够请求到私网吗?docker容器能否采集到流量数据?
答案显然是不可以的,这也是NAT最大的缺点(通信的内容不多细说)。
因此,当我们在容器内部进行部署时,没有任何流量打印,他是出于完全网络隔离栈之中如下图所示:

docker inspect --format='{{.NetworkSettings.IPAddress}}' maltrail-centos7
通过这行命令,查找当前的网络ip地址
172.17.0.3
接下去就是ping 172.17.0.3

可以成功打印所抓取的流量

因此部署的Flow_Collector在网络隔离的环境之下可以成功获取流量,并且打印。
版权声明: 本文为 InfoQ 作者【菜鸟小sailor 🐕】的原创文章。
原文链接:【http://xie.infoq.cn/article/8fe5ea18656e4831bdecd76f4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论