[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Netstat blickt nicht in Docker Container



Am Samstag, den 11.10.2014, 01:48 +0200 schrieb Michael Schuerig:
> On Saturday 11 October 2014 00:53:56 Christian Knoke wrote:
> > Michael Schuerig schrieb am 10. Oct um 18:56 Uhr:
> [versucht herauszufinden, ob es eine offene Verbindung in einen Docker 
> Container gibt]
> 
> > Wenn ich es richtig verstehe, dann hat der docker container eine
> > eigene IP und ein interface auf der bridge docker0. Ich kenne docker
> > nicht weiter.
> 
> Ja, genau.
> 
> > Dann sind diese Verbindungen für den kernel auf dem dein script läuft,
> > nur durchgehende Verbindungen. Sie belegen keine sockets.
> 
> Das verstehe ich, wenn Verbindungen zwischen zwei Netzwerk-Interfaces 
> durchgereicht werden oder von einer "echten" VM ans Interface gehen.
> 
> Mit Docker ist das aber etwas anders, denke ich. Es gibt zwar eine 
> Abschottung des Namespace, sodass man aus dem Container nicht nach Außen 
> auf den Host sehen kann. Umgekehrt ist es aber kein Problem, vom Host 
> die Prozesse zu sehen, die im Container laufen. Ich hatte gehofft, dass 
> es vergleichbar auch für Sockets möglich ist.
> 
> > netstat kann die nicht anzeigen. Auf meiner firewall sehe ich die
> > beispielsweise, wenn ich /proc/net/nf_conntrack abfrage. Es gibt aber
> > auch iptables Regeln, die diese Pakete loggen können.
> 
> Ja, da kann ich die Verbindung tatsächlich sehen. Allerdings bleibt der 
> Eintrag noch eine ganze Weile erhalten, nachdem die Verbindung bereits 
> geschlossen wurde. Über den Daumen gemessen 10min. Für meinen 
> Anwendungszweck, also einen arbeitslosen Server Schlafen zu legen, passt 
> das, aber ich hätte auch gerne eine Möglichkeit, um punktgenau 
> festzustellen, ob es eine Verbindung gibt.
> 
> Auf jeden Fall aber vielen Dank für den Hinweis auf 
> /proc/net/nf_conntrack.

Ich schau mir Liveverbindungen immer mit iptstate (aus dem gleichnamigen
Paket) an. Schau mal, ob dir die Ausgabe davon reicht.

# iptstate -1 -d <Ziel-IP> -D <Ziel-Port>

Mit diesem Programm siehst du auch die TTL des NAT-Eintrages.
Bei UDP sind es per Default 2min, bei TCP 30sec wenn die Verbindung
ordnungsgemäß geschlossen wurde.

Eine andere Möglichkeit wäre diese Verbindungen mit iptables zu
erlauben. Beim Anzeigen der Regeln steht vorne ein Zähler wieviel Pakete
durch diese Regel weitergereicht wurden.
Ein Script könnte diesen Zähler temporär speichern und beim nächsten
Aufruf vergleichen. Ist der Zähler weiter gewachsen, laufen Daten durch.
Wenn er gleich geblieben ist, besteht keine Verbindung mehr da keine
Pakete mehr durchgereicht wurden.

-- 
mfG Sascha

~~~
Wenn es einfach aussieht, ist es schwer und wenn es schwer aussieht, ist
es unmöglich.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: