2017-05-11 3 views
1

Ich habe einen Fehler in der TCP-Kommunikation zwischen meinem Soft-Server und. Bei Timeout Router still schließt die Verbindung ohne den Client darüber zu informieren (normalerweise ist es mit FIN-Paket gemacht).Mit iptables emulieren gebrochene Verbindung

Mein tcpdump log in dieser Situation:

Weiche versucht in geöffnete Verbindung Push-Nachricht.

09:29:41.438050 IP CLIENTIP.33668 > SERVERIP.8101: Flags [P.], seq 163:228, ack 144, win 229, options [nop,nop,TS val 96713087 ecr 4169733508], length 65

Auf dem Server (eigentlich Mitte) Seite wurde diese Verbindung bereits gebrochen und Server answeres mit Reset-Paket.

09:29:41.447415 IP SERVERIP.8101 > CLIENTIP.33668: Flags [R], seq 3072817047, win 0, length 0

Ich versuche, diesen Fall zu debuggen, aber diese Situtation happenes erst nach ziemlich lange Timeouts.

Meine Idee war, diese Situation mit iptables zu emulieren. Für Zielport Beispiel Änderung für meine Kunden:

sudo iptables -t nat -D OUTPUT -p tcp --destination-port 8101 -j DNAT --to-destination SERVERIP:8102

Aber diese Regel nur für neue TCP-Verbindung funktioniert, aber ich muß auf bereits bestehende Verbindung Paketinhalt ändern. Weiß jemand, wie kann ich tcpdump Regel auf alle Pakete in den Zielport schreiben?

Antwort

1

Haben Sie mit etwas wie netem untersucht, um Verzögerung hinzuzufügen oder Pakete zu verwerfen? Ich denke, es könnte besser für Sie als iptables funktionieren.

+0

danke es sieht interessant aus, aber ich habe nicht die Möglichkeit gefunden, dieses RST-Paket zu generieren (emulieren Silent-Drop-Verbindung). Eigentlich ist es eine recht einfache Aufgabe für die libpcap-Anwendung – Oleg