2台のマシンがあり、2つのアプリケーションがいくつかのネットワークポート(TCPとUDP)で通信しています。送受信するトラフィックをカウントしたいのですが、全体のカウントだけでなく、マシンごと、ポートごと、1日ごとの統計が必要です。ダークスタットただし、1 日あたりの統計は提供されず、全体的なカウンターのみが提供されます。
そのトラフィックをカウントできる他の方法はありますか (2 台のマシンの間にプロキシまたはゲートウェイを配置できます)。
答え1
iptables は、各ルールが何回トリガーされたかに関する統計情報を提供できるため、関心のあるポート (ポート 20 とポート 80 など) に LOG ルールを追加できます。
iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80
その後
iptables -n -L -v
このポートを介して送信されたパケット数とバイト数が表示されます。 もちろん、出力から興味のあるポートを解析する必要があります。
正確な値が必要な場合は、-x を追加します。
iptables -n -L -v -x
答え2
iptables 設定にアカウンティング ルールを追加できます。これらは、ESTABLISHED および RELATED トラフィックを受け入れる前に実行する必要があります。そうしないと、通過するトラフィックをカウントし損ねます。Web トラフィックをカウントするには、次のようなルールを試してください。
iptables -A INPUT -p tcp --dport 80
チェーンが多数ある場合は、会計チェーンを作成して、他のチェーンとは切り離してレポートしたり、カウンターをゼロにしたりすることができます。
のショアウォールファイアウォールを使用すると、ルール セットに会計ルールを簡単に追加できます。
答え3
出力トラフィック統計を含めることを忘れないでください。
# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80
# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443
iptables -n -L -v
iptables -n -L -v -x
iptables -n -L -v -x | grep -i "Chain\|:443\|:80"
Chain INPUT (policy DROP 357 packets, 22828 bytes)
1286265 75076978 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
1305378 75018232 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
442 255112 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:80
46 10515 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:443
答え4
宛先IPごとに使用量が必要かどうかは不明ですが、統計は、インターフェースごとのトラフィック使用量を記録するのに便利なツールです。インストールして、vnstat -u -i eth0
監視するインターフェースごとに実行します。その後、1 日あたりの使用量を取得するには、を使用しますvnstat -i eth0 -d
。