私は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番です)。OUTPUT
INPUT
iptables -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
どのプログラムがデータを使用しているかを確認できますnethogs
(http://nethogs.sourceforge.net/)。