我已经安装了 fwlogwatch 并生成如下每日报告:
fwlogwatch -b -l 1d -N -n -M 20 -w -T [email protected] /var/log/kern.log /var/log/syslog
它似乎与我的 nginx 访问日志没有关联,并且似乎报告的流量(以字节为单位)要少得多。所以我不确定我是否真的信任它。
但我真正想要的是两份报告:第一份显示传入流量,第二份显示传出流量的数量。
请注意,我以 docker 容器的形式运行许多服务,因此将传出的流量按这些容器的源 ip 地址分组会很酷。
我如何创建这样的报告?
答案1
一个选择是
iptables -xvn -L OUPUT
选择 2 ipset 和 iptables
甚至可以实现更复杂的情况,包括使用此方法记录源和目标 IP 地址,只是这里没有显示。
ipset create output hash:net counters
iptables -I OUTPUT 1 -j SET --add-set output dst
iptables -I OUTPUT 1 -m set --match-set output dst
你可以替代源码为了夏令时如果您想要的是源数据。
或者监控输入:
ipset create INPUT hash:net counters
iptables -I INPUT 1 -j SET --add-set INPUT src
iptables -I INPUT 1 -m set --match-set INPUT src
有些数据包可能实际上使用 FORWARD 组
ipset create FORWARD hash:net counters
iptables -I FORWARD 1 -j SET --add-set FORWARD src
iptables -I FORWARD 1 -m set --match-set FORWARD src
然后使用
ipset save
查看结果。
另外,如果您只能了解某些 IP 地址,则可以删除“--add-set”。然后手动填充列表。
ipset add input 192.168.0.1/24
ipset add input 192.168.1.1/24
ipset add input 192.168.2.1/24
ipset add output 192.168.0.1/24
如果您确实手动填充列表,那么您将需要使用:
ipset save >ipset.txt
然后
ipset restore <ipset.txt
除非您另行配置,否则所有设置和配置选项(包括计数器)都将一次性保存和恢复。
此外,您还可以
ipset save >daily.txt
ipset flush
刷新后,您可以恢复 IP 地址主列表,并将主列表中的计数器全部设置为 0。
ipset restore <all-sets-at-zero.txt
这将刷新 IP 地址,而不是组。因此将所有计数器重置为 0。您可以创建一个 cron 作业来节省进而冲洗每日设置一次以进行每日报告。
选择 3 iptables 与 ULOG
iptables -I OUTPUT 1 ULOG 选项
然后,您可以修改 ulogd.conf 文件以在任何地方甚至数据库中进行记录。