莘县聊城做网站,品牌建设的好处,wordpress 下载超链接,网站建设多少钱?容器网络简单理解
容器拥有n多张veth网卡与一张docker0网卡 docker 五种网络
bridge 默认网络#xff0c;Docker启动后创建一个docker0网桥#xff0c;默认创建的容器也是添加到这个网桥中。host 容器不会获得一个独立的network namespace#xff0c;而是与宿主机共用一个…容器网络简单理解
容器拥有n多张veth网卡与一张docker0网卡 docker 五种网络
bridge 默认网络Docker启动后创建一个docker0网桥默认创建的容器也是添加到这个网桥中。host 容器不会获得一个独立的network namespace而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息而是使用宿主机的。容器除了网络其他都是隔离的。none 获取独立的network namespace但不为容器进行任何网络配置需要我们手动配置。container 与指定的容器使用同一个network namespace具有同样的网络配置信息两个容器除了网络其他都还是隔离的。自定义网络 与默认的bridge原理一样但自定义网络具备内部DNS发现可以通过容器名容器之间网络通信。
默认都为bridge网卡
容器内为什么能通baidu 容器内虚拟网卡网卡——》容器网关宿主机虚拟网卡——》docker0网卡——》物理网卡 两种情况
我做了一个实验发现两种情况 第一种情况容器会走vet网卡在到docker0网卡所以在两张网卡上都能抓到对应的数据包。 第二种情况在docker0网卡上抓不到流量只能在对应的veth网卡上才能抓到流量 我发现docker0上并不能抓到容器的流量 在使用traceroute查看路由后我发现容器在出网关后到了192.168.68.2该ip为物理机物理网卡网关意思是该容器从容器虚拟网关出来后直接到了物理机网关跳过了docker0网卡所以使用tcpdump -i docker0抓取该容器流量是抓不到的 为什么会出现这总问题在查看iptables规则时我发现在docker创建时可能会添加一些规则
iptables -t nat -S-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE这条规则的意思是如果docker0收到来自172.17.0.0/16这个网段的外出包docker0会交给MASQUERADE处理而MASQUERADE处理方式是将包源地址替换成host地址发出 所以跳过docker0网卡直接到物理网卡的原因是iptables规则中有该网卡直接nat出去的规则
基础信息收集
基础信息
观察其状态映射端口
docker container ls
docker ps详细信息
检查容器详细信息挂载的数据卷运行时间mac地址等信息
docker inspect ID资源使用
检查容器资源使用情况
docker stats ID进程信息
容器进程信息
docker top ID文件
容器文件信息
docker diff ID | grep A
# A -add
# D -delete
# C -change应急处置
构建镜像保留证据检查异常暂停容器内进程断开容器网络
构建镜像
docker commit -m说明 ID check08:1.0暂停容器中的进程包括后台守护进程等文件系统运行状态不变
docker pause ID # 暂停
docker unpause ID # 恢复定位容器
容器通过docker0网卡进行通信可以通过tcpdump指定网卡找到异常网络连接然后进一步关联容器。 情况一ids或其他安全设备告警某台linux上出现了恶意连接该linux主机上部署了多个容器该如何排查是那个容器出现了问题
在宿主机上通过netstat -an 是看不到容器内的网络连接的而一台台进入容器查看网络连接排查效率很慢而且很多容器没有安装net-tools工具没有netstat工具。
抓取流量
情况一直接通过docker0网卡进行tcpdump流量抓取通过安全设备给出的IP地址定位容器。 情况二docker0网卡无法抓取到只能一个一个网卡进行排查。
抓取docker0网卡流量
tcpdump -i docker0 dst host xx.xx.xx.xx -v -w docker.pcap抓取容器对应的veth流量
iptables -t nat -S # 查看对应网卡tcpdump -i br-28b6e6930d36 dst host 172.29.246.156 -v -w br-28b6e6930d36.pcap
tcpdump -i br-28b6e6930d36 dst host 172.29.246.156 -v定位容器
利用docker inspect -f匹配模块文件匹配对应容器
docker inspect -f {{.Name}}{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} $(docker ps -aq) | grep 172.19.0.2docker container ls -a | grep 82-pte-lamp-1开源容器扫描器
https://github.com/chaitin/veinmind-tools