tcpdump 按/打印最后一跳进行过滤

tcpdump 按/打印最后一跳进行过滤

如果我有一个如下的网络:

           56.56.56.56 192.168.0.1/24
                  ___________     
               ---| Modem 1 |-----
               |  ___________    |        ___________
11.22.33.44 ---|                 |--------| Machine |
               |  ___________    |        ___________
               ---| Modem 2 |-----        192.168.0.3/24
                  ___________     
           67.67.67.67 192.168.0.2/24

...其中调制解调器 1 和调制解调器 2 都将 ssh 端口转发至 192.168.0.3。

当我调用tcpdump port ssh192.168.0.3 上的机器,然后从 11.22.33.44 ssh 到 56.56.56.56 时,输出如下所示:

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:51:16.147870 IP 11.22.33.44.55936 > 192.168.0.3.ssh: Flags [S], seq 642687408, win 14600, options [mss 1460,sackOK,TS val 1631250991 ecr 0,nop,wscale 7], length 0
16:51:16.147957 IP 192.168.0.3.ssh > 11.22.33.44.55936: Flags [S.], seq 55101726, ack 642687409, win 28960, options [mss 1460,sackOK,TS val 1829635753 ecr 1631250991,nop,wscale 7], length 0
16:51:17.147444 IP 11.22.33.44.55936 > 192.168.0.3.ssh: Flags [S], seq 642687408, win 14600, options [mss 1460,sackOK,TS val 1631251992 ecr 0,nop,wscale 7], length 0

正如您所看到的,tcpdump似乎只给我原始 IP 作为“源”IP 和“最终”IP 作为目的地。

需要什么命令来告诉tcpdump打印或过滤:

  1. 最后一跳(例如图中的 192.168.0.1 或 192.168.0.2)
  2. “公共” IP(例如图中的 56.56.56.56 或 67.67.67.67)
  3. 下一跳(例如,用于数据包传出而不是传入的调制解调器)

答案1

Tcpdump 仅捕获数据包本身,没有关于路由/外部原始地址/等的附加信息。

  1. 数据包中没有明确的最后一跳 IP 地址,但您可以使用以太网源地址间接确定它。您需要使用附加-e命令行选项来tcpdump显示帧的以太网报头。
  2. 无法显示数据包到达的原始公共 IP,因为该信息在数据包中丢失并且仅存储在调制解调器盒中的转换表中。
  3. 这也是不可能的。Tcpdump 不会查找原始数据包的路由,显然也不会查找回复数据包的路由。

答案2

根据tcpdump 表达式其语法是BPF:

tcpdump乙太主机11:22:33:44:55:66

转储发往或来自该 MAC 地址的所有数据包

这回答了(1)和(3)。

就 (2) 而言,源 IP 在 NAT 之后会发生变化,因此你必须有一台机器外部NAT 来见证该 IP。

相关内容