Herausfinden welcher Container auf einem Port lauscht


mgutt

Recommended Posts

Ich konnte gerade einen Container nicht starten, weil der Port bereits genutzt wird. Er wird allerdings nicht in der Container Übersicht angezeigt. Es konnte also nur ein Container sein, der das Host-Netzwerk nutzt. Durch nacheinander stoppen, konnte ich den Container ermitteln. Doch da gibt es doch bestimmt auch eine andere Methode für oder?

Link to comment

hab mal schnell geschaut ... so einfach sieht das nicht aus da selbst die custom:br0 Anzeigen auch keine Logik haben wie in meinem Beispiel ...

 

das ist weder eine Echtabfrage noch was im template hinterlegt ist noch was als expose hinterlegt ist im dockerfile an sich.

 

Da muss ich jetzt doch passen und andere haben da vielleicht eher eine Idee die "Echtabfrage" zu gestalten der docker zugehörigen listen ports

  • Thanks 1
Link to comment
3 minutes ago, alturismo said:

so einfach sieht das nicht

Hmm doof. Ein einfacher Portscan bringt natürlich auch nichts, weil bei Host weiß ich dann ja nicht ob das Unraid selbst oder der Container ist. Bleibt eigentlich nur im Container selbst. Also zB so:

su
apt-get update
apt-get install lsof
lsof -i -P -n | grep LISTEN

 

Auf die Art bekomme ich gefühlt 1000 Ergebnisse, aber alle Ports:

lsof -i -P -n | grep LISTEN
nginx    233 root   18u  IPv4 32304866      0t0  TCP *:80 (LISTEN)
nginx    233 root   19u  IPv6 32304867      0t0  TCP *:80 (LISTEN)
nginx    233 root   20u  IPv4 32304868      0t0  TCP *:443 (LISTEN)
nginx    233 root   21u  IPv6 32304869      0t0  TCP *:443 (LISTEN)
nginx    233 root   22u  IPv4 32304870      0t0  TCP *:81 (LISTEN)
nginx    233 root   23u  IPv6 32304871      0t0  TCP *:81 (LISTEN)
nginx    233 root   24u  IPv4 32304872      0t0  TCP *:25565 (LISTEN)
nginx    233 root   25u  IPv6 32304873      0t0  TCP *:25565 (LISTEN)
nginx    233 root   26u  IPv4 32304874      0t0  TCP *:25566 (LISTEN)
nginx    233 root   27u  IPv6 32304875      0t0  TCP *:25566 (LISTEN)
node     248 root   21u  IPv6 32301913      0t0  TCP *:3000 (LISTEN)
nginx   1112 root   18u  IPv4 32304866      0t0  TCP *:80 (LISTEN)
nginx   1112 root   19u  IPv6 32304867      0t0  TCP *:80 (LISTEN)
nginx   1112 root   20u  IPv4 32304868      0t0  TCP *:443 (LISTEN)
nginx   1112 root   21u  IPv6 32304869      0t0  TCP *:443 (LISTEN)
...
und noch viel mehr...

 

Trotzdem nervig, wenn man das bei jedem Container einzeln machen muss und wer weiß ob der Container vielleicht später noch mehr Ports aufmacht. Die Kontrolle fehlt dann natürlich. Wobei.. Docker nutzt doch cgroups. Da kann man doch bestimmt die Capability entfernen, dass der einfach mehr Ports aufmacht. Muss ich mal suchen.

Link to comment
8 hours ago, Ford Prefect said:

Geht es Dir um die Kontrolle?

 

ich schätze (wenn ich es richtig verstanden habe) eher

 

8 hours ago, Ford Prefect said:

Oder geht es um Vermeidung von Ressourcen-Konflikten?

 

 

