grka
Goto Top

Keep Alive der TCP Verbindung wird geblockt, wo kann ich das freischalten?

Ich habe eine einfache TCP Anwendung geschrieben, die eine TCP Verbindung zwischen 2 PCs aufbaut. Zur Verbindungsüberwachung auf den Windows 7 embedded Rechnern nutze ich das Keep-Alive. Auf einer frischen Windowsinstallation funktioniert das hervorrangend. Sobald ich das Netzwerkkabel ziehe, wird der Verbindungsausfall sofort erkannt.

Jetzt haben wir hier aber ein Windows 7 embedded, bei dem einige Gruppenrichtlinien und die Firewall verändert wurden und nun wird kein Keep Alive mehr gesendet (habe es mit Wireshark überprüft). Leider kann mir keiner sagen welche Veränderungen genau vorgenommen wurden. Kann mir jemand hier eventuell sagen welche Policies oder Firewall Einstellungen das Keep-Alive von Microsoft blockieren könnte?

Content-ID: 233583

Url: https://administrator.de/contentid/233583

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

MrNetman
MrNetman 25.03.2014 aktualisiert um 15:04:33 Uhr
Goto Top
Wenn du so tief in der Materie bist, dass du alles weisst, dann musst du uns bei der Hilfeanfrage auch keine Informationen geben. Sei bloß nicht enttäuscht, wenn nichts dabei raus kommt.

Gruppenrichtlinien kann man setzen.
Das Setzen der Gruppenrichtlinien wird nicht von Microsoft gemacht.
Wenn du über Wireshark keine keep-alive Pakete siehst, dann brauchst du dir über die Firewall keine Gedanken mehr zu machen. Etwas, das nicht existiert, braucht man nicht zu bekämpfen.

Und nun ein Paar Details zu deinen Windows Versionen.
Wer greift auf wen zu?
Sind auf beiden Maschinen diese Pakete aktiv?
Geht die Verbindung über den Layer3 ?

Wenn ich es richtig gelesen habe (http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html), dann muss nur einer der beiden PCs das können. Null-Pakete sind eigentlich nutzlos, aber hier haben sie eine Funktion, die du gerne genutzt hast.
Wenn deine Applikation sie nicht schicken kann, dann ist möglicherweise der TCP-Stack verändert.

Gruß
Netman
grka
grka 25.03.2014 um 14:20:15 Uhr
Goto Top
Hallo

Wenn du so tief in der MAterie bist, dass du alles weisst, dann musst du uns bei der Hilfeanfrage auch keine Informationen geben.
Wie kommst du darauf? Das habe ich doch gar nicht geschrieben.

Ich habe selber leider auch nicht zu viele Informationen. Ich habe keine Ahnung von Firewalleinstellungen oder den Gruppenrichtlinien. Ich habe lediglich ein kleines Testprogramm in C++ geschrieben, das auf beiden PCs läuft. Das Programm macht jeweils einen TCP Socket auf und versendet einen Text zB "Hallo Welt" an den anderen PC, wenn man einen Button drückt.

Auf dem anderen PC wird der Text dann in dem Testprogramm angezeigt (ähnlich wie es Hyperterminal bei seriellen Verbindungen macht). Ansonsten läuft auf dem PC überhaupt nichts. Das Programm überwacht diese Verbindung auf beiden Seiten mit Hilfe des Keep Alive was Windows anbietet und meldet halt an der Oberfläche den Text "Verbindung ok" oder "Verbindung abgebrochen".

Auf einem normalen Win 7 embedded funktioniert diese Verbindungsüberwachung in dem Testtool. Sobald ich das Netzkabel ziehe bekomme ich die Meldung von Windows, daß die Verbindung nach Ablauf der Keep-Alive Zeit weg ist.

Jemand anderes hat nun dieses Win 7 genommen und verschiedene Sicherheitseinstellungen (Firewall und Gruppenrichtlinien usw) gemacht, um den PC sicher zu machen. Leider wurde nicht vollständig dokumentiert, was genau wo geändert wurde. Alles was wir jetzt feststellen ist, daß diese Verbindungsüberwachung nicht mehr funktioniert. Mein Testprogramm baut die Verbindung zum Partner auf und beibt dann auf beiden PCs auf "Verbindung ok" und merkt nicht mehr wenn ich das Netzwerkkabel ziehe.

Ich weiß, daß das nicht viele Infos sind, leider habe ich selber auch nicht mehr und ich weiß ehrlich gesagt auch nicht wo ich anfangen soll zu suchen, da ich mich mit den Gruppenrichtlinien usw überhaupt nicht auskenne. Meine Vermutung ist, daß irgendeine dieser Einstellungen verhindert, daß Windows meinem Programm den Verbindungsausfall mitteilt.

Ich wäre schon froh, wenn ich zumindest einen Tip bekommen könnte nach welchen Stichworten ich im Netz suchen könnte, denn wenn ich nahc Keep-Alive suche, dann bekomme ich nur Seiten wie erklärt wird wie man es benutzt.
grka
grka 25.03.2014 aktualisiert um 14:59:29 Uhr
Goto Top
Noch ein Nachtrag: Bei dem Windows, bei dem die Richtlinien verändert wurden, zeigt auch der Befehlt netstat in der Shell einen falschen Verbindungsstatus an. Auch hier steht, daß die TCP Verbindung zwischen den beiden PCs bzw dem jeweiligen Testprogramm "HERGESTELLT" sei, obwohl das Netzwerkkabel gezogen wurde. Bei dem unveränderten Windows hingegen wird der Status bei netstat korrekt angezeigt.

In der Registry haben wir auf beiden Windowsversionen die Registry für das KeepAlive auf 30 sek geändert und hierzu folgende Werte angepasst:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"KeepAliveInterval"
"KeepAliveTime"
MrNetman
MrNetman 25.03.2014 aktualisiert um 15:10:27 Uhr
Goto Top
nun, ohne jetzt böse zu wirken,
Wenn man die Programme durch einfache Maßnahmen blocken kann, dann ist es wohl kein guter Weg in einer Produktivumgebung.

Frage den, der die Änderungen vorgenommen hat.
Auch wenn er nicht alles dokumentiert, so hat er doch meist eine ähnliche Vorgehensweise und kann dir damit sagen, was er alles angefasst hat.

Es ist logisch, dass auch embedded Betriebssystem mit den selben Schädlingen zu rechen haben, wie Desktop-Betriebssysteme und damit werden auch ähnliche Massnahmen getroffen.

Immerhin hast du uns jetzt verraten, dass die Veränderungen nicht durch ein OS-update von Microsoft gekommen sind, sondern durch manuelle Eingriffe.

Habe aber zum Problem selbst keine Idee face-sad
Gruß
Netman