![CentOS监控端口流量](https://linux22.com/image/566683/CentOS%E7%9B%91%E6%8E%A7%E7%AB%AF%E5%8F%A3%E6%B5%81%E9%87%8F.png)
我正在寻找一个工具来监控 CentOS 服务器某些端口上的流量。在此服务器上,每个服务都在 3000 到 3050 的端口上运行,我想比较这些服务的流量消耗;比如哪个是主要通话者/监听者。
/proc/net/dev 仅提供在网络接口上发送和接收的总体位数,而不是端口级别的位数。
我发现每个谷歌工具都提供了接口级别的报告(例如 eth0),而没有提供端口级别的报告,但可能毕竟我搜索的还不够。
你们知道有什么办法可以做这样的事吗?
答案1
或者你可以使用无目标的 iptables,这是非常合法且无害的:
iptables -A INPUT -p tcp --dport 3000
iptables -A INPUT -p tcp --dport 3001
...
iptables -A INPUT -p tcp --dport 3050
和
iptables -A OUTPUT -p tcp --sport 3000
iptables -A OUTPUT -p tcp --sport 3001
...
iptables -A OUTPUT -p tcp --sport 3050
由于这些规则都没有目标,因此它们都不会改变交通流量。但是它们中的每一个将要增加每个匹配数据包的数据包和字节数,因此iptables -L -n -v
应该返回类似
15733 933K tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000
5733 133K tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3001
...
请注意,这假设您现在没有使用任何防火墙;如果使用,这些规则将需要放在 INPUT 和 OUTPUT 链中的正确位置,即首先。
考虑到您正在监控的端口数量,您可能希望将其委托给用户定义的链以保持您的 iptables 输出合理;但这对您来说是一个练习!
答案2
[root@bespinwerks ~] # tcpdump -i eth0 port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:23:39.478997 IP dw135-198-237-222.dhcpw.sest.example.com.3364 > bespinwerks.http: Flags [S], seq 388975608, win 65535, options [mss 1260,nop,wscale 1,nop,nop,sackOK], length 0
12:23:39.479043 IP bespinwerks.http > dw135-198-237-222.dhcpw.sest.example.com.3364: Flags [S.], seq 3273086762, ack 388975609, win 5840, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
12:23:39.479982 IP dw135-198-237-222.dhcpw.sest.example.com.3364 > bespinwerks.http: Flags [.], ack 1, win 32768, length 0
12:23:39.480543 IP dw135-198-237-222.dhcpw.sest.example.com.3364 > bespinwerks.http: Flags [P.], seq 1:595, ack 1, win 32768, length 594
12:23:39.480564 IP bespinwerks.http > dw135-198-237-222.dhcpw.sest.example.com.3364: Flags [.], ack 595, win 110, length 0
12:23:39.542350 IP bespinwerks.http > dw135-198-237-222.dhcpw.sest.example.com.3364: Flags [.], seq 1:3781, ack 595, win 110, length 3780
12:23:39.543976 IP dw135-198-237-222.dhcpw.sest.example.com.3364 > bespinwerks.http: Flags [.], ack 2521, win 32768, length 0
12:23:39.544007 IP bespinwerks.http > dw135-198-237-222.dhcpw.sest.example.com.3364: Flags [.], seq 3781:7561, ack 595, win 110, length 3780
12:23:39.544884 IP dw135-198-237-222.dhcpw.sest.example.com.3364 > bespinwerks.http: Flags [.], ack 3781, win 32768, length 0
编辑:重新阅读你的问题后,伊夫托普可能是更好的选择:
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb
+----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------
bespinwerks:ssh => dw135-198-237-222.dhcpw.sest.example.com:dj-ilm 1.48Kb 1.88Kb 2.08Kb
<= 160b 160b 177b
192.168.1.255:netbios-dgm => STATION:netbios-dgm 0b 0b 0b
<= 0b 194b 51b
192.168.1.255:17500 => rm-macbook:17500 0b 0b 0b
<= 0b 109b 57b
255.255.255.255:17500 => rm-macbook:17500 0b 0b 0b
<= 0b 109b 57b
255.255.255.255:17500 => GACDTL05RX7322:17500 0b 0b 0b
<= 0b 0b 116b
bespinwerks:41307 => bespin:domain 0b 0b 16b
<= 0b 0b 36b
bespinwerks:39407 => bespin:domain 0b 0b 15b
<= 0b 0b 21b
bespinwerks:44091 => bespin:domain 0b 0b 15b
<= 0b 0b 20b
bespinwerks:44738 => bespin:domain 0b 0b 15b
<= 0b 0b 19b
bespinwerks:59540 => bespin:domain 0b 0b 16b
<= 0b 0b 16b
bespinwerks:49364 => bespin:domain 0b 0b 15b
<= 0b 0b 15b
192.168.1.255:17500 => STATION:17500 0b 0b 0b
<= 0b 0b 29b
答案3
网络流量监控和伊夫托普在我看来,前者非常小而且高效。