监视端口上与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上工作并且是免费/开源的。如果有一个我也缺少的现有工具,那就太好了!

Answers:


14

您可以使用iptables。如果尚未使用它,则可以使用开放的“接受”配置,但是要有一个规则来进行计数。

例如,在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以root身份检查以命令计数的流量。

输出示例:

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支持Monica 2010年

9

我本来是要建议Wireshark的(因为它有很多“ 对话 ”功能),但这不是命令行工具。不过,您可以尝试使用tshark,它是一个接近Wireshark的命令行分析器工具。输出应具有(某种程度上)您要查找的内容(以下示例):

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可以完成您所描述的操作,但通常它的界面类似于“ top”。

因此,对于您的示例,我认为您可以仅创建配置文件来提供您的过滤器代码。

所以这是我的配置文件中的过滤器代码。

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

然后,我运行以下命令以查看网络流量。

$ sudo iftop -c /tmp/conf

不确定这是否是最佳选择,但肯定是实现所需功能的一种方法。HTH。


3
您还可以在命令行上指定过滤器,而无需使用配置文件:iftop -f 'port 80 and host google.com'
gioele 2015年

Op想要传输的总字节数,而不是带宽。可以iftop显示出来吗?
arainone

3

您也可以尝试“ iptraf”,它既轻巧又简单。它可以按端口过滤,并为您提供高级信息,没有有效载荷数据等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.