Die Einrichtung dieser Schnittstelle liegt beim Schliess-System Lieferanten. In seltenen Fällen kommt es bei der Einrichtung zu Problem und die Schnittstelle kann nicht erreicht werden. Deshalb folgend eine Zusammenschnitt was überprüft werden muss damit die Schnittstelle wie erwartet funktioniert. Das Szenario gilt für alle TCP Schnittstellen.
Meine Motivation ist unsere Partner, im aktuellen Fall einen Salto-Händler mit einer Schritt für Schritt Anleitung zu unterstützen.
Überprüfen auf freien Port
Bevor wir eine neue Schnittstelle in Betrieb nehmen überprüfen wir, dass der gewünschte Port nicht besetzt ist. Ich verwende dazu jeweils:
netstat -nao | findstr "PortNumber"
netstat -nao | findstr "5005"
Das nächste Beispiel zeigt das der Port nicht in Verwendung ist (leere Zeile). Es sollte also sicher sein, diesen Port zu verwenden.
C:\Users\thomas>netstat -nao | findstr "6789"
Im folgenden Beispiel sehen wir dass der Port 8080 in Verwendung ist:
C:\Users\thomas>netstat -nao | findstr "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 ABHÖREN 19908
TCP [::]:8080 [::]:0 ABHÖREN 19908
TCP [::1]:8080 [::]:0 ABHÖREN 25144
Ist der Dienst gestartet
Nachdem wir unseren Dienst, wie z.B. den Salto PMS-Server konfiguriert und gestartet haben, überprüfen wir ob unser Dienst nun auf dem richtigen Port hört.
War der Dienst bereits gestartet als wir den Port konfiguriert haben, sollte der Dienst neu gestartet werden
Unter Windows überprüfen wir in "Dienste" ob unser Dienst gestartet ist. Alternativ starten wir das Dienste UI mit "Windows + R" services.msc
+ "Enter".
Oder von der Kommandozeile:
net stop "ServiceName"
net start "ServiceName"
wobei "ServiceName" dem Namen unseres Dienstes entspricht.
Wenn wir jetzt mit netstat überprüfen ob der Port in Verwendung ist, sollten wir ein erfolgreich sein:
Port 8080 ist in Verwendung
C:\Users\thomas>netstat -nao | findstr "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 ABHÖREN 19908
TCP [::]:8080 [::]:0 ABHÖREN 19908
TCP [::1]:8080 [::]:0 ABHÖREN 25144
Erreichbarkeit des Dienstes
Wenn wir nun den Dienst gestartet haben, überprüfen wir ob dieser lokal erreichbar ist.
Lokale Erreichbarkeit
Telnet Client
Auf ein TCP Socket Service kann ich mich in aller Regel mit Telnet verbinden. Eine Telnet-Client kann über die Windows-Features aktiviert werden.
Microsoft Windows [Version 10.0.22621.1105]
(c) Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\thomas>telnet localhost 5504
Wenn die Verbindung OK ist öffnet sich ein leeres Konsolenfenster.
Packet Sender
Mein Lieblingsprogram welches nicht nur testet ob eine Verbindung steht sondern auch ein "RAW ASCII" bzw. Textbasiertes Socketprotokoll testen kann. Bei der Integration von vielen Schliess-Systemen nutze ich das Programm um den Verbindungsaufbau und die Befehlssätze zu testen, bevor ich diese in Code umwandle.
packetsender dot com
Externe Erreichbarkeit
Sobald klar ist, dass der Dienst lokal wie erwartet funktioniert, teste ich das gleiche von einem externen Rechner (im gleichen Netzwerk).
Der Unterschied zum lokalen Test liegt in der Erreichbarkeit über das Netzwerk. Funktioniert der Socket Service lokal aber nicht von einem Remote Computer im gleichen Netzwerk, kann es sich um Störungen im Netzwerk handeln, wahrscheinliche ist aber eine falsche Konfiguration der Firewall.
Windows Firewall überprüfen
Starten Sie die Windows Firewall und legen Sie eine neue "Eingehende Regel" an.
Wählen Sie Port und im nächsten Schritt "TCP" und den Netzwerktyp, z.B. "privat".
Nachdem Sie der Regel einen Namen gegeben haben speichern Sie diese.
Überprüfen Sie ob der Dienst nun von extern erreichbar ist.
Danach öffnen Sie die Regel nochmal und ändern den Bereich für welchen die Regel gelten soll, z.B. dass nur ein Computer mit einer gewissen IP auf den Dienst zugreifen darf.
Weitere Firewalls
Ein Computernetzwerk kann weitere Firewalls haben entweder eine andere Software Firewall auf Ihrem Server oder dann Firewalls im Netzwerk welche als Regeln auf Ihrem Router konfiguriert sind. Im Idealfall verfügt Ihr Netzwerk über eine dedizierte Hardwarebasierte Firewall.
Erlauben Sie da ebenfalls die benötigten Regeln analog zur Konfiguration der Windows-Firewall.
Schlussgedanke
Wenn man Schritt für Schritt vorgeht, sollte es ein leichtes zu eruieren was falsch geht oder wenigstens auf welchem Level und somit die zuständige Person benennen können.
Pro Tip:
Wenn ich sehen möchte was über eine TCP Schnittstelle kommuniziert wird, kann Wireshark helfen den Netzwerkverkehr auf dem Server auszulesen.