Опция 1

Опция 1

Представьте, что в маршрутизаторе на базе Linux (дистрибутив Debian) у вас много сетевых карт. Как вывести количество открытых соединений для данной сетевой карты? (обходные пути являются приемлемыми ответами)

решение1

Опция 1

netstat | awk '$4 ~ /xxx.xxx.xxx.xxx/ { ++count } END { print count }'

Гдеxxx.xxx.xxx.xxx— это IP-адрес сетевой карты.

  • netstatнайдет все открытые соединения
  • awkсоответствует IP-адресу сетевой карты
    • $4говорит awkо том, что мы будем смотреть на 4-й столбец
    • { ++count } END { print count }говорит awkподсчитывать каждый раз, когда он находит совпадение. Когда это сделано, распечатать окончательный счет.

Вариант 2

netstat | grep xxx.xxx.xxx.xxx -c

Гдеxxx.xxx.xxx.xxx— это IP-адрес сетевой карты.

  • netstatнайдет все открытые соединения
  • grepсоответствует IP-адресу сетевой карты
    • -cпросит grepподсчитать количество совпадений, а не распечатывать их.

Вариант 1 имеет преимущество в том, что он соответствует только по полю локального адреса, а не где-либо еще. Вариант 2 может дважды учитываться, если есть открытые соединения, где удаленный адрес указывает на локальный хост.

решение2

Вы не можете. Базовые IP-маршрутизаторы просто пересылают датаграммы без сохранения состояния, просматривая только уровень IP. Они ничего не будут знать о соединениях, для которых они не являются конечной точкой.

Межсетевой экран SPI или шлюз NAT — это совсем другая история.

решение3

Маршрутизатор не отслеживает соединения — вам нужно спросить об этом брандмауэр.

Брандмауэр Linux поддерживает отслеживание состояния «подключений», но по умолчанию он не обязательно активен.Еслиу вас есть что-нибудь из этого:

  • правило iptables, которое использует -m stateили -m conntrack,
  • или правило nftables, которое использует ct state,
  • или любые правила в таблицах NAT iptables/nftables (например, цепочка nat/prerouting),

то система conntrack брандмауэра активна, и вы можете просмотреть ее «таблицу состояний» с помощью:

conntrack -L

Однако, поскольку это делается брандмауэром (а не маршрутизатором), состояния не имеют отношения к какому-либо конкретному интерфейсу — их интересует только адресация L3/L4.

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