2011-11-29 119 views
0

我有2个服务器(serv1,serv2)进行通信,我试图嗅探符合从serv1传输到serv2的某些标准的数据包。 Tshark安装在我的桌面(桌面1)上。我写了下面的脚本:使用tshark嗅探数据包

while true; do 
tshark -a duration:10 -i eth0 -R "(sip.CSeq.method == "OPTIONS") && (sip.Status-Code) && ip.src eq serv1" -Tfields -e sip.response-time > response.time.`date +%F-%T` 
done 

这个脚本似乎当SERV1运行一切正常(因为SERV1正在发送数据包serv2上)。但是,当我尝试在desk1上运行它时,它无法捕获任何数据包。他们都在同一个LAN上。我错过了什么?

回答

0

如果您的局域网是交换网络(大部分是)或您的桌面网卡不支持混杂模式,那么您将无法看到任何数据包。验证这两件事情。

+0

即使在serv1上运行相同的脚本时,这是否会成为问题?我最初的猜测是-i eth0会导致问题。我的命令看起来好吗? –

+0

那么,交换网络的问题将不会成为serv1的一个因素,因为数据包打算流入/流出该机器(所以交换机当然会向它发送流量)。在desk1上,交换机(如果存在)不会将您的机器识别为数据包的合法接收方,所以不会将它们发送给您。这是运行在serv1和desk1之间的主要区别 –

+0

好的,这清除了很多东西。谢谢 –

1

如何使用错误的tcpdump来捕获所有来自线路的流量。我建议做的只是捕获界面上的数据包。不要在捕获级别过滤。您可以过滤pcap文件后。这样

tcpdump -w myfile.pcap -n -nn -i eth0 
+0

问题是他在一个以太网交换机上。所述开关的额外配置是必需的 –

2

假设的东西,要么SERV1或serv2上是相同的物理以太网交换机作为分享帮助,您可以通过使用一种称为SPAN功能SERV1和serv2上之间嗅过境交通(交换机端口分析器)。

假设你的服务器上FastEtheret4/2,在您的桌面上的FastEthernet4思科交换机/ 3 ......你应该Telnet或SSH到交换机并输入以下命令......

4507R#configure terminal 
Enter configuration commands, one per line. End with CNTL/Z. 

4507R(config)#monitor session 1 source interface fastethernet 4/2 

!--- This configures interface Fast Ethernet 4/2 as source port. 

4507R(config)#monitor session 1 destination interface fastethernet 4/3 

!--- The configures interface Fast Ethernet 0/3 as destination port. 



4507R#show monitor session 1 
Session 1 
--------- 
Type : Local Session 
Source Ports : 
Both : Fa4/2 
Destination Ports : Fa4/3 


4507R# 

这功能不仅限于Cisco设备... Juniper/HP/Extreme和其他企业以太网交换机供应商也支持它。