Кол-во входящих/исходящих tcp соединений (на выбранный порт)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

distress
Сообщения: 84
ОС: RHEL5

Кол-во входящих/исходящих tcp соединений

Сообщение distress »

Приветствую.
Имеется - http(s) load balancer(железка), внутри какой-то закрытый linux. Сей девайс способен высчитывать кол-во входящих соединений в секунду на свой 80-й(443-й) порт и кол-во исходящих соединений в секунду к его back-endам. В реальном времени и не напрягаясь. Подскажите пожалуйста как это реализовать на нормальной системе?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Кол-во входящих/исходящих tcp соединений

Сообщение sash-kan »

distress писал(а):
12.09.2009 10:15
В реальном времени и не напрягаясь.
как удивительно! действительно, не напрягаясь? и для каждой цепочки/правила в netfilter-е? не может быть, не верю. этого просто не может быть.

p.s. man iptables-save на предмет -c. man iptables на предмет -L -v -x.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: Кол-во входящих/исходящих tcp соединений

Сообщение distress »

sash-kan писал(а):
12.09.2009 16:36
distress писал(а):
12.09.2009 10:15
В реальном времени и не напрягаясь.
как удивительно! действительно, не напрягаясь? и для каждой цепочки/правила в netfilter-е?

К сожалению, я не знаю чем именно девайс мониторит соединения. Может не netfilter/iptables? Всё, что у меня есть, это достаточно простая веб-морда по добавлению back-endов и статистикой соединений к ним. Никакого другого доступа железка не предоставляет.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Кол-во входящих/исходящих tcp соединений

Сообщение sash-kan »

вообще-то мой ответ (по крайней мере первая его строчка) призван был продемонстрировать иронию.

distress писал(а):
12.09.2009 18:11
Может не netfilter/iptables?
если внутри действительно стоит ядро linux, то очень сложно себе представить сетевую работу ядра без его сетевой подсистемы netfilter. ещё сложнее представить цель, с которой сборщик ядра выключил счётчики (если это вообще отключаемо какими-нибудь конфигурационными опциями).
т.е., слишком велика вероятность, что netfilter в этом устройстве действительно работает и счётчики пакетов/байтов действительно функционуируют.
а получить их значения (например, с помощью программы iptables или busybox, собранной с соответстующей функциональностью) труда не представляет. как — я написал выше.

p.s. именно таким образом проще всего и получать статистику по пакетам/байтам, прошедшим через те или иные правила/цепочки netfilter-а. на нормальной системе с ядром linux.

upd. попробовал ещё разок подёргать свой телепатический модуль. он подсказал мне следующее:
возможно, вы имели в виду: «как извне получить собранную роутером статистику?».
единственное средство: спросить сам роутер.
если он для коммуникации с внешним миром использует лишь веб-интерфейс, то только из веб-интерфейса вы эту информацию и можете извлечь.
частенько в роутерах задействуется и snmp-интерфейс. если он задействован, возможно, через него отдаётся и интересующая вас статистика. проверьте каким-нибудь snmp-browser-ом. есть и графические мордочки (для начинающего это будет более наглядно) с соответствующей функциональностью. на вскидку: mbrowse, tkmib.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: Кол-во входящих/исходящих tcp соединений

Сообщение distress »

sash-kan писал(а):
16.09.2009 14:50
вообще-то мой ответ (по крайней мере первая его строчка) призван был продемонстрировать иронию.

я предполагал, что для каждого правила(back-end-a) пишется лог, который потом обрабатывается. Теоретически это должно было требовать много ресурсов. Особенно учитывая, что там 1ггц via cpu.
c "iptables -L -v -x" всё должно быть проще и легче. спасибо. теперь могу снимать статистику по пакетам и байтам. остается только одна проблема. именно соединения. вот что было сделано для этого:

полный конфиг. строчка "-A OUTPUT -m state --state NEW -m tcp -p tcp -j ACCEPT" добавлена к дефолтному конфигу, чтобы смотреть статистику по исходящим соединениям.

Код: Выделить всё

[root@fl ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT



что получаю в счетчике:

Код: Выделить всё

[root@fl ~]# iptables -L -x -v
...
Chain OUTPUT (policy ACCEPT 3981 packets, 407510 bytes)
    pkts      bytes target     prot opt in     out     source               destination
     319    19140 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp


является ли показатель pkts кол-вом всех исходящих tcp соединений?
или (взято тут) это значение = SYN и ACK пакеты. SYN-ACK пакеты входящие потому вроде не должны учитываться т.к. чепочка "OUTPUT".

UPD:
добавил правило:

Код: Выделить всё

-A OUTPUT -d 192.168.0.10 -m state --state NEW -m tcp -p tcp -j ACCEPT


далее

Код: Выделить всё

telnet 192.168.0.10 80


5 коннектов - 5 пакетов.

Код: Выделить всё

Chain OUTPUT (policy ACCEPT 1773 packets, 264828 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       5      300 ACCEPT     tcp  --  any    any     anywhere            192.168.0.10 state NEW tcp


Похоже, всё честно измеряет.
sash-kan, большое спасибо за помощь!
Спасибо сказали: