Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Socket-Verbindung durch Proxy hindurch

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ElBlues



Anmeldungsdatum: 25.03.2008
Beiträge: 127

BeitragVerfasst am: 30. Apr 2008 12:51   Titel: Socket-Verbindung durch Proxy hindurch

So, nach dem Google mir auf die entsprechenden Suchstichworte nur erklären mag, wie ein Proxy funktioniert, hier mal meine eigentliche Frage, vielleicht hat ja jemand einen Link.

Wie normale Netzwerkverbindungen mittels socket(), connect(), send() und recv() funktionieren ist mir klar. Nur gibt es jetzt auch den Fall, dass jemand hinter einer Firewall sitzt und nach draußen möchte. Diverse Applikationen kriegen das mit angabe der Proxy-IP und -Portnummer sowie möglicherweise auch einem Passwort hin. Nur: was steckt dahinter? Wie wird das auf Codeebene gelöst, sprich was muss ich tun um ein connect() von so einem Proxy akzeptiert zu bekommen?
_________________
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 30. Apr 2008 19:20   Titel:

Entweder muss das Protokoll explizit Proxies unterstützen, das ist zum Beispiel bei HTTP oder FTP der Fall. In diesem Fall wird z.B. die HTTP-Anfrage nicht direkt an den Server geschickt, den man in der URL genannt hat, sondern stattdessen an den Proxy. Der guckt in den Request-Header der Anfrage rein, dort steht die "echte" URL drin, und diese Seite fordert er dann an und liefert sie kurz darauf an den fragenden Rechner aus. Mit einem statusbehafteten Protokoll wie FTP ist es etwas komplizierter, funzt im Prinzip aber genauso.

Dann gibt es noch den Fall des "transparenten Proxies". In diesem Fall braucht man Kernel-Unterstützung, bei Linux ist das netfilter. Dieser fängt Pakete, die nach draußen gehen ab und leitet sie an den Proxy-Server, der transparentes Proxiing unterstützen muss, weiter. Dieser erkennt anhand der IP-Adresse (DNS ist zu diesem Zeitpunkt schon aufgelöst worden), dass er ein Paket bekommen hat, das für einen Internet-Host gedacht ist. Er fragt nun diesen Internet-Host bei z.B. HTTP nach der Seite, die im Paket drin steht. Diese liefert der Internet-Server an den Proxy zurück, dieser liefert sie an den netfilter zurück. Der erkennt, dass das Paket zu einer Verbindung zum Proxyserver kommt und schreibt die Quell-Adresse so um, dass es aussieht, als käme das Paket direkt vom Internet-Server. Damit ist das Proxiing von außen nicht zu erkennen.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

ElBlues



Anmeldungsdatum: 25.03.2008
Beiträge: 127

BeitragVerfasst am: 02. Mai 2008 9:53   Titel:

Ah, so weit so klar. Und wie sieht das mit den SOCKS-Proxies aus, gehören die in die Exke der transparenten Proxies?
_________________
http://www.kaufkauf.net - nie wieder Einkäufe vergessen!
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 02. Mai 2008 20:37   Titel:

SOCKS ist ein Proxy-System unterhalb der Protokollebene von HTTP, FTP etc.. Man kann es als Library in einen Client, z.B. einen Browser einbauen, dann kann der die Protokolle, die er beherrscht, über SOCKS statt direkt über TCP schicken.

Für Programme, die die SOCKS-Library nicht eingebaut haben, gibt es zum Beispiel "tsocks", das sich per LD_PRELOAD in die socket()-Aufrufe etc. einhängt und so die SOCKS-Funktionalität nachrüstet.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy