昨天服务器上抓包诊断 service connect timeout 问题, 却不想遇到奇怪问题: 抓包数据只有进来的数据, 没有任何出去的数据. 如下图:
当时心想抓错了, 是不是只抓了一个方向数据, 比如参数设置 src port 或者 dst port 之类的. 然而 tcpdump 参数并没有写错, 写的是:
$ tcpdump port 80 or port 443 -w /tmp/tcpdump.pcap
所以理论上进来和出去两个方向数据应该都有才对, 那么问题出在哪呢?
问题就出在没有查看这个服务器的网络接口状况, 也没有仔细查看 tcpdump 的输出. 从下图这些细节, 你能看出问题所在吗?
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0