在 Linux 中,如何取得具有多個 IP 位址的單一介面上每個 IP 位址的流量?

在 Linux 中,如何取得具有多個 IP 位址的單一介面上每個 IP 位址的流量?

在我的場景中,我的主機有一個具有多個 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

您需要使用iptablesnftables追蹤您想要追蹤的內容。

# 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。但您的里程可能會有所不同。

相關內容