Stellen Sie sich vor, Sie haben in einem Linux-basierten Router (einer Debian-Distribution) viele Netzwerkkarten. Wie kann man die Anzahl der offenen Verbindungen für eine bestimmte Netzwerkkarte ausdrucken? (Workarounds sind akzeptable Antworten)
Antwort1
Option 1
netstat | awk '$4 ~ /xxx.xxx.xxx.xxx/ { ++count } END { print count }'
Woxxx.xxx.xxx.xxxist die IP-Adresse der Netzwerkkarte.
netstat
findet alle offenen Verbindungenawk
stimmt mit der IP-Adresse der Netzwerkkarte überein$4
sagtawk
, dass wir uns die vierte Spalte ansehen werden{ ++count } END { print count }
weist anawk
, für jedes Mal, wenn eine Übereinstimmung gefunden wird, hochzuzählen. Wenn es fertig ist, drucken Sie die endgültige Anzahl aus.
Option 2
netstat | grep xxx.xxx.xxx.xxx -c
Woxxx.xxx.xxx.xxxist die IP-Adresse der Netzwerkkarte.
netstat
findet alle offenen Verbindungengrep
stimmt mit der IP-Adresse der Netzwerkkarte überein-c
fordert dazu aufgrep
, die Anzahl der Übereinstimmungen zu zählen, anstatt sie auszudrucken.
Option 1 hat den Vorteil, dass nur das lokale Adressfeld und nicht alle anderen Felder übereinstimmen. Option 2 zählt möglicherweise doppelt, wenn offene Verbindungen bestehen, bei denen die Remoteadresse auf den lokalen Host verweist.
Antwort2
Das geht nicht. Einfache IP-Router leiten Datagramme einfach zustandslos weiter und betrachten nur die IP-Schicht. Sie würden nichts über Verbindungen wissen, für die sie nicht der Endpunkt sind.
Bei einer SPI-Firewall oder einem NAT-Gateway sieht die Sache anders aus.
Antwort3
Der Router verfolgt keine Verbindungen – Sie müssen die Firewall fragen.
Die Linux-Firewall unterstützt die zustandsbehaftete „Verbindungsverfolgung“, diese ist jedoch nicht unbedingt standardmäßig aktiv.WennSie haben eines davon:
- eine iptables-Regel, die
-m state
oder verwendet-m conntrack
, - oder eine nftables-Regel, die verwendet
ct state
, - oder irgendwelche Regeln in den iptables/nftables NAT-Tabellen (z.B. die nat/prerouting-Kette),
dann ist das Conntrack-System der Firewall aktiv und Sie können sich dessen „Statustabelle“ wie folgt ansehen:
conntrack -L
Da dies jedoch von der Firewall (und nicht vom Router) durchgeführt wird, haben die Zustände keine Beziehung zu einer bestimmten Schnittstelle – sie betreffen nur die L3/L4-Adressierung.