2つのUnixシステム間で転送されるデータ量を計算する方法

2つのUnixシステム間で転送されるデータ量を計算する方法

私は2つのLinuxシステムを持っており、彼らはいつも互いにpingを送ります。各 ping 要求に対して応答にパケットを追加します。 pingの頻度を確認できません。

ネットワークを介して互いに転送されるデータの量が何ギガバイトであるかをどのように決定しますか?

答え1

ルートのどこか(エンドポイントまたは中間のルーター)にあるLinuxシステムへのルートアクセス権があると仮定すると、iptablesルールを作成してアプリケーショントラフィックを一致させ、それを許可する特定のチェーンに送信できます。外部では操作は行われません。すべてのパケットの。カーネルは各チェーンにバイトとパケットカウンタを保持します。 IP 10.1.2.3 TCPポート42123からIP 10.7.8.9 TCPポート42789までのパケット数を計算するとします。

iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j ACCEPT

ソースホストでは にFORWARD、宛先ホストでは に置き換えます。カウンターを読むことができます。ここで、42はルール番号です(最初のルールは1番です)。OUTPUTINPUTiptables -nvxL FORWARD 42

両方の方向を計算するには、各方向に対してこれを行います。既知の間隔でカウンタを読み取り、帯域幅使用量を測定します。

中間チェーンを作成すると、わずかな柔軟性が得られます。

iptables -N myapp_counter
iptables -A myapp_counter -j ACCEPT
iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j myapp_counter
iptables -I FORWARD -p tcp -s 10.7.8.9 --sport 42789 -d 10.1.2.3 --dport 42123 -j myapp_counter

この設定を有効にすると、カウンタmyapp_counterに双方向トラフィックが含まれます。チェーンを巡回するもう1つの利点は、チェーンのカウンターを自動的に読み取り、それを0に設定できることですiptables -nvxZL myapp_counter。そして、ルール番号を把握する必要がないので、自動化が簡単です。

答え2

を使用して統計を表示できますifconfig

答え3

どのプログラムがデータを使用しているかを確認できますnethogshttp://nethogs.sourceforge.net/)。

関連情報