Как в Linux я могу получить трафик каждого IP-адреса на одном интерфейсе с несколькими IP-адресами?

Это то, для чего вы могли бы рассмотреть возможность использования небольшой базы данных -, используя, например, csvsqlиз csvkit (, который также предоставляет удобную csvformatутилиту ).

Например, предположим, что ваши данные находятся на вкладке -в отдельных файлах с именами intervalsи positionsи с использованием диалекта по умолчанию sqlite:

csvsql --tabs --query '
SELECT id,number,group_concat(id_uniq) AS "assigned1" 
FROM positions JOIN intervals USING(id)
WHERE number >= numberA AND number <= numberB
GROUP BY id,number ORDER BY id,number
' positions intervals | csvformat --out-tabs
id  number  assigned1
1   19  g1,g2,g3
1   90  g6,g7
2   20  g9
2   93  g11
2   120 g11

Несколько сложнее получить N/Aзаписи, :для этого вы можете соединить исходную positionsтаблицу с результатами и найти NULLзначения поля assigned1:

csvsql --tabs --query '
SELECT id,number,IFNULL(assigned1,"NA") assigned1 FROM positions 
LEFT JOIN (
  SELECT id,number,group_concat(id_uniq) AS "assigned1" 
  FROM positions JOIN intervals USING(id) 
  WHERE number >= numberA AND number <= numberB
  GROUP BY id,number
) USING(id,number) ORDER BY id,number 
' positions intervals | csvformat --out-tabs
id  number  assigned1
1   4   NA
1   19  g1,g2,g3
1   36  NA
1   49  NA
1   90  g6,g7
2   1   NA
2   20  g9
2   89  NA
2   93  g11
2   120 g11

0
11.04.2020, 08:00
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. Но ваш пробег может отличаться.

1
19.03.2021, 02:30

Теги

Похожие вопросы