Wie erhalte ich die Anzahl der (derzeit) eingerichteten TCP-Verbindungen für einen bestimmten Port?

7

Wie erhalte ich die Anzahl der (derzeit) eingerichteten TCP-Verbindungen für einen bestimmten Port?

Ich habe es geschafft, Zähler für den Verkehr zum Laufen zu bringen, indem ich zB für ausgehendes RTMP gearbeitet habe.

iptables -N $CHAIN 
iptables -I OUTPUT -j $CHAIN
iptables -A $CHAIN -p tcp --sport 1935
iptables-save

Aber jetzt brauche ich die Anzahl der aktuellen (kein Zähler) Verbindungen für jedes Protokoll

Ich kann die Gesamtzahl erhalten mit: netstat -ant | grep GEGRÜNDET | wc -l

Kann jemand helfen? Ich bin kein iptables Guru.

James Bennet
quelle

Antworten:

7

Sie sagen, Sie sind kein Guru, aber wer von uns ist das? Sie haben den größten Teil des schweren Hebens erledigt. Ich bin sicher, der Rest wird Ihnen in ein oder zwei Minuten einfallen.

Bis dahin versuchen Sie es netstat -an|grep ESTABLISHED | grep -w 1935.

MadHatter
quelle
lsof -ni: 1935 -sTCP: ESTABLISHED | wc -l wurde mir auch vorgeschlagen? Gibt es einen Vorteil zwischen lsof und netstat?
James Bennet
Beide hängen an den zugrunde liegenden Kernelstrukturen. Die Binärdateien sind ungefähr gleich groß und weisen daher vergleichbare Speicherflächen auf. Auf Anhieb kann ich mir keinen großen Unterschied vorstellen.
MadHatter
Mir wird gesagt, dass sie langsam sein sollen (die Box wird ungefähr 20.000 Verbindungen haben) und iptables verwenden sollen, aber es scheint mir ungeeignet zu sein?
James Bennet
Iptables scheint mir auch ungeeignet zu sein. Sowohl iptables als auch netstat / lsof sind einfach Userspace-Tools, die auf Kernel-Strukturen zugreifen. Daher bin ich mir nicht ganz sicher, warum eines viel langsamer als die anderen ist, es sei denn, die Userspace-Teile waren sehr unterschiedlich groß (sie sind es nicht). Wie oft beabsichtigen Sie, diese Statistik abzufragen?
MadHatter
Alle 5 Minuten Cron Job.
James Bennet
5

Für mich geht das:

# netstat -ant | grep ESTABLISHED | wc -l

Ausgabe:

total connection 22....
Radhe
quelle
Ah, ich habe das "t" für TCP vergessen, danke.
James Bennet
2

Es gibt noch einen Befehl, wenn Sie eine Liste der IP-Adressen und der Anzahl der verwendeten Verbindungen wünschen

netstat -natu | awk '{print $ 5}' | cut -d: -f1 | sortieren | uniq -c | sort -n

es gibt Ihnen IP und Verbindungsliste ...

Danke

Radhe
quelle
Rackbank, bitte bearbeiten Sie dies in Ihrer vorherigen Antwort, anstatt eine zweite neue zu veröffentlichen.
MadHatter
Dies unterscheidet sich von der vorherigen ... Benutzer wird verwirrt sein
Radhe
2

netstat + grepist eine gute und einfache Option für einige Verbindungen, aber wenn Sie eine große Anzahl von Verbindungen haben, würde ich empfehlen, sswie in nixCraft empfohlen .

Zum Beispiel: ss -s

Total: 78 (kernel 79)
TCP:   31 (estab 27, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 16

Transport Total     IP        IPv6
*     79        -         -        
RAW   0         0         0        
UDP   4         2         2        
TCP   31        2         29       
INET      35        4         31       
FRAG      0         0         0  
Tinti
quelle