再度 kube-proxy の NAT を追いかける (たぶんわかった)

4686 ワード

もうちょっと試してたらしっぽつかめた気がする。

これが tcpdump で、src port は 53152。

15:24:12.022255 azvb3c61c3cba9 In  IP 172.16.10.26.53152 > 10.0.0.10.53: 21277+ A? www.microsoft.com. (35)
15:24:12.022308 eth0  Out IP 172.16.10.26.53152 > 172.16.10.42.53: 21277+ A? www.microsoft.com. (35)
15:24:12.022311 enP41928s1 Out IP 172.16.10.26.53152 > 172.16.10.42.53: 21277+ A? www.microsoft.com. (35)
15:24:12.025831 eth0  In  IP 172.16.10.42.53 > 172.16.10.26.53152: 21277 4/0/0 CNAME www.microsoft.com-c-3.edgekey.net., CNAME www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net., CNAME e13678.dscb.akamaiedge.net., A 23.195.153.175 (340)
15:24:12.025866 azvb3c61c3cba9 Out IP 10.0.0.10.53 > 172.16.10.26.53152: 21277 4/0/0 CNAME www.microsoft.com-c-3.edgekey.net., CNAME www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net., CNAME e13678.dscb.akamaiedge.net., A 23.195.153.175 (340)

nslookup のすぐ後に conntrack -L | grep 10.0.0.10 したらこれが出た。
src port が 53152 なので多分これによって SNAT されてると思う。
ただこれが数秒で消えるので見えなかったんだと思う、たぶん。

$ kubectl exec kube-proxy-kg9vc -n kube-system -- conntrack -L | grep 10.0.0.10
udp      17 29 src=172.16.10.26 dst=10.0.0.10 sport=53152 dport=53 src=172.16.10.42 dst=172.16.10.26 sport=53 dport=53152 mark=0 use=1
conntrack v1.4.5 (conntrack-tools): 313 flow entries have been shown.

Linux 側の説明してる資料をちゃんとまた探したい。。