ルールでnftables
という名前のcounter
を使用して、特定のIPアドレスのセット(IPv4とIPv6の両方)から送信されるデータの合計を追跡しようとしています。私の目標は、1か月の間にこの合計を追跡できるようにして、使用量に応じて請求できるようにすることです。
関連するルールは次のようになります。
add table stats
add counter stats os-traffic-4
add counter stats os-traffic-6
add chain inet stats INPUT { type filter hook input priority 0; }
add rule ip stats INPUT ip saddr 192.168.123.123 counter name os-traffic-4
add rule ip stats INPUT ip saddr 192.168.123.234 counter name os-traffic-4
add rule ip stats INPUT ip saddr 192.168.123.345 counter name os-traffic-4
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234 counter name os-traffic-6
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:2345 counter name os-traffic-6
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:3456 counter name os-traffic-6
stateful objects
(名前付きカウンター)を使用して、IPv4アドレスとIPv6アドレスからのすべてのトラフィックを合計しています(os-traffic-4
およびos-traffic-6
)。次に、コマンドラインを使用して、nft list counter stats os-traffic-6
でこれらの統計を取得できます。
私の質問は:
これらの統計はどこに保存されていますか?ログのどこにも表示されず、ドキュメントで参照を見つけることができませんか?
これらの統計はマシンの再起動後も保持されますか、それともカウンタがリセットされますか?
リセットした場合、起動時にどのように復元しますか? add rule... packets 1234 bytes 123456
を使用するときにカウンター値を含めることは可能だと思いますが、名前付きカウンターでそれを行うにはどうすればいいですか?#1 ...これらの数値はどこから取得できますか?
助けてくれてありがとう!
nftables
カウンターは、テーブルやルールと同様に、カーネルメモリにのみ格納されていると思います。再起動後は保持されない場合があります。
カウンター値の永続的な記録を保持するための私の提案は次のとおりです。
nftables
構成ファイルから含めます。使用しているディストリビューションによっては、構成ファイルからルールをロードするnftables.service
ユニットがある場合があります。その場合、nftables.service
に依存し、状態ファイルにカウンター値を書き込むサービスを設計できます。たとえば、Arch Linuxでは、nftables.service
は/etc/nftables.conf
からファイアウォールルールをロードするように設計されているため、次の構成ファイルを定義できます。
# /etc/nftables.conf
add table stats
# Counter definitions go to '/var/lib/nftables.state'
include "/var/lib/nftables.state"
add chain inet stats INPUT { type filter hook input priority 0; }
add rule ip stats INPUT ip saddr 192.168.123.123 counter name os-traffic-4
add rule ip stats INPUT ip saddr 192.168.123.234 counter name os-traffic-4
add rule ip stats INPUT ip saddr 192.168.123.345 counter name os-traffic-4
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234 counter name os-traffic-6
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:2345 counter name os-traffic-6
add rule ip6 stats INPUT ip6 saddr 1234:1234:1234:1234:1234:1234:1234:3456 counter name os-traffic-6
# /var/lib/nftables.state
add counter stats os-traffic-4
add counter stats os-traffic-6
# /etc/systemd/system/nftables-persist-counters.service
[Unit]
BindsTo=nftables.service
After=nftables.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecStop=/bin/bash -c '/usr/bin/nft list counters > /var/lib/nftables.state'
[Install]
WantedBy=multi-user.target
編集:自動カウンターストレージが機能するためには、systemctl reload nftables.service
コマンドをブロックする必要があります。したがって、追加のファイルの展開が必要です。
# /etc/systemd/system/nftables.service.d/block-systemctl-reload.conf
[Service]
ExecReload=