Questions tagged «tcpdump»

tcpdump是一个CLI工具,用于捕获和显示网络设备发送和接收的数据包。

6
如何以友好格式读取pcap文件?
pcap文件上的一只简单的猫看起来很糟糕: $cat tcp_dump.pcap ?ò????YVJ? JJ ?@@.?E<??@@ ?CA??qe?U????иh? .Ceh?YVJ?? JJ ?@@.?E<??@@ CA??qe?U????еz? .ChV?YVJ$?JJ ?@@.?E<-/@@A?CAͼ?9????F???A&? .Ck??YVJgeJJ@@.?Ӣ#3E<@3{nͼ?9CA??P?ɝ?F???<K? ?ԛ`.Ck??YVJgeBB ?@@.?E4-0@@AFCAͼ?9????F?P?ʀ??? .Ck??ԛ`?YVJ?""@@.?Ӣ#3E?L@3?Iͼ?9CA??P?ʝ?F????? ?ԛ?.Ck?220-rly-da03.mx 等等 我尝试通过以下方式使它更漂亮: sudo tcpdump -ttttnnr tcp_dump.pcap reading from file tcp_dump.pcap, link-type EN10MB (Ethernet) 2009-07-09 20:57:40.819734 IP 67.23.28.65.49237 > 216.239.113.101.25: S 2535121895:2535121895(0) win 5840 <mss 1460,sackOK,timestamp 776168808 0,nop,wscale 5> 2009-07-09 20:57:43.819905 IP 67.23.28.65.49237 …
139 log-files  tcpdump  pcap 

3
具有tcpdump的HTTP标头的可读格式
我想查看在Linux机器中从Apache(在端口80上侦听)发送到Tomcat(在端口4080上)的HTTP标头。 根据维基百科, 标头字段是用冒号分隔的明文字符串格式的名称/值对。 我尝试了以下tcpdump命令的一些变体: $ sudo tcpdump -lnX dst port 4080 -c 10 11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143> 0x0000: 4500 0065 3a9f 4000 3f06 0084 628a 9ec4 E..e:.@.?...b... 0x0010: 628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1 b............K.. 0x0020: 8018 0017 …


5
如何将pcap文件拆分为一组较小的文件
我有一个巨大的pcap文件(由tcpdump生成)。当我尝试在Wireshark中打开它时,该程序变得无响应。有没有办法将文件拆分为一组较小的文件,以一个一个地打开它们?文件中捕获的流量是由两台服务器上的两个程序生成的,因此我无法使用tcpdump“主机”或“端口”过滤器拆分文件。我也尝试了linux'split'命令:-),但是没有运气。Wireshark无法识别格式。
47 tcpdump  pcap 

6
使用tcpdump监视HTTP流量
为了监视服务器和Web服务器之间的HTTP通信,我目前正在使用tcpdump。这可以正常工作,但我想消除输出中的一些多余数据(我知道tcpflow和wireshark,但是在我的环境中不易使用)。 从tcpdump手册页: 要打印所有与端口80之间的IPv4 HTTP数据包,即仅打印包含数据的数据包,而不打印例如SYN和FIN数据包以及仅ACK数据包。 tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 这个命令 sudo tcpdump -A'src example.com和tcp端口80和(((ip [2:2]-((ip [0]&0xf)<< 2))-((tcp [12]&0xf0)>> 2) )!= 0)' 提供以下输出: 19:44:03.529413 IP 192.0.32.10.http> 10.0.1.6.52369:标志[P。],seq 918827135:918827862,ack 351213824,win 4316,选项[nop,nop,TS val 4093273405 ecr 869959372],长度727 E ..... @ .............. P..6.0 ......... D ...... __ .. …
42 tcpdump  tshark 


1
网络和子网掩码上的tcpdump筛选器
我正在使用以下tcpdump命令: tcpdump -w net75.out -s 0 host 65.207.95.222 我想将单个主机上的筛选器更改为以下子网中的所有地址: 65.192.0.0/10 我还无法弄清楚如何指定tcpdump过滤器来执行此操作。 请指教。
26 subnet  tcpdump  filter 


8
如何在tcpdump输出流中显示界面?
这似乎是一个微不足道的问题,但是经过一番搜索,我仍然无法找出答案。可以使用“ any”作为接口描述来运行tcpdump,即: # tcpdump -i any -n host 192.168.0.1 有什么方法可以强制tcpdump显示在哪个接口上捕获了显示的数据包? 更新: 随着越来越多的人确认香草tcpdump可能无法实现这一点,有人可以提出解决方案吗?也许不同的嗅探器? 一般问题如下:在具有50个接口的系统上,确定来自特定ip地址的数据包的入站接口是什么。

4
监视端口上与IP地址之间的传输字节数
任何人都可以推荐linux命令行工具来监视本地服务器和指定IP地址/端口之间传输的字节数。 等效的tcpdump命令为: tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com 输出: 46 packets captured 131 packets received by filter 0 packets dropped by kernel 我想要类似的输出: 54 bytes out, 176 bytes in 我希望它可以在RHEL上工作并且是免费/开源的。如果有一个我也缺少的现有工具,那就太好了!

