Mik*_*ike 20 linux packet-analyzer tcpdump packet-capture tshark
任何人都可以推荐一个 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
Run Code Online (Sandbox Code Playgroud)
我想要类似的输出:
54 bytes out, 176 bytes in
Run Code Online (Sandbox Code Playgroud)
我希望它在 RHEL 上工作并且是免费/开源的。如果有一个我也缺少的现有工具就好了!
bre*_*ent 15
你可以使用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
Run Code Online (Sandbox Code Playgroud)
其中 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
Run Code Online (Sandbox Code Playgroud)
l0c*_*b0x 10
我正要推荐wireshark(因为它有很多“对话”功能),但它不是命令行工具。不过,您可以尝试tshark,它是一个接近于wireshark 的命令行分析器工具。输出应该有(有点)你正在寻找的东西(下面的例子):
tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"
Run Code Online (Sandbox Code Playgroud)
结果:
| <- | | -> | | Total |
| Frames Bytes | | Frames Bytes | | Frames Bytes |
10.2.3.23 <-> 10.2.3.67 42 15341 35 4890 77 20231
Run Code Online (Sandbox Code Playgroud)
小智 7
还有一个名为“iftop”的工具,它显示主机接口上的带宽使用情况。我认为 iftop 可以执行您所描述的操作,但通常它的界面类似于“top”。
所以对于你的例子,我认为你可以创建配置文件来提供你的过滤器代码。
所以这是我的配置文件中的过滤器代码。
$ cat /tmp/conf
filter-code: port http and host google.com
Run Code Online (Sandbox Code Playgroud)
然后,我运行以下命令来查看网络流量。
$ sudo iftop -c /tmp/conf
Run Code Online (Sandbox Code Playgroud)
不确定这是否是最佳选择,但肯定是实现所需的一种方法。哈。