在出现此错误之前,我一直在使用 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
目前,它比以前命令起作用时要低得多。
那么有人对此有答案吗?
这可能是由于系统内存不足造成的。我注意到它在存在大量 RAM 时有效。