一、背景介绍
在docker+calico环境下,分析数据包都经过了哪些iptables规则链。
分析目的:
- 了解数据包的走向
- 为接下来重点分析kubernetes+calico+docker环境下,数据包的走向打下基础
本文分析使用iptables规则链,也就是分析数据包在网络层是如何走的,ebtables规则链暂不考虑。
主要使用nat表,filter表。
二、环境介绍
2.1 物理环境介绍
系统类型 | IP | role | cpu | memory | hostname |
---|---|---|---|---|---|
CentOS 7.4.1708 | 172.16.91.195 | master | 4 | 2G | master |
CentOS 7.4.1708 | 172.16.91.196 | worker | 2 | 1G | slave1 |
CentOS 7.4.1708 | 172.16.91.197 | worker | 2 | 1G | slave2 |
2.2 运行服务介绍
-
docker 版本介绍
-
calico 版本介绍
-
etcd 版本介绍
-
ip路由转发规则要开启
- 经测试,如果不开启的话,calico集群的其他节点不当访问当前节点上的容器
- 不开启的话,本节点访问当前节点上的容器是没有问题的。
- sysctl -a | grep net.ipv4.ip_forward 如果为1,说明开启了。
- vim /etc/sysctl.conf
- 添加net.ipv4.ip_forward = 1
- sysctl -p (保存即可了)
三、准备工作
3.1 设置iptables调试日志(master节电,slave1节点)
步骤一 设置iptables规则
iptables -t raw -A OUTPUT -p icmp -j LOG
iptables -t raw -A PREROUTING -p icmp -j LOG
iptables -t raw -A OUTPUT -p icmp -j TRACE
iptables -t raw -A PREROUTING -p icmp -j TRACE
备注:
- 不知道为什么,我这里必须同时设置LOG,TRACE这两个动作,调式日志才能打印出来
- 重启虚拟机后,这些规则会消失
步骤二
设置日志存储路径
vim /etc/rsyslog.conf
kern.* /var/log/iptables.log
步骤三
重启rsyslog服务
service rsyslog status
service rsyslog restart
3.2 镜像准备
-
创建Dockerfile
vim Dockerfile
FROM nginx RUN apt-get update RUN apt-get install -y iputils-ping iproute2 wget
-
构建镜像
docker build -t mybusybox .
3.3 创建测试容器
- 创建calico网络net1(master节点)
docker network create --driver calico --ipam-driver calico-ipam net1
- 创建容器(master节点)
docker run --net net1 --name web1 -itd mybusybox docker run --net net1 --name web2 -itd mybusybox
- 创建容器(slave1节点)
docker run --net net1 --name web3 -itd mybusybox
四、测试
下图展示了iptables规则链的方向:
我的困惑是,在calico+docker环境下,数据包是如何在网卡之间进行通信的,方向是什么?
所以才有了下面的场景测试,希望通过这些测试,了解数据包的走向。
为什么,要了解一下呢?
好多上层应用功能的实现,底层几乎都是
iptables规则链
来实现的。如:
- kubernetes中的networkpolicy
- calico中的profile
- kubernetes中的kube-proxy的原理
如果对iptables,ipset
有了深入的了解,假如线上生产环境出了相关问题,知道如何去排查。
接下来,从以下场景进行测试:
- 容器与宿主机之间的通信
- 容器与calico集群中非宿主机之间的通信
- 同节点上,不同容器之间的通信
- 跨节点环境下,不同容器之间的通信
4.1 场景一: 从宿主机到容器
- 展示图:
- ping -c 1 172.20.219.80
- 查看ens33, 以及web1容器对应的网卡
- tai -f /var/log/iptables
调试日志,很多,只留下nat,filter表日志,其他表日志删除。
Dec 1 03:35:44 localhost kernel: TRACE: nat:OUTPUT:rule:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF PROTO8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-OUTPUT:rule:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-fip-dnat:return:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708CMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-OUTPUT:return:2 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:OUTPUT:policy:3 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF PROE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: filter:OUTPUT:rule:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF PRPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-OUTPUT:rule:2 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 MP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: filter:OUTPUT:policy:2 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:POSTROUTING:rule:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DF TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-POSTROUTING:rule:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=4570ICMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-fip-snat:return:1 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708CMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-POSTROUTING:rule:2 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=4570ICMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-nat-outgoing:return:2 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=4TO=ICMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:cali-POSTROUTING:return:3 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45O=ICMP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: nat:POSTROUTING:policy:3 IN= OUT=calid55c454dfaa SRC=172.16.91.225 DST=172.20.219.80 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45708 DP TYPE=8 CODE=0 ID=3584 SEQ=1 UID=0 GID=0
Dec 1 03:35:44 localhost kernel: TRACE: filter:INPUT:rule:1 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DST=172.16.91.225 LE00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-INPUT:rule:2 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DST=172.16.91.2OS=0x00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-wl-to-host:rule:1 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DST=172.16=84 TOS=0x00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-from-wl-dispatch:rule:10 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DST225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-from-wl-dispatch-d:rule:1 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DS.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
Dec 1 03:35:44 localhost kernel: TRACE: filter:cali-fw-calid55c454dfaa:rule:1 IN=calid55c454dfaa OUT= MAC=d6:c3:32:3b:a6:bb:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.80 DS.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=29622 PROTO=ICMP TYPE=0 CODE=0 ID=3584 SEQ=1 MARK=0x4000000
将上面的iptables 日志,转换成下面的流向图:
iptables日志格式说明
https://blog.csdn.net/liukuan73/article/details/78635655
- 总结(从宿主机到容器的数据包流向图):
- 从
宿主机到容器
走的是OUTPUT ---> POSTROUTING -
容器给宿主机
的答复,走的是 INPUT链 - 只能是主链之间的跳转,不能是子链调主链
4.2 场景二:从容器到宿主机
-
数据包流向图:
-
docker exec -it web1 ping -c 1 172.16.91.225
tail -f iptables.log
Dec 2 03:10:15 master kernel: TRACE: nat:PREROUTING:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:cali-PREROUTING:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:cali-fip-dnat:return:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:cali-PREROUTING:return:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:PREROUTING:rule:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:DOCKER:return:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: nat:PREROUTING:policy:3 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:INPUT:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-INPUT:rule:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-wl-to-host:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-from-wl-dispatch:rule:3 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-from-wl-dispatch-2:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:3 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:4 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-pro-net1:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x4000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-pro-net1:rule:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x5000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:5 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x5000000
Dec 2 03:10:15 master kernel: TRACE: filter:cali-wl-to-host:rule:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x5000000
Dec 2 03:10:15 master kernel: TRACE: nat:INPUT:policy:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45306 DF PROTO=ICMP TYPE=8 CODE=0 ID=12 SEQ=1 MARK=0x5000000
Dec 2 03:10:15 master kernel: TRACE: filter:OUTPUT:rule:1 IN= OUT=cali282b0776936 SRC=172.16.91.225 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=20759 PROTO=ICMP TYPE=0 CODE=0 ID=12 SEQ=1
Dec 2 03:10:15 master kernel: TRACE: filter:cali-OUTPUT:rule:2 IN= OUT=cali282b0776936 SRC=172.16.91.225 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=20759 PROTO=ICMP TYPE=0 CODE=0 ID=12 SEQ=1
Dec 2 03:10:15 master kernel: TRACE: filter:OUTPUT:policy:2 IN= OUT=cali282b0776936 SRC=172.16.91.225 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=20759 PROTO=ICMP TYPE=0 CODE=0 ID=12 SEQ=1
-
将上面的日志,转换成下面的流向图
总结(从容器到宿主机数据包流向图)
- 从
容器到宿主机
走的是路线是: PREOUTING ---> INPUT -
宿主机 答复 容器
的 走的路线是: OUTPUT
4.3 场景三:从容器访问calico集群中的非宿主机
-
数据包流向图:
-
docker exec -it web1 ping -c 1 172.16.91.226
tail -f iptables.log
master节点上iptables的日志
Dec 2 03:38:09 master kernel: TRACE: nat:PREROUTING:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-PREROUTING:rule:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-fip-dnat:return:1 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-PREROUTING:return:2 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: nat:PREROUTING:policy:3 IN=cali282b0776936 OUT= MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:FORWARD:rule:1 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-FORWARD:rule:1 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-from-wl-dispatch:rule:3 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-from-wl-dispatch-2:rule:1 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:3 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:4 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-pro-net1:rule:1 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x4000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-pro-net1:rule:2 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-fw-cali282b0776936:rule:5 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: filter:cali-FORWARD:rule:3 IN=cali282b0776936 OUT=ens33 MAC=4a:0c:7a:74:5d:26:ee:ee:ee:ee:ee:ee:08:00 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: nat:POSTROUTING:rule:1 IN= OUT=ens33 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-POSTROUTING:rule:1 IN= OUT=ens33 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-fip-snat:return:1 IN= OUT=ens33 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-POSTROUTING:rule:2 IN= OUT=ens33 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: nat:cali-nat-outgoing:rule:1 IN= OUT=ens33 SRC=172.20.219.81 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1 MARK=0x5000000
Dec 2 03:38:09 master kernel: TRACE: filter:FORWARD:rule:1 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 master kernel: TRACE: filter:cali-FORWARD:rule:2 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 master kernel: TRACE: filter:cali-to-wl-dispatch:rule:3 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 master kernel: TRACE: filter:cali-to-wl-dispatch-2:rule:1 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 master kernel: TRACE: filter:cali-tw-cali282b0776936:rule:1 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
slave1节点上iptables的日志
Dec 2 03:38:09 slave1 kernel: TRACE: nat:PREROUTING:rule:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:cali-PREROUTING:rule:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:cali-fip-dnat:return:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:cali-PREROUTING:return:2 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:PREROUTING:rule:2 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:DOCKER:return:2 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:PREROUTING:policy:3 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:INPUT:rule:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-INPUT:rule:3 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-INPUT:rule:4 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-from-host-endpoint:return:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-INPUT:return:6 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:INPUT:policy:2 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: nat:INPUT:policy:1 IN=ens33 OUT= MAC=00:0c:29:5e:b2:88:00:0c:29:2e:0f:7b:08:00 SRC=172.16.91.225 DST=172.16.91.226 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=13891 DF PROTO=ICMP TYPE=8 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:OUTPUT:rule:1 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-OUTPUT:rule:3 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-OUTPUT:rule:4 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-to-host-endpoint:return:1 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:cali-OUTPUT:return:6 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
Dec 2 03:38:09 slave1 kernel: TRACE: filter:OUTPUT:policy:2 IN= OUT=ens33 SRC=172.16.91.226 DST=172.16.91.225 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=45474 PROTO=ICMP TYPE=0 CODE=0 ID=17 SEQ=1
-
将上面的日志,转换成下面的流向图
总结(从容器到宿主机数据包流向图)
- 从
web1容器到slave1宿主机
走的是路线是:- master节点
- PREROUTING ---> FORWARD ---> POSTROUTING
- slave1节点上
- PREROUTING ---> INPUT
- master节点
-
slave1宿主机 答复 web1容器
的 走的路线是:- slave1节点上
- OUTPUT
- master节点上
- FORWARD
- slave1节点上
4.4 场景四:从calico集群中非宿主机访问容器
-
数据包流向图:
-
ping -c 1 172.20.219.81
默认情况下,是ping不通的
-
将上面的日志,转换成下面的流向图
总结(从容器到宿主机数据包流向图)
- 从
slave1宿主机 到 web1容器
走的是路线是:- slave1节点上
- OUTPUT ---> POSTROUTING
- master节点上
- PREROUTING ---> FORWARD
- slave1节点上
- 解析下,为什么默认情况下,slave1节点ping不同master节点上的web容器
默认情况下profile策略里规定了进入容器的规则里,含有标签net1,也就是同一个calico网络里的容器才能访问,而slave1节点不属于net1网络,因此进不去。
下面从iptables规则链里查看原因?
master节点上,查看iptables的日志,如下:
Dec 2 04:20:14 master kernel: TRACE: nat:PREROUTING:rule:1 IN=ens33 OUT= MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: nat:cali-PREROUTING:rule:1 IN=ens33 OUT= MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: nat:cali-fip-dnat:return:1 IN=ens33 OUT= MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: nat:cali-PREROUTING:return:2 IN=ens33 OUT= MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: nat:PREROUTING:policy:3 IN=ens33 OUT= MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:FORWARD:rule:1 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-FORWARD:rule:2 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-to-wl-dispatch:rule:3 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-to-wl-dispatch-2:rule:1 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-tw-cali282b0776936:rule:3 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-tw-cali282b0776936:rule:4 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-pri-net1:return:3 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
Dec 2 04:20:14 master kernel: TRACE: filter:cali-tw-cali282b0776936:rule:6 IN=ens33 OUT=cali282b0776936 MAC=00:0c:29:2e:0f:7b:00:0c:29:5e:b2:88:08:00 SRC=172.16.91.226 DST=172.20.219.81 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=21102 DF PROTO=ICMP TYPE=8 CODE=0 ID=2916 SEQ=1
我们重点看下filter表里的规则链
profile文件中source属性里的tag 是由ipset模块来控制的
可以通过删除tag,添加tag来观察不同之处
4.5 场景五:同节点上,不同容器之间的访问
-
数据包流向图:
-
docker exec -it web1 ping -c 1 172.20.219.84
tail -f iptables.log
日志太多了,就不贴了。-
将上面的日志,转换成下面的流向图
总结(从容器到宿主机数据包流向图)
- 从
web1容器到web2容器
走的是路线是:- PREROUTING ---> FORWARD ---> POSTROUTING
-
web2容器 答复 web1容器
的 走的路线是:- FORWARD
4.6 场景六:跨节点,容器间互相访问
-
数据包流向图:
-
docker exec -it web1 ping -c 1 web3
tail -f iptables.log
日志太多,不上传了。-
将上面的日志,转换成下面的流向图
总结(从容器到宿主机数据包流向图)
- master节点上 从
web1容器到web3容器
走的是路线是:- PREROUTING ---> FORWARD ---> POSTROUTING
- FORWARD
- slave1节点上 走的路线是:
- PREROUTING ---> FORWARD ---> POSTROUTING
- FORWARD