Как в 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

Вам нужно будет использовать 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. Но ваш опыт может отличаться.

Связанный контент