我使用ruby packetfu库来捕获数据包的这个小代码:
require 'packetfu'
Thread.new {
cap = ::PacketFu::Capture.new :iface => 'eth2', :promisc => true, :start => true, :filter => 'arp or icmp'
cap.stream.each do |p|
pkt = ::PacketFu::Packet.parse(p)
puts pkt.peek
end
}
sleep 120
此代码在Debian 7上运行完美,而在Ubuntu 14.04上无法捕获任何数据包,或者没有我预期的数据包。
我真的不明白最新情况。任何人都有想法或指向Debian和Ubuntu ruby堆栈之间或pcap库或其他任何区别的任何区别?
在两个系统上我都安装了相同的软件包:
apt-get install ruby ruby-dev libpcap-dev
gem install pcaprub
gem install packetfu
在Debian上我有ruby 1.9.3p194而在Ubuntu上我有ruby 1.9.3p484。 在MacOS上,它在Debian上使用ruby 1.9.3p545。
由于
答案 0 :(得分:1)
在一些谷歌搜索结束后成为ubuntu 14.04中附带的libpcap-dev 1.5.3软件包中的pcap错误。
从先前版本安装libpcap-dev 1.4.0解决了这个问题。
我在这里找到了一个参考:http://redmine.named-data.net/issues/1511