Linux
在 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
您將無法獲得所需的資訊。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
. 但是您的里程可能會有所不同。