我正在寻找一种好的免费方法来记录通过 Linux 路由器的 IP 标题信息(带有时间戳的源/目标 IP)。
我知道我可以这样做
tcpdump -i eth0 > log.txt
然而,我正在寻找一些更实质性的东西,因为它将一直运行。
答案1
如果您想要详细的日志记录,我建议使用 ulogd。
答案2
iptables 可以原生地执行此操作。只需在链的早期放置一个LOG
或ULOG
目标即可。您还必须使用 来rsyslogd
将 iptables 日志从内核日志流中取出并放入您选择的文件中。这需要您在使用 iptables 规则选择的日志文本中放入一些唯一字符(类似于":FW:"
),以便您可以告诉 rsyslogd 根据该字符串进行过滤并将其放入自己的文件中。
答案3
我非常喜欢使用阿古斯为此。它是一个软件包,可以随意监听接口并写出类似于 (net|j)flows 的流数据。它使用客户端/服务器模型,其中服务器守护程序执行捕获并写入数据文件,客户端工具用于读取和分析数据文件。输出文件被写入二进制格式,因此需要对所包含的工具进行一些学习。
使用(几乎)默认配置,以下是基本输出的匿名版本:
StartTime Proto SrcAddr Sport Dir DstAddr Dport SrcPkts DstPkts SrcBytes DstBytes State
31 Jan 11 23:20:07 icmp 10.8.23.225 -> 10.28.5.232 1 0 60 0 ECO
31 Jan 11 23:48:07 tcp 10.10.238.252.12200 -> 10.28.5.232.27977 1 0 60 0 REQ
01 Feb 11 01:10:59 icmp 10.15.36.226 -> 10.28.5.232 1 0 60 0 ECO
01 Feb 11 01:11:00 icmp 10.15.36.226 -> 10.28.5.232 1 0 60 0 ECO
01 Feb 11 01:13:45 tcp 10.10.238.252.12200 -> 10.28.5.232.27977 1 0 60 0 REQ
01 Feb 11 01:36:13 udp 10.18.16.98.5060 -> 10.28.5.232.5060 1 0 454 0 INT
01 Feb 11 03:22:34 tcp 10.10.238.252.12200 -> 10.28.5.232.27977 1 0 60 0 REQ
01 Feb 11 04:05:51 tcp 10.10.238.252.12200 -> 10.28.5.232.27977 1 0 60 0 REQ
01 Feb 11 04:48:32 tcp 10.10.238.252.12200 -> 10.28.5.232.27977 1 0 60 0 REQ
它被设计为以服务形式运行,但您必须根据系统、存储和吞吐量找出轮换文件的最佳方式。您应该能够将其指向路由器的一个接口并获取所需的所有信息。
作为额外奖励,tt 还附带了大量辅助实用程序,您可以使用它们来做一些有趣的事情,例如流量图、会计和其他类型的分析。请参阅NSMWiki页面上有一些关于可以运行的分析的具体细节。