在我的场景中,我的主机有一个具有多个 IP 地址的网络接口。我想获取每个IP地址的流量。我想要接收和发送的数据包和字节以及错误数据包。我的界面是:
qg-6108c4a2-94@if209: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:9e:58:d2 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 173.20.12.8/24 brd 173.20.12.255 scope global qg-6108c4a2-94
valid_lft forever preferred_lft forever
inet 173.20.12.7/32 brd 173.20.12.7 scope global qg-6108c4a2-94
valid_lft forever preferred_lft forever
inet 173.20.12.11/32 brd 173.20.12.11 scope global qg-6108c4a2-94
valid_lft forever preferred_lft forever
inet 173.20.12.13/32 brd 173.20.12.13 scope global qg-6108c4a2-94
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe9e:58d2/64 scope link
valid_lft forever preferred_lft forever
答案1
您将无法获得您想要的信息。 IP 是同一单个接口的一部分,因此,它们仅在物理级别进行计数。我应该注意“ifconfig”是不足且过时。该ip
命令将向您显示物理级别的摘要。
% ip -s link show br1000
10: br1000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:10:18:aa:a8:20 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
15661372003 108647365 0 0 0 0
TX: bytes packets errors dropped carrier collsns
278081828962 149463091 0 0 0 0
您需要使用iptables
或nftables
跟踪您想要跟踪的内容。
# iptables example - probably incorrect, I don't have a dev machine to test this.
iptables -A INPUT -i br1000 -d 10.100.0.1/24 -j LOG
iptables -A OUTPUT -i br1000 -s 10.100.0.1/24 -j LOG
# nftables example - probably incorrect, I don't have a dev machine to test this.
nft add rule ip filter INPUT iifname "br1000" ip daddr 10.100.0.1 counter log
nft add rule ip filter OUTPUT iiname "br1000" ip saddr 10.100.0.1 counter log
还有其他补充软件也可以为您提供帮助 - 第一个想到的是vnstat
。但您的里程可能会有所不同。