Kubernetes 如何嗅探从本地主机到我的k8s群集(在本地运行)的流量?

Kubernetes 如何嗅探从本地主机到我的k8s群集(在本地运行)的流量?,kubernetes,network-programming,wireshark,Kubernetes,Network Programming,Wireshark,我有一个本地运行的minikube集群和一个pod,集群ip172.17.0.8 我用它来嗅那个吊舱里的流量 在pod中,当我ping www.google.com时。我可以在wireshark捕获中看到,ICMP请求发送到/来自: pod(172.17.0.8)谷歌服务器(部分IP) 我知道有一个中间步骤。我的macbook(群集主机)代表pod发出请求并接收发送到正确pod的响应 pod(172.17.0.8)群集主机(macbook)谷歌服务器(部分IP) 如何捕获pod和群集主机(如ma

我有一个本地运行的minikube集群和一个pod,集群ip
172.17.0.8

我用它来嗅那个吊舱里的流量

在pod中,当我ping www.google.com时。我可以在wireshark捕获中看到,ICMP请求发送到/来自:

pod(172.17.0.8)谷歌服务器(部分IP)

我知道有一个中间步骤。我的macbook(群集主机)代表pod发出请求并接收发送到正确pod的响应

pod(172.17.0.8)群集主机(macbook)谷歌服务器(部分IP)


如何捕获pod和群集主机(如macbook)之间的通信量?

我没有使用minikube或macbook,因此您的里程可能会有所不同,但让我们尝试解决这个问题

据我所见,POD通常由主机提供一个默认网关。换句话说,主机充当其承载的吊舱的路由器。我们怎么知道的?在K8s集群上运行Ubuntu映像(并安装iproute2)时,我得到以下路由表:

root@ubuntu:/# ip route sh
default via 10.244.2.1 dev eth0 
10.244.2.0/24 dev eth0 proto kernel scope link src 10.244.2.17
通过10.244.2.1查看
默认值
行?这就是主机提供的“路由器”。我们甚至可以查找它的mac地址:

root@ubuntu:/# cat /proc/net/arp 
IP address       HW type     Flags       HW address            Mask     Device
10.244.2.5       0x1         0x2         fa:26:3d:e1:10:f5     *        eth0
10.244.2.1       0x1         0x2         8e:f7:54:7b:15:51     *        eth0
因此,pod和internet之间的流量可能类似于NAT路由器后面主机的流量

pod跳这个舞,然后在学习“路由器”mac地址后,它将向外部服务器发送IP数据包,外部服务器的IP地址作为目的地,自己的IP地址作为源。这些数据包的目标MAC地址将是主机虚拟网卡的MAC地址。因此,在pod上执行的捕获将实际显示pod和主机之间的通信量,就像主机是路由器一样。一旦主机收到这些数据包,它可能会将它们放在您的案例中,并通过internet发送它们


因此,在主机上,如果您在
10.244.2.1
上捕获,您应该会看到与pod相同的流量。但是如果你在真正的面向互联网的界面上进行捕获,你可能会看到pod的流量通过NAT(即以你的真实IP地址作为源IP)。

我没有使用minikube或macbook,因此你的里程可能会有所不同,但让我们试着弄清楚这一点

据我所见,POD通常由主机提供一个默认网关。换句话说,主机充当其承载的吊舱的路由器。我们怎么知道的?在K8s集群上运行Ubuntu映像(并安装iproute2)时,我得到以下路由表:

root@ubuntu:/# ip route sh
default via 10.244.2.1 dev eth0 
10.244.2.0/24 dev eth0 proto kernel scope link src 10.244.2.17
通过10.244.2.1查看
默认值
行?这就是主机提供的“路由器”。我们甚至可以查找它的mac地址:

root@ubuntu:/# cat /proc/net/arp 
IP address       HW type     Flags       HW address            Mask     Device
10.244.2.5       0x1         0x2         fa:26:3d:e1:10:f5     *        eth0
10.244.2.1       0x1         0x2         8e:f7:54:7b:15:51     *        eth0
因此,pod和internet之间的流量可能类似于NAT路由器后面主机的流量

pod跳这个舞,然后在学习“路由器”mac地址后,它将向外部服务器发送IP数据包,外部服务器的IP地址作为目的地,自己的IP地址作为源。这些数据包的目标MAC地址将是主机虚拟网卡的MAC地址。因此,在pod上执行的捕获将实际显示pod和主机之间的通信量,就像主机是路由器一样。一旦主机收到这些数据包,它可能会将它们放在您的案例中,并通过internet发送它们

因此,在主机上,如果您在
10.244.2.1
上捕获,您应该会看到与pod相同的流量。但是,如果您在真正面向internet的界面上进行捕获,您可能会看到pod的流量通过NAT(即,以您的真实IP地址作为源IP)