工具🔧:

  1. tcpdump;
  2. telnet;
  3. ifconfig;
  4. iptables
  5. conntrack

另: bridge命令 brctl;

telnet+tcpdump抓包

做法: ifconfig查看docker0和宿主机对应的网卡,宿主机ping www.baidu.com获得baidu的ip(36.152.44.96), 然后进入一个docker容器之后telnet 36.152.44.96; 同时宿主机上tcpdump -i ens33 host 36.152.44.96抓包


附: docker内部安装telnet:

  1. apt-get update
  2. ​apt-get install telnet

tcpdump.png


iptables 显示nat表对应的地址转发

关于iptables四表五链这里就不展开了,详情可以参见这里:iptables

iptables -t nat -nvL: (-t: table:nat; -nvL: name, verbose, show-List)

iptables.png

target: MASQUERADE: 表示经过了地址转发;
prot: protocol
in, out: 表示是从哪个/些网卡进出
source, destination: 表示src/dest 网段

Chain DOCKER: 实际上是被最上面的Chain PREROUTING用到了,所以PREROUTING第三个是DOCKER


Conntrack

conntrack: 对应iptables那个图最开始的Connection Tracking部分,用于显示发送接收packets的详细信息的

安装:

  1. yum install epel-release添加epel源
  2. yum install conntrack-tools

conntrack -L:
conntrack.png

docker容器中telnet 36.152.44.96, 所以可以看到最后的dst=36.152.44.96;
注: src, dst, sport, dport是一组,第二组是从baidu服务器角度看的