Tcpdump 命令格式 System>tcpdump -i any port 23 –n 先用这个来确定本地地址,再来抓包 tcpdump -i eth0 port 22 and src host 192.168.1.100 –n tcpdump -i eth0 port 22 and dst host 192.168.1.100 –n -i -----interface R 是接收 X 是转发 根据目的地址抓包 TopsecOS# system tcpdump -i any host 172.16.1.20 -n tcpdump: WARNING: Promiscuous mode not supported on the "any" device tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 68 bytes 02:13:31.934485 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1241: F 2607699394: 2607699394(0) ack 908633180 win 65123 02:13:31.934501 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1241: F 2607699394:260 7699394(0) ack 908633180 win 65123 02:13:31.934644 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1243: F 683368251:6 83368251(0) ack 2932894753 win 65123 02:13:31.934652 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1243: F 683368251:6833 68251(0) ack 2932894753 win 65123 02:13:31.934850 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1242: F 3204228935: 3204228935(0) ack 378320269 win 65123 02:13:31.934863 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1242: F 3204228935:320 4228935(0) ack 378320269 win 65123 02:13:31.935053 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1239: F 302027424:3 02027424(0) ack 737677523 win 65100 02:13:31.935060 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1239: F 302027424:3020 27424(0) ack 737677523 win 65100 首先,在“系统”?“开放服务”中,添加需要 telnet 区域的相应的 telnet 权限, “开始”?“运行” ?“cmd” 输入 telnet 10.0.0.1。 , 说明:tcpdump 要在 system 目录下运行,基本格式即 Topsec. System # tcpdump –i any –n( and arp) (全局抓包) Tcpdump 中 and、not、or、host、port、grep、-e、-vv 参数的使用: 例 1:在 eth1 口抓包,只显示地址为 10.1.1.1 和 icmp 协议的报文。 Tcpdump –i eth1 host 10.1.1.1 and icmp 例 2:在所有的接口抓包,不显示 4000 端口的管理报文,和 23 端口的 telnet 报文。 Tcpdump –i any not port 4000 and not port 23 (在同时管理的时候很实用) 例 3:在 eth1 口抓包,显示地址为 211.1.1.1 或 10.1.1.1 的报文。 Tcpdump –i eth1 host 211.1.1.1 or host 10.1.1.1 (针对 MAP 前后的地址同时抓包定位时非常实用) 例 4:在所有的接口抓包,显示地址为 10.1.1.1 报文。 Tcpdump |grep host 10.1.1.1 不支持 grep 的参数了) 在 tos 系统中,X86 的平台下才有抓包的工具,-n 表示不需要域名解析,加快抓包的速度。 并且-evv 比老的 4k 系统中,能抓到更多的信息,其中还包括校验和。 例 5:System tcpdump –i any –evv -n (TOS 系统中最后必须加-n 的参数,才能保证抓包的速度) 例 6:System tcpdump –i ipsec0 -n (TOS 支持在 ipsec0 中抓包,来判断数据流是否进入隧道) 例 7:System tcpdump –i ppp0 -n (TOS 支持在 ppp0 中抓包,来判断数据流是否进入 PPPoE 的封装) (在 adls 环境中非常实用,封装了 PPPOE 的报文也能抓到,但是 TOS 各位现场工程如果能掌握 tcpdump 的这 3 板斧,逐步养成遇到故障,自己先抓包分析定位一下,将对自 己能力提高有很大的帮助。 在下一集中,我们将给出 tcpdump 抓包如果来分析应用建立是否正常: 1、TCP 建立时的 3 次握手过程。syn,syn ack,ack 包的判断。 2、TCP 传输报文 push 包的判断。 3、TCP 正常拆除连接的 4 次握手过程。双向 FIN、FIN ack 包的判断。 4、TPC 非正常拆除连接的报文 RST 包的判断。 下面的 4 个实例,详细阐述了目的地址转换时如何通过 TCPDUMP 抓包来快速定位故障点。 现场通过抓包来定位故障原因是最准确高效的方法: 下面抓包中,客户端源地址为 168.36.126.1 MAP 地址为 209.136.47.12 对于目的地址转换,天融信也俗称为 MAP 转换。 服务器真实地址为 11.68.21.12 例 1、如果业务、ping 都不通,抓包时只有第一个请求报文,没有匹配 MAP 转换,说明: A: 防火墙没有到真实服务器的路由,而导致不能匹配 MAP 策略。 B: 或者是防火墙上没有开放对应的访问策略。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 例 2、如果业务、ping 都不通,抓包是匹配了 MAP 转换策略,说明: A: 对方的服务没有回应。 B: 或者对方回应了但是路由错误,回应数据包没有到防火墙。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64 例 3、如果业务、ping 都不通,抓包显示最后一个报文没有正常转换,说明: A: 防火墙上没有回指路由,而导致最后的报文没有发出。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 >209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.400000 IP 11.68.21.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64 例 4、如果业务、ping 都不通,抓包显示报文正常转发,说明 A: TOS 发出了数据包,但是匹配了错误的回指路由。 TOS# system tcpdump -i any host 168.36.126.1 -n 04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.400000 IP 11.68.21.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64 04:19:03.404365 IP 209.136.47.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64 TopsecOS# system tcpdump -i ipsec0 host 192.168.21.88 and host 192.168.71.100 -n 1、TCP 建立连接时 3 次握手的报文。(syn,syn ack,ack 包) 05:03:36.632472 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: S 21321858:21321858(0) win 16384 05:03:36.632664 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: S 472888645:472888645(0) ack 21321859 win 17520 05:03:36.649547 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: . ack 1 win 17520 2、TCP 连接建立后,传输数据的 PUSH 报文。 05:03:36.649578 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: P 1:73(72) ack 1 win 17520 05:03:36.650170 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: P 1:33(32) ack 73 win 17448 3、TCP 拆除连接时 4 次握手的报文。(双向 FIN、FIN ack 包) 05:03:36.650204 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: F 33:33(0) ack 73 win 17448 05:03:36.666213 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: F 73:73(0) ack 33 win 17488 05:03:36.666241 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: . ack 34 win 17488 05:03:36.666335 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: . ack 74 win 17448