经常使用tcpdump进行抓包的同学可以忽略了,这篇偏于使用扫盲;首先,tcpdump抓包目的IP显示为hostname,如果端口是知名端口,显示为协议名而不是端口号。这种默认其实略有问题的:
如果我们使用默认的hostname:localhost.localdomain,那么很容易误认为是本地回环地址请求:一个远程IP访问了本地回环地址,这就很怪;还是显示IP地址爽利:IPv4还是IPv6也是一目了然。那么怎么明确显示IP地址和端口号呢?使用-n和-nn参数,使用举例如下:
# 抓包21端口的包(不限制源和目的)
tcpdump –i ens192 port 21
15:40:49.542333 IP 192.168.1.190.46108 > xxxx-229.ftp: Flags [S]
15:40:49.542395 IP xxxx-229.ftp > 192.168.1.190.46108: Flags [S.]
# –n :显示ip地址,而不是hostname
tcpdump –i ens192 –n port 21
15:23:56.952026 IP 192.168.1.190.36944 > 192.168.1.229.ftp: Flags [S]
15:23:56.952133 IP 192.168.1.229.ftp > 192.168.1.190.36944: Flags [S.]
# –nn :显示端口号而不是协议名
tcpdump –i ens192 –n –nn port 21
15:23:45.333967 IP 192.168.1.190.36840 > 192.168.1.229.21: Flags [S]
15:23:45.334036 IP 192.168.1.229.21 > 192.168.1.190.36840: Flags [S.]