Articles of tcpdump

Nginx TCP快速开放问题

我在我的一台服务器上configuration了Nginx和Apache。 nginx服务器在端口80上侦听端口80,在端口81上侦听Apache。Nginx作为反向代理。 在nginx中我configuration了TCP Fast Open: server { listen 107.6.155.74 fastopen=50; server_name servtest.com www.servtest.com; TCP快速打开也在服务器上启用: root@server:~/projects/nginx# cat /proc/sys/net/ipv4/tcp_fastopen 3 为了testing这个工作是否正常,我在运行Ubuntu的PC上configuration了Chrome,使用TCP Fast Open(chrome:// flags page)。 客户端上的tcp_fastopen设置设置为1。 在服务器上,我使用下面的grep找出是否使用TCP Fast Open: grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail 0 2 2 0 0 0 我相信TCPFastOpenActive和/或TCPFastOpenPassive计数器不应该是“0”,如果这个工程。 任何想法如何实际找出是否使用TCP Fast […]

什么程序发送哪个数据包到networking

我想有一个类似tcpdump的程序,显示哪个程序发送了一个特定的数据包,而不是只是获取端口号。 这是一个通用的问题,我曾经有过和有时,当你有一个旧的tcpdump文件躺在你身边没有办法find什么程序发送的数据.. 我怎样才能确定哪个进程是在Linux上的UDPstream量的解决scheme? 是一个迹象表明,我可以用auditd,dTrace,OProfile或SystemTap解决这个问题,但是并没有说明如何去做。 即它不显示程序的源端口调用bind().. 我遇到的问题是很奇怪的UDP数据包,由于这些端口是如此短暂,我花了一段时间才解决这个问题。 我通过运行一个类似于下面的丑陋的黑客来解决这个问题 while true; date +%s.%N;netstat -panut;done 所以要么是比这个更好的方法,replacetcpdump,要么从内核获取这个信息,所以我可以修补tcpdump。 用auditd解决这个问题 sudo auditctl -a exit,always -F arch=b64 -S bind -k BIND 这个填充/var/log/audit/audit.log的行如下: type=SYSCALL msg=audit(1292929028.845:3377): arch=c000003e syscall=49 success=yes exit=0 a0=3 a1=808710 a2=10 a3=7fffab28ea10 items=0 ppid=1564 pid=24442 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=4294967295 comm="nc" exe="/bin/nc.openbsd" key="BIND" type=SOCKADDR msg=audit(1292929028.845:3377): saddr=0200FFFF000000000000000000000000 […]

tcpdump捕获主机的TCP重置

我想弄清楚我的networking服务器上的TCP重置发生在哪里。 我有以下的捕获: tcpdump -fnni bond0:-nnvvS -w dump.pcap 'tcp[tcpflags] & (tcp-rst) !=0' 当我看着wireshark中的pcap显示我重置: Flags: 0x004 (RST) …. …. .1.. = Reset: Set …. …. ..0. = Syn: Not set …. …. …0 = Fin: Not set Window size value: 0 Calculated window size: 0 Window size scaling factor: -1 (unknown) Checksum: 0x0f2f [validation disabled] Good Checksum: […]

tcpdump:从非零偏移开始解码数据包

我正在debugging一个Linuxembedded式平台,它有一个接口,在这个接口中,普通的以太网帧有一个额外的82字节的平台头部。 我能够使用tcpdump从此接口嗅探,但tcpdump不能有效解码,因为以太网标题没有开始它所期望的。 因此,我可以看到的是一个hex转储与-x选项,但为了方便,我想tcpdump解码它们。 我对82-octet头文件的内容不感兴趣,但希望看到后续封装的以太网帧的解码。 有没有一种方法可以告诉tcpdump开始解码从捕获的数据包开始的82个八位字节偏移量开始的以太网报头,而不是通常的0个八位字节?

tcpdump根据http头的内容进行过滤

使用tcpdump我想过滤从鱿鱼caching服务器回来的响应只有从caching回来的响应。 这意味着我需要根据X-CACHE头部值进行过滤,如果它的值是HIT,我应该显示它,否则响应不是来自caching。 任何想法我的tcpdumpfilter应该是什么?

传入数据包到服务器

我已经启用iptableslogging来自外部的数据包 -A INPUT ! -s 192.168.218.0/24 -j LOG 现在我看到很多来自未知地址的传入数据包 Jun 5 14:54:56 localhost kernel: [572504.888953] IN=eth1 OUT= MAC=… SRC=91.189.88.140 DST=192.168.218.101 LEN=1500 TOS=0x00 PREC=0x00 TTL=55 ID=49833 DF PROTO=TCP SPT=80 DPT=47954 WINDOW=295 RES=0x00 ACK URGP=0 Jun 5 14:54:56 localhost kernel: [572504.916382] IN=eth1 OUT= MAC=… SRC=91.189.88.140 DST=192.168.218.101 LEN=1500 TOS=0x00 PREC=0x00 TTL=55 ID=49834 DF PROTO=TCP SPT=80 DPT=47954 WINDOW=295 RES=0x00 […]

tcpdump udp数据捕获延迟

我正在使用tcpdump来捕获UDP数据包,并分析UDP广播器和我的服务器之间的networking延迟。 为了计算延迟,我将UDP应用程序数据中报告的源主机时间戳与tcpdump本地“内核”时间戳进行比较。 两个服务器时钟同步到毫秒级的精度,可以接受高达2或3毫秒的延迟。 我的机器是双核6核英特尔X5670 @ 2.93Ghz,10Gb Mellanox NIC并禁用了合并。 问题是,当数据频率提高时,我观察到两个主机之间的延迟大于10毫秒,尽pipe总是远低于10Gb带宽。 我有5个tcpdump作业同时运行: tcpdump -c 0 chrt -f 80 -q -i eth1 net 232.xxx.xxx.xxx and udp port 22456 -s 0 -w myfile 我在过去用2个线程编写我自己的转储程序(一个高优先级的networking读取器线程和一个低优先级的磁盘写入器asynchronous线程)取得了较好的成功,但我真的很喜欢这次使用标准的linux解决scheme。 我能做些什么来尽量减lesstcpdump的UDP读取延迟?

如何将交换机用作networking交换机?

我想tcpdump固件更新时,我的路由器所做的所有stream量。 所以我采用了HP ProCurve 1800-8G交换机和镜像端口7到端口8。 我已经连接: 互联网连接在端口6 路由器WAN端口在端口7 Linux主机在端口8上运行tcpdump 我想路由器在WAN接口上有一个DHCP客户端。 但是我没有看到任何活动。 连端口6和7都没有显示活动。 题 我是否必须在交换机中configuration更多的东西才能将其用作networking分stream器? 更新 也许这是电缆是问题? 路由器使用RJ11,那么RJ11引脚应该如何连接到RJ45引脚? 我现在使用的是来自应答机的端口6和端口7。 ____ | HP ProCurve 6|—————- Internet Uplink ————– (Internet) 1800-8G | : Switch | : <== (router-to-uplink path before tap) (as a tap) | : 7|—————- Router WAN port (downlink) — (local n/w) | 8|———— Linux Host (with […]

TCP消息合并?

我有一个应用程序发送100个186字节(不包括标题)的TCP消息,无间隙地从主机A到主机B. 我运行了tcpdump来捕获主机A上的数据包(发送者在那里),并且我注意到在几条消息(如9)之后,接下来的〜25条消息被合并成一条5 + K消息。 我已经通过发件人应用程序中的setsockopt()closures了Nagle的algorithm,并且计算出来的TCP窗口总是超过14K字节。 因此,似乎并没有填满主机B的第9条消息,主机B要求主机A减速。 有关如何弄清楚为什么TCP消息被合并的任何提示? 谢谢!

如何在Wireshark中查看绝对时间戳?

在wireshark打开了一个pcap文件的例子 第二列是时间。 有没有可能在这里看到绝对时间戳,而不是相对的?