einfache Übersicht aller wirklich genutzten Ports der docker(s) auf dem host (zzgl. der bridge, proxynet's, was auch immer)

um Konflikte zu vermeiden ohne genaue Info's zu haben welcher docker jetzt ... das kann auftreten wenn docker's im host mode laufen.

 

Ich habe schon lange umgestellt auf custom:br0 und hab glücklicherweise auch keine Probleme damit (macvlan), gibt jedoch einige die damit issues haben, daher in 6.10 auch die ipvlan Ergänzung in der custom:br0 (welche jedoch bei mir Probleme macht). Sieht man ja auch auf meinem screen, bei mir haben alle docker(s) Ihre eigene ip und gut ist, ich hatte auch die Schn... voll nach ports zu schauen und war froh mit macvlan (6.8.3 oder so wurde das eingeführt)

 

in der Konstellation mit host mode docker(s) wüsste ich jetzt auch nicht wie schnell eine Übersicht zu greifen wäre der ports in use ...

Link to comment
57 minutes ago, alturismo said:

Ich habe schon lange umgestellt auf custom:br0 und hab glücklicherweise auch keine Probleme damit (macvlan), gibt jedoch einige die damit issues haben,

Ja, genau.

Ich habe aber noch "echte" IP-VLANs aktiviert.

Damit umgehe ich das "Problem", dass Docker sonst nicht mit dem unRaid-Host kommunizieren können (auf der gleichen bridge).

Es wird halt einfach von einer br0.vlan-x zur br0.vlan-y geroutet...und die Firewall kann unerwünschte Kommunikationsströme filtern...muss halt durch den Router durch, aber meiner hat auch ne 10G Anbindung bzw. hatte ihn in einer VM.

 

Probleme waren im Zusammenhang mit VMs, oder? Bisher bei mir nicht aufgetreten.

Manche Docker sind kacke gebaut und kommen damit nicht zurecht, aber da kann unRaid nix dafür

57 minutes ago, alturismo said:

daher in 6.10 auch die ipvlan Ergänzung in der custom:br0 (welche jedoch bei mir Probleme macht).

...bin gerade erst auf die 6.9.2 umgestiegen....mal sehen, klingt interessant, aber die individuelle MAC möchte ich im Moment eher behalten.

 

57 minutes ago, alturismo said:

in der Konstellation mit host mode docker(s) wüsste ich jetzt auch nicht wie schnell eine Übersicht zu greifen wäre der ports in use ...

Ja, das ginge eher nur durch ein Port-Probe, aber die Liste ist einfach zu lang und dafür Ressourcen verschwenden...?

Link to comment
32 minutes ago, Ford Prefect said:

Ja, das ginge eher nur durch ein Port-Probe, aber die Liste ist einfach zu lang und dafür Ressourcen verschwenden...?

exakt

 

32 minutes ago, Ford Prefect said:

Damit umgehe ich das "Problem", dass Docker sonst nicht mit dem unRaid-Host kommunizieren können

das geht auch ohne "echte" vlan's nur am Rand falls übersehen

 

image.png.c4fc3c71b8b02785d16cb331c8d59f93.png

 

34 minutes ago, Ford Prefect said:

aber die individuelle MAC möchte ich im Moment eher behalten.

genau das ist hier das Problem mit ipvlan und einer Fritz ... da wird die gewaltig durcheinander ;)

 

10G Karte hab ich raus da die mir meine RTX3070 unnötig heiß gemacht hat und ich in Wirklichkeit keinen 10G Bedarf habe, war nice aber gebraucht habe ich das ... nicht wirklich ;)

 

36 minutes ago, Ford Prefect said:

Probleme waren im Zusammenhang mit VMs, oder? Bisher bei mir nicht aufgetreten.

anscheinend, aber wie gesagt, kann ich nicht nachvollziehen da weder mit der 10G Karte noch jetzt mit der 1G onboard hier soweit alles ok ist

Link to comment
10 hours ago, Ford Prefect said:

Geht es Dir um die Kontrolle?

In einer idealen Welt würde ich gerne direkt in der Container-Übersicht sehen können, welche Ports wirklich offen sind. Und sollte es Wege geben, wäre das ja ein Ansatz die Unraid GUI für alle entsprechend anzupassen.

Link to comment
9 minutes ago, alturismo said:

das geht auch ohne "echte" vlan's nur am Rand falls übersehen

Ja, das einzuschalten wollte ich vermeiden.

Finde es besser mit der VLAN Trennung...da habe ich dann alle Filter in der Firewall, an einer Stelle.

 

9 minutes ago, alturismo said:

genau das ist hier das Problem mit ipvlan und einer Fritz ... da wird die gewaltig durcheinander ;)

Ich habe endlich, seit 1 Woche meine Internet-Anschlüsse Frittenfrei zu betreiben. ;-)

Denke aber das Problem ist eher, das es ge-natted werden müsste im unraid Host, was über ipvlan dahinter los ist...im gleichen Netzsegment braucht es ja die MAC...da wird jeder Router verwirrt.

 

9 minutes ago, alturismo said:

10G Karte hab ich raus da die mir meine RTX3070 unnötig heiß gemacht hat und ich in Wirklichkeit keinen 10G Bedarf habe, war nice aber gebraucht habe ich das ... nicht wirklich ;)

In Zeiten von Homeoffice und -schooling war mir der extra headroom, bei einer 1Gbps I-Net Verbindung ganz recht.

Dann weiss man wenigstens, dass es da nicht lagged, wenn die Family sich über schlechtes WLAN/I-Net beschwert ;-)

  • Like 1
Link to comment
18 minutes ago, mgutt said:

In einer idealen Welt würde ich gerne direkt in der Container-Übersicht sehen können, welche Ports wirklich offen sind. Und sollte es Wege geben, wäre das ja ein Ansatz die Unraid GUI für alle entsprechend anzupassen.

Das Problem ist, dass Du mit einer passiven Methode zwar offene Ports auf dem Host finden kannst, aber die Zuordnung zu einem Docker nicht hast.

Siehe den Post drüber von @alturismo.

Man müsste also, ähnlich wie bei nem healthcheck, das innerhalb des Dockers machen und dann, zB via SNMP im unraid Host einsammeln und im UI ausgeben.

Annahme ist, dass dies bei allen network-models im Docker gleich funktioniert, also auch da wo kein portmap explizit gemacht wird.

 

 

Link to comment
4 hours ago, Ford Prefect said:

aber die Zuordnung zu einem Docker nicht hast.

Das hat mir zu denken gegeben und es geht doch. Wenn ich zB das oben genannte Kommando auf dem Host ausführe, dann identifiziert sich der NPM Container auch nur mit dem Servicenamen "nginx" und "node":

image.png.d73924e45e1dff66b06b5384c69a31db.png

 

Ich kann also nicht sehen, dass diese Dienste gar nicht auf dem Host laufen, sondern in einem Container. Allerdings sehe ich dessen PID 13351, welche ja von irgendeinem Haupt-Prozess erstellt wurde. Ich habe dann erst mal alle Haupt-PIDs aller Container ausgeben lassen:

image.png.e219c9f770925859911b9a5c2788bd12.png

 

Und genau damit bekomme ich nun alle Sub-PIDs, die diese PID erstellt hat und schon habe ich "13351" und "13366" gefunden:

image.png.b853d67b2f0b0bfe3cf94c9b14d5c0a8.png

 

Schlussfolgerung:

Man liest die PIDs jedes Containers aus, dann alle Sub-PIDs und zuletzt ermittelt man auf welchen Ports die Prozesse des Containers lauschen. Damit sollte sich die GUI so anpassen lassen, dass sie die wirklich offenen Ports anzeigt. Mal sehen ob ich das umgesetzt bekomme. Ist ja denke ich auch interessant für br0 Container, dass man mal sieht was die wirklich so offen haben.

  • Like 2
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.