在出现此错误之前,我一直在使用 tcpdump,没有任何问题。一旦我的服务器受到攻击,我就会使用以下两个命令及其变体,这样如果数据包速率很高,数据包就会自动被转储。
tcpdump -i eth0 -p -nn -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap
tcpdump -nn -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap
当我受到攻击时,控制台中立即出现以下错误:
tcpdump: can't create rx ring on packet socket: Cannot allocate memory
手动使用命令是可行的,所以我猜测在发生攻击时某些东西会过载。不过这是我的 RAM 使用情况:
root@x:~# free -m
total used free shared buffers cached
Mem: 2004 1255 749 0 1 29
-/+ buffers/cache: 1225 779
Swap: 2047 1095 952
目前,这一数字比该命令生效时的水平要低得多。
那么有人能回答这个问题吗?
答案1
这可能是由于系统内存不足造成的。我注意到当内存量较大时,它可以正常工作。