3
多个接口上的tcpdump
我需要捕获CentOS 5服务器上的流量,该服务器充当具有2个WAN接口和1个LAN的Web代理。为了解决奇怪的代理问题,我想记录一下完整的对话。由于两个WAN接口之间的外部连接是平衡的,因此我想知道是否有可能同时捕获所有接口。 我以前使用过tcpdump,但一次只允许一个接口。我可以启动3个并行进程以在所有接口上进行捕获,但是最后得到3个不同的捕获文件。 正确的做法是什么?

1
tcpdump会看到iptables丢弃的数据包吗?
我有一个具有以下简单规则的防火墙: iptables -A INPUT -p tcp -s 127.0.0.1/32 --dport 6000 -j ACCEPT iptables -A INPUT -p tcp -s 192.168.16.20/32 --dport 6000 -j ACCEPT iptables -A INPUT -p tcp --dport 6000 -j REJECT 现在,假设我正在像这样使用TCPDUMP: tcpdump port 6000 而且我有主机192.168.16.21试图连接到port 6000。 会/应该tcpdump输出一些来自的数据包192.168.16.21吗?

7
tcpdump:out.pcap:权限被拒绝
[root@localhost ~]# cat /etc/issue Fedora release 17 (Beefy Miracle) Kernel \r on an \m (\l) [root@localhost ~]# uname -a Linux localhost.localdomain 3.6.10-2.fc17.i686 #1 SMP Tue Dec 11 18:33:15 UTC 2012 i686 i686 i386 GNU/Linux [root@localhost ~]# tcpdump -i p3p1 -n -w out.pcap -C 16 tcpdump: out.pcap: Permission denied 为什么我会出错? 我该怎么办?
15 linux  tcpdump  fedora 

2
CoreOS:tcpdump神秘地解决了网络问题(使用的套接字数量过多)
我今天对你有一个谜。我们在Azure上运行基于CoreOS(2023.5.0 / Linux 4.19.25-coreos)的小型三节点Elasticsearch群集。Elasticsearch在主机网络模式下在docker容器内运行。在运行了几乎完全免费的维护一年之后,我们一直看到机器进入一种非常有趣的状态。 更新资料 通过修复Linux内核中的驱动程序可以解决此问题。请参阅下面的答案。 病征 基本上,受影响的计算机与其他两个节点之间的网络连接消失。所有这些都位于同一虚拟网络和同一子网中,并且通常可以与其他服务器通信。仍然可以从其他子网(我可以将其连接到该子网)和其他对等虚拟网络访问受影响的节点。该计算机还具有(非常多)互联网连接,但是大多数请求只是超时。 我们已经观察到,在受影响的节点上,报告的“已使用套接字”的/proc/net/sockstat数量非常高(在正常节点上为〜4.5k,而不是〜300)。监视显示,此数目从节点不可用的那一刻起迅速增加。 有趣的是,我们似乎无法识别这些二手插座的来源: # cat /proc/net/sockstat sockets: used 4566 TCP: inuse 2 orphan 0 tw 2 alloc 98 mem 4 UDP: inuse 1 mem 0 UDPLITE: inuse 0 RAW: inuse 0 FRAG: inuse 0 memory 0 # cat /proc/net/sockstat6 TCP6: inuse 98 UDP6: …

4
tcpdump提高udp性能
我正在运行一组负载测试以确定以下设置的性能: Node.js test suite (client) --> StatsD (server) --> Graphite (server) 简而言之,node.js测试套件每隔x秒就会向另一台服务器上的StatsD实例发送一定数量的指标。然后,StatsD每秒将指标刷新到位于同一服务器上的Graphite实例。然后,我查看测试套件实际发送了多少度量,以及Graphite收到了多少度量,以确定测试套件与Graphite之间的数据包丢失。 但是我注意到有时我会有非常大的丢包率(注意它是通过UDP协议发送的),范围从20%到50%。因此,当我开始查看这些数据包的丢弃位置时,发现StatsD可能是一些性能问题。因此,我开始记录系统各个部分的指标,以跟踪发生此下降的位置。这就是事情变得奇怪的地方。 我正在使用tcpdump创建一个捕获文件,在测试运行完成后检查该文件。但是每当我在运行tcpdump的情况下运行测试时,几乎都不存在数据包丢失的情况!看起来tcpdump某种程度上提高了我的测试性能,但我不知道为什么以及如何做到这一点。我正在运行以下命令来在服务器和客户端上记录tcpdump消息: tcpdump -i any -n port 8125 -w test.cap 在一个特定的测试案例中,我正在发送40000个指标/秒。运行tcpdump时的测试的数据包丢失率约为4%,而没有进行测试的数据包丢失率约为20% 这两个系统均通过以下设置作为Xen VM运行: 英特尔至强E5-2630 v2 @ 2.60GHz 2GB RAM Ubuntu 14.04 x86_64 我已经检查过的潜在原因: 增加UDP缓冲区的接收/发送大小。 影响测试的CPU负载。(客户端和服务器端的最大负载为40-50%) 在特定接口而不是“ any”上运行tcpdump。 使用'-p'运行tcpdump以禁用混杂模式。 仅在服务器上运行tcpdump。这导致发生20%的数据包丢失,并且似乎不影响测试。 仅在客户端上运行tcpdump。这样可以提高性能。 将netdev_max_backlog和netdev_budget增加到2 ^ 32-1。这没什么区别。 在每个nic上尝试了混杂模式的所有可能设置(服务器打开和客户端关闭,服务器关闭和客户端打开,都打开,都关闭)。这没什么区别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.