我正在使用 tcpdump 监控 openvpn 链接,例如 tcpdump -i tun5 -w capture.dump -W 100 -C 100M -s 0 -n 有 http/xml 流量通过该链接,基本上可以正常捕获。但是,有些包包含我意想不到的字节。请参见此示例:
No. Time Source Destination Protocol Length Info
15 0.021249 10.150.1.7 10.150.9.6 TCP 1355 8180 → 53327 [ACK] Seq=32056 Ack=1 Win=513 Len=1315
Frame 15: 1355 bytes on wire (10840 bits), 1355 bytes captured (10840 bits)
Raw packet data
Internet Protocol Version 4, Src: 10.150.1.7, Dst: 10.150.9.6
Transmission Control Protocol, Src Port: 8180 (8180), Dst Port: 53327 (53327), Seq: 32056, Ack: 1, Len: 1315
0000 45 00 05 4b 6a c8 40 00 7f 06 6c ac 0a 96 01 07 [email protected].....
0010 0a 96 09 06 1f f4 d0 4f ff 91 41 fc b2 6c 8e b9 .......O..A..l..
0020 50 10 02 01 8c fc 00 00 65 63 74 65 64 41 72 72 P.......ectedArr
0030 69 76 61 0d 0a 32 30 30 30 0d 0a 6c 54 69 6d 65 iva..2000..lTime
0040 3e 32 30 31 36 2d 30 33 2d 31 31 54 31 33 3a 31 >2016-03-11T13:1
0050 32 3a 34 37 2b 30 32 3a 30 30 3c 2f 45 78 70 65 2:47+02:00</Expe
0060 63 74 65 64 41 72 72 69 76 61 6c 54 69 6d 65 3e ctedArrivalTime>
0070 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 4f . </O
0080 6e 77 61 72 64 43 61 6c 6c 3e 0a 20 20 20 20 20 nwardCall>
[...]
一开始,我们有 ASCII 格式:
ectedArriva..2000..lTime>2016-03-11T13:12:47+02:00....
这个“..2000..”或十六进制的 61 0d 0a 32 30 30 30 0d 0a 不应该出现在那里。而且我非常确定发送者没有发送这个。有人知道这是什么或可能是什么吗?
问候 Alex
答案1
记录显示,这是 http/chunked 流量,我看到的是块头。在 wireshark 中打开时,它会将这些包列为重组 PDU 的 TCP 段。转到调用的最后一个包,wireshark 将为我们解码 http 流量,告诉我们 2000 ASCII = 8192(整数),即块大小。与 openvpn 无关,根本不是错误 ;)
答案2
我怀疑 1)你的确信是错误的;2)该数据包是同一连接上同一方向的早期 TCP 段的 HTTP 请求或响应的延续,因此,尽管它看起来不像是发送方会发送的东西,但它是部分发送者将要发送的某物。
如果尚未启用,请尝试启用 HTTP 的 TCP 重组。打开“首选项”(编辑 -> 首选项,或者,如果这是 OS X 上的 Wireshark 2.x,则为 Wireshark -> 首选项),打开“协议”,选择 TCP,确保选中“允许子解析器重组 TCP 流”,然后选择 HTTP 并确保“重组跨多个 TCP 段的 HTTP 标头”和“重组跨多个 TCP 段的 HTTP 主体”都已选中。然后它应该会重组 HTTP 请求或响应的所有部分(包括该文本),并将其作为重组的 HTTP 请求或响应显示给您。