Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdTCPServer in einem Dienst nicht erreichbar (https://www.delphipraxis.net/217682-tidtcpserver-einem-dienst-nicht-erreichbar.html)

Jelen 18. Aug 2025 19:18

TIdTCPServer in einem Dienst nicht erreichbar
 
Hallo,
auf einem virtuellen Server mit Win Server 2022 habe ich einen Dienst, der soweit auch einwandfrei läuft. Nun soll er aber für verschiedene Clients per TCP erreichbar sein und auf Nachrichten reagieren. Dazu habe ich ihm die Indy TIdTCPServer eingepflanzt. Die wird auch einwandfrei gestartet.
Wenn ich dann auf dem Server selbst eine normale VCL-Anwendung starte, kann diese mit dem Dienst kommunizieren, alles bestens.
Nun soll das Ganze aber über's Internet funktionieren. Wenn ich dieselbe VCL-Client-Anwendung auf irgendeinem anderen Rechner laufen lasse, ist der Server-Dienst nicht erreichbar - timeout.
Nachdem ich ewig und 3 Tage nach Fehlern im Dienst gesucht habe :wall:, habe ich den TIdTCPServer mit allem was dazugehört 1:1 in eine Test-VCL-Anwendung gesteckt, diese auf dem Server gestartet und siehe da, es funktioniert - der Server ist von jedem externen Rechner einwandfrei erreichbar. Die Verbindung steht auch wesentlich schneller als es bei der Dienst-Geschichte dauert, bis der Client ein timeout bekommt.
Eine ständig laufende Formular-Anwendung kommt als Lösung aber nicht in Frage, der Server-Admin wäre "not amused".

Bei meinen Nachforschungen zu dem Thema bin ich darauf gestoßen, dass der Nutzerkontext vielleicht ein Problem sein könnte. Aber auch nachdem ich im SCM dem Dienst andere Anmeldeinformationen gegeben habe (Administrator-Konto), klappte es nicht.
Hat jemand eine Idee, wo das Problem liegen könnte?

jaenicke 18. Aug 2025 23:08

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Hast du denn einmal geschaut, ob der Dienst auf dem entsprechenden Port lauscht? (Admin-Kommandozeile:
Code:
netstat -abno
)

Wie sieht es mit der Firewall aus?

Jelen 18. Aug 2025 23:38

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
netstat -abno zeigt den Dienst mit an, PID und exe-Name sind die des Dienstes:
Code:
  TCP   [::]:9000              [::]:0                 ABHÖREN        7740
 [xxxService.exe]
In der Firewall ist der Port 9000 für alle Protokolle geöffnet. Die Firewall hatte ich als Ursache ausgeschlossen, nachdem bei dem Test mit dem TIdTCPServer in einer Formularanwendung die Verbindung zustande kam.

Jelen 19. Aug 2025 00:02

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Besten Dank an dich Jaenicke, dein Hinweis auf die Firewall hat mich auf die richtige Fährte gebracht! :idea:
Außer der im Hosting des Servers einstellbaren Firewall ist dann ja auch noch dieser schicke Windows Defender da...
Den hatte ich intelligenterweise nicht berücksichtigt. Kaum schalte ich den Defender mal komplett ab, schon flutscht die Verbindung durch wie ein geölter Blitz :cheers:

Das war ja mal wieder 'ne brilliante Nummer von mir. Frag mich allerdings, warum dieser Defender die Dienst-Verbindung geblockt hat und denselben Client auf demselben Port bei einer Formularanwendung durchgelassen hat :gruebel:

supermulti81 19. Aug 2025 08:29

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Geblockt werden Verbindungsversuche, die von Außen angefragt werden. Dein lokaler Test geht nicht durch die Firewall und funktioniert deshalb.

mjustin 19. Aug 2025 09:03

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Zitat:

Zitat von supermulti81 (Beitrag 1551067)
Geblockt werden Verbindungsversuche, die von Außen angefragt werden. Dein lokaler Test geht nicht durch die Firewall und funktioniert deshalb.

Die Verbindungsversuche kamen von außen. Nur wenn der Server als Dienst lief kam es zu einem Timeout:

Zitat:

Zitat von Jelen (Beitrag 1551059)
...
Nachdem ich ewig und 3 Tage nach Fehlern im Dienst gesucht habe :wall:, habe ich den TIdTCPServer mit allem was dazugehört 1:1 in eine Test-VCL-Anwendung gesteckt, diese auf dem Server gestartet und siehe da, es funktioniert - der Server ist von jedem externen Rechner einwandfrei erreichbar.
...


jaenicke 19. Aug 2025 20:27

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Zitat:

Zitat von Jelen (Beitrag 1551063)
Das war ja mal wieder 'ne brilliante Nummer von mir. Frag mich allerdings, warum dieser Defender die Dienst-Verbindung geblockt hat und denselben Client auf demselben Port bei einer Formularanwendung durchgelassen hat :gruebel:

Es macht für die Sicherheit einen großen Unterschied, ob da ein Dienst etwas empfängt und das ganze mit den entsprechenden Rechten läuft oder ob das eine einfache Anwendung ist. Deshalb gelten da andere Standardregeln. Das machen aber natürlich auch verschiedene Firewalls unterschiedlich.

Jelen 20. Aug 2025 07:27

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Zitat:

Zitat von jaenicke (Beitrag 1551081)
Es macht für die Sicherheit einen großen Unterschied, ob da ein Dienst etwas empfängt und das ganze mit den entsprechenden Rechten läuft oder ob das eine einfache Anwendung ist. Deshalb gelten da andere Standardregeln.

Offensichtlich waren die Regeln auch dann noch anders, als ich den Dienst unter demselben Konto sich habe anmelden lassen wie meine VCL-Test-Anwendung.

jaenicke 20. Aug 2025 11:35

AW: TIdTCPServer in einem Dienst nicht erreichbar
 
Trotzdem ist das im Kontext eines Dienstes. Was genau da intern passiert, sagt natürlich niemand ausführlich, da ansonsten die Erkennungsmethoden und Heuristiken weniger wert wären. Ich habe da jedenfalls insbesondere bei Diensten, die mit anderen Rechnern kommunizieren möchten, schon viel gesehen...

Deshalb schaue ich da im Zweifel lieber dreimal hin, bevor ich langwierig andere Möglichkeiten prüfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz