ipset create track_hosts hash:net,net family inet hashsize 262144 maxelem 333000 counters comment
Wenn Sie in einem Monat keine Einträge mehr haben, erhöhen Sie die Zahl auf 333000.
iptables -t raw -I PREROUTING 1 -j SET --add-set track_hosts src,dst
Sie können auch -i eth0 zwischen 1 und -j hinzufügen, um sie auf 1 Netzwerkadapter zu beschränken.
ipset save track_host
wird sofort Ergebnisse haben
add track_hosts 192.168.3.220,192.168.3.2 packets 1 bytes 60 add track_hosts 192.168.3.251,192.168.3.2 packets 1 bytes 1356 add track_hosts 192.168.3.248,233.89.188.1 packets 1 bytes 186 add track_hosts 192.168.3.222,192.168.3.2 packets 1 bytes 40 add track_hosts 192.168.3.248,239.255.255.250 packets 1 bytes 441 add track_hosts 192.168.3.249,255.255.255.255 packets 1 bytes 186
Statistiken sind nicht gut, wenn sie nicht zwischen Neustarts gespeichert werden.
Wenn Ihr Router über systemd verfügt: Beachten Sie, dass der Dateipfad Ihren Bedürfnissen entspricht -f /src/all.txt
[Unit] Description=IP sets for iptables After=ufw.service Before=network.target Before=iptables.service Before=webmin-iptables.service AssertPathExists=/src/all.txt [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=-/bin/echo 'Loading ipset sets' ExecStart=/sbin/ipset restore -f /src/all.txt ExecStop=/sbin/ipset save -f /src/all.txt ExecStartPost=-/bin/echo 'Saving ipsets to disk' #ExecReload=/usr/libexec/ipset/ipset.start-stop reload # Save current ipset entries on stop/restart. # Value: yes|no, default: no # Saves all ipsets to /etc/sysconfig/ipset if ipset gets stopped Environment=IPSET_SAVE_ON_STOP=yes IPSET_SAVE_ON_RESTART=no ReadWriteDirectories=/src NoNewPrivileges=yes [Install] WantedBy=basic.target
Bitte ändern Sie zuerst den Pfad. Das Wiederherstellen von iptables kann auf diese Weise erfolgen
[Unit] Description=IPtables load rules DefaultDependencies=no After=ipset.service network-pre.target Before=network-online.target network.target [Service] Type=oneshot ExecStartPre=-/bin/echo 'Starting iptables' ExecStart=/usr/sbin/iptables-restore /etc/webmin/firewall/iptables.save ExecReload=/usr/sbin/iptables-restore /etc/webmin/firewall/iptables.save #ExecStop=/usr/lib/systemd/scripts/iptables-flush ExecStopPost=-/bin/echo 'Flushing iptables' RemainAfterExit=yes CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW [Install] WantedBy=basic.target
Jetzt bleibt alles in einem Cronjob übrig
ipset save -f /somewhere/month-year && ipset --flush track_hosts
Die erste Hälfte speichert die Statistiken, und die zweite Hälfte löscht sie, um den neuen Monat von vorne zu beginnen. Natürlich müssen Sie nicht spülen, wenn Sie nicht möchten.
Sie können die Ausgabe so analysieren, wie Sie es möchten.
ipset save track_hosts|sed 's/.*track_hosts //'|sed 's/,/ -> /'|sed 's/packets [0-9].//'
cat month-year|sed 's/.*track_hosts //'|sed 's/,/ -> /'|sed 's/packets [0-9].//'
Das Endergebnis:
192.168.3.220 -> 192.168.3.2 bytes 60 192.168.3.2 -> 239.255.255.253 bytes 105 192.168.3.251 -> 192.168.3.2 bytes 1356 192.168.3.248 -> 233.89.188.1 bytes 186 192.168.3.222 -> 192.168.3.255 bytes 78 216.17.8.11 -> 192.168.3.2 bytes 40 192.168.3.222 -> 192.168.3.2 bytes 40