[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Idee zur TCP-Paket-Manipulation gesucht



Am 19.11.2013 21:14, schrieb Heiko Schlittermann:
ich bin mir nicht sicher, ob ich alles korrekt verstanden habe…

Schau' mer mal...

Du kannst also nicht den Zielport modifizieren? Dann kannst Du auf dem
Kompressions-Rechner aber sehr viele Adressen haben. Dein
Kompressions-Script kann die Adresse, unter der er kontaktiert wurde,
abfragen. Daraus kann er dann ableiten, zu welchem Zielsystem er sich
verbinden muss.

Nein, genau das will ich eben nicht, weil es nicht skaliert.
Jedes neue Zielsystem heißt dann neue Konfiguration auf Pack- und evtl. auch Entpackserver, und auf dem Absendesystem.

Ich möchte, dass alle absendenden Systeme im LAN 1 an alle Zielsysteme im LAN 2 Pakete schicken können, ohne dass man da was konfigurieren muss. Die sollen einfach alle meinen, sie reden mit dem Zielsystem, weil sie das Datenpaket ja an dessen IP und dessen Standardport geschickt haben.

Hat auch den Vorteil, wenn man meint, die Kompression verursacht Fehler, dann steckt man den Kasten einfach aus bzw. nimmt die Regel aus dem Regelwerk und leitet die Pakete 1:1 durch.

[...]

Das klappt so lange, wie es nur ein Zielsystem gibt und man die IP
daher hart ins Entpackskript eincodieren kann.

Du meinst sicher das Einpack-Script, oder?

Nein, das Entpack-Skript. So lange es nur ein Zielsystem gibt, entpackt der Entpack-Server in LAN2 das Paket und schiebt es auf die im entpackskript hart eincodierte Ziel-IP.

Aber wie gesagt, es wäre auch möglich, die IP im gepackten Paket mitzugeben - wenn ich sie in LAN 1 irgendwie abfragen kann. Der Teil vor dem Bindestrich im vorigen Satz ist trivial, der dahinter nicht. ;-)


Geht es auch irgendwie eleganter, so dass das auch für n>1
Wenn es per iptables/ebtables geht, sind die zwei zentralen Fragen wohl:
1) Wie greife ich das Paket ab und leite es an mein
Komprimierungsskript weiter?
2) Wie komme ich an die Ziel-IP, die der Absender eigentlich
erreichen wollte, so dass ich sie ebenfalls an das Skript übergeben
kann?

Wie oben beschrieben, indirekt über ein Ziel-IP >Port-Mapping, oder
Ziel-IP->lokale-IP Mapping.

Wie gesagt, das skaliert nicht, weil es ein manueller Eingriff bei jeder Erweiterung ist.

Ich will (sinngemäß und in Pseudocode):
myPort='4223'
If $Port = $myPort {
	cat $Data | compressor.sh $DestinationIP
	DoNotRouteOriginalPacketTo($DestinationIP)
}

compressor.sh würde dann von STDIN die Daten einlesen und komprimieren, dabei die Ziel-IP aus den Parametern lesen und mit einpacken, und das als "Gesamtpaket" an das Entpacksystem senden.

Dabei wäre es dann egal, an welche IP das Paket gehen soll, es passiert automagisch immer das richtige, ohne dass man eine neue Regel einstellen muss, wenn neue Ziel-IPs dazukommen.

Dass so was prinzipiell mit iptables geht, sieht man ja bei HTTP und dem transparenten Proxy. Nur dass dort, soweit ich weiß, im Datenstrom noch mal die Information steckt, wo der Aufruf hingehen soll ("GET http://foobar.com/ HTTP/1.0"), was die Sache natürlich einfacher macht.


Oder iptables mit TPROXY-Target kann Dein Freund werden. Gemeinsam mit
dem redir-Paket.

--verbose, bitte. :-)

Gruß
Stefan


Reply to: