监视端口上传输到/来自 IP 地址的字节数

监视端口上传输到/来自 IP 地址的字节数

有人可以推荐一个 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 上运行,并且是免费/开源的。如果有我正缺少的现有工具就太好了!

答案1

您可以使用 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 是您要统计流量的主机:端口(您不能使用主机名)。然后,您可以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

答案2

我正要建议使用 wireshark(因为它有很多“对话' 功能),但它不是命令行工具。你可以尝试沙克不过,这是一个接近 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

答案3

还有一个名为“iftop”的工具,它可以显示主机接口上的带宽使用情况。我认为 iftop 可以完成您所描述的操作,但通常它的界面类似于“top”。

因此对于您的示例,我认为您只需创建配置文件即可提供您的过滤代码。

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

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

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

$ sudo iftop -c /tmp/conf

不确定这是否是最好的选择,但肯定是实现您需要的一种方法。HTH。

答案4

您也可以尝试“iptraf”,它轻量且简单。它可以按端口进行过滤,并为您提供高级信息,无有效载荷数据等。

相关内容