Wenn wir von unseren Self-Check-in Terminals eine Schlüsselkarte kodieren wollen, tun wir dies oft für ein bereits installiertes elektronisches Schliess-System.  Dabei startet das Schliess-System einen sogenannten PMS-Server, welcher eine Kartenkodierschnittstelle bzw. PMS Interface startet.

Die Überprüfung für die Inbetriebnahme einer Schliess-System-Integration in ein Hotel-PMS ist die gleiche.

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"

wobei "PortNumber" die Nummer des TCP Ports ist, welchen ich verwenden möchte, z.B:

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.

Es empfiehlt sich zur Einrichtung einen entsprechenden Experten für Netzwerk und Schliess-System hinzu zu ziehen.