ポート上のIPアドレスとの間で転送されるバイト数を監視します


19

誰もがLinuxコマンドラインツールを推奨して、ローカルサーバーと指定されたIPアドレス/ポート間で転送されたバイト数を監視できますか?

同等のtcpdumpコマンドは次のとおりです。

tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com

どの出力:

46 packets captured
131 packets received by filter
0 packets dropped by kernel

私は出力する同様のものが欲しい:

54 bytes out, 176 bytes in

RHELで動作し、フリー/オープンソースになりたいです。既存のツールがあれば、それも良かったと思います。

回答:


14

iptablesを使用できます。まだ使用していない場合は、開いているAccept構成を使用できますが、カウントを実行するルールを設定できます。

たとえば、RHELでは、/etc/sysconfig/iptablesファイルは次のようになります。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j INPUT
-A INPUT -s 10.10.1.1 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -d 10.10.1.1 -p tcp -m tcp --dport 80 -j ACCEPT

10.10.1.1:80は、トラフィックをカウントするhost:portです(ホスト名は使用できません)。その後iptables -nvxL、ルートとしてコマンドを使用してカウントされたトラフィックを確認できます。

出力例:

Chain INPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       10.10.1.1            0.0.0.0/0              tcp spt:80


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
       0          0 INPUT      all  --  *      *       0.0.0.0/0            0.0.0.0/0       

Chain OUTPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.10.1.1              tcp dpt:80

7
iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456のように、カウントのみを目的として、ターゲットのないルールを作成することも完全に合法です。「-j」引数がないため、トラフィックには何もしませんが、一致する各パケットはカウントを増やします。
MadHatterは、

9

Wiresharkを提案しようとしていました(多くの「会話」機能があるため)が、コマンドラインツールではありません。ただし、wiresharkに近いコマンドラインアナライザーツールであるtsharkを試すこともできます。出力には、探しているものが(ある程度)あるはずです(下の例を参照)。

tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"

結果:

                                     |       <-      | |       ->      | |     Total     |
                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
10.2.3.23           <-> 10.2.3.67        42     15341      35      4890      77     20231

7

また、ホストごとにインターフェースの帯域幅使用量を表示する「iftop」と呼ばれるツールもあります。iftopはあなたが説明したことを実行できると思いますが、通常、そのインターフェースは「トップ」のようなものです。

したがって、例として、設定ファイルを作成してフィルターコードを提供するだけでよいと思います。

だから、ここに私の設定ファイルに私のフィルターコードがあります。

$ cat /tmp/conf
filter-code: port http and host google.com

次に、次を実行してネットワークトラフィックを確認しました。

$ sudo iftop -c /tmp/conf

これが最良の選択肢かどうかはわかりませんが、必要なものを実現するための1つの方法です。HTH。


3
構成ファイルを使用せずに、コマンドラインでフィルターを指定することもできますiftop -f 'port 80 and host google.com'
。– gioele

帯域幅ではなく、転送された合計バイト数が必要iftopです。それを示すことができますか?
arainone

3

また、軽量でシンプルな「iptraf」を試すこともできます。ポートでフィルタリングでき、高レベルの情報を提供し、ペイロードデータなどを提供しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.