Answers:
添加-n
到您的tcpdump
命令行。
-n Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.
还应该注意的是,在Fedora(以及其他衍生产品:RHEL,CentOS等)上,他们已经修补了原始tcpdump版本,以包括一个单独的选项-nn
来删除端口号。从联机帮助页:
-n Don't convert host addresses to names. This can be used to
avoid DNS lookups.
-nn Don't convert protocol and port numbers etc. to names either.
-n
仅适用于主机名,不适用于端口号。-nn
两者兼有。这在Fedora 20 gnu / linux上运行tcpdump版本4.5.1。@ATMc的错误答案是唯一正确的答案。可悲的是,由于业力低下,我既不能赞美它,也不能在下面写评论。
我认为最好的方法是:
sudo tcpdump -ni any
测试步骤:
打开控制台并键入:
sudo nc -l -p 6666
打开另一个控制台,然后键入:
sudo tcpdump -ni any
如果输出太冗长,可以将其过滤掉(| grep -v "patter1n|pattern2"
)
打开第三个控制台,然后键入:
telnet localhost 6666
预期产量:
10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0
如果使用,sudo tcpdump -i any
您将看到以下内容:
10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'
-nn
将“ http”和“ dnp”之类的服务显示为端口数字而不是名称(前面的三个答案中已经提到过),以及(2)用于 awk
丢弃数据包内容上的数据(这可能是不希望的)。
-n