Hallo,
in letzter Zeit kamen öfter Fragen zum Thema wie man Diablo 2 (oder Battle.net-Spiele
allgemein) hinter einem Proxy-Server spielen kann. Also dachte ich mir, probier‘ es selbst
mal aus, da es doch kompliziert zu sein scheint. Erst mal vorweg: Wer die Möglichkeit hat
über ICS zu spielen, sollte diese Variante vorziehen, da sie systemnaher und meist mit
weniger Schwierigkeiten verbunden ist. Einen exemplarischen Guide hierzu gibt es
bereits von Morphium – welcher hier zu finden ist. Eine andere
Alternative bieten Software-Router, wie z.B. WinRoute.
Wer also an dieser Stelle noch mitliest, will oder muss ins Battle.net über einen Proxy-Server.
Dann fangen wir an. Es werden zwei Softwarekomponenten benötigt:
- Proxy-Server. Er muss Socks 4/ 5 beherrschen.
- Client-Komponente. Sie wird nur für nicht _Proxy-fähige_ Client-Anwendungen,
also z.B. Blizzard-Spiele, benötigt. - Begriffsklärungen
Genug der Vorrede – fangen wir an. Zuerst der Server-Teil.
Konfiguration des Servers
Als erstes muss -wenn möglich- ein geeigneter Proxy-Server
ausgewählt werden. Ich habe mich für JanaServer 2 entschieden, da dieser für den privaten Gebrauch kostenlos
ist und einen guten Eindruck macht. Jeder Proxy-Server muss dann geeignet eingerichtet
werden; ich werde das exemplarisch am JanaServer zeigen.

Zunächst muss das entsprechende Administrations-Tool gestartet werden; bei JanaServer
einfach auf den [i]Administration[/i] Link im Startmenü klicken, oder ein neues Browser-Fenster
öffnen und als Adresse localhost:2506/jana-admin eingeben, und dann dem Administrator
Link folgen. Es sollte dann eine Seite erscheinen mit folgendem Menü auf der linken Seite:
Wir folgen dem markierten Punkt und wählen den Menüpunkt „IP-Adressen“. Hier geben wir als
erstes die IP-Adresse des Servers ein und bestätigen die Eingabe mit „Übernehmen“, um
anschließend die weiteren benötigten Funktionen aktivieren zu können:

Wenn alles gut gelaufen ist, müsste das Einstellungsfenster unter dem IP-Fenster, um
eine weitere Spalte mit der IP-Adresse des Servers, ergänzt worden sein. Hier interessiert
uns nur die [i]Socks-Funktion[/i], welche wir mit einem Haken versehen (die anderen Funktionen
können nach Belieben gesetzt werden – sind aber fürs Battle.net nicht wichtig):

Als nächstes teilen wir unserem Proxy mit, wie er ins Internet kommt. Dies wird im
Menü „DFÜ“ eingestellt. Es gibt zwei Möglichkeiten, man teilt Jana mit, welche DFÜ-Verbindung
es benutzen soll (d.h. diese ggf. bei Bedarf selbst aufbaut) – hierfür setzt man einen Haken
vor den Punkt „DFÜ benutzen“ und gibt die relevanten Daten dann unter „neu“ ein.
Die zweite Möglichkeit ist es diesen Haken nicht zu setzen und die Internetverbindung
manuell vor dem Start des Proxy-Servers aufzubauen – für AOL Benutzer ist das die einzige
Möglichkeit.
Als letztes sollte man noch einen Benutzer im Menü „Benutzer-Verwaltung“ einrichten,
dem man einen zeitlich uneingeschränkten Zugriff auf den Proxy-Server gewährt. Soweit
sollte auf der Server-Seite alles eingestellt sein.
Sollten noch Fragen zum JanaServer bestehen werde ich versuchen diese zu
beantworten – alternativ gibt es auch ein Forum zum JanaServer. Ein anderer sehr guter Proxy soll
WinProxy
sein; allerdings haben bei mir die Versuche diesen auf meinem Testrechner zum Laufen
zu bewegen stets in einer Windows-Neuinstallation geendet.
Konfiguration des Clients
Jetzt kommen wir zum Client. Für diesen wird ein SocksClient benötigt. Ich habe
SocksCap32 gewählt bzw.
keinen anderen gefunden (sollte jemand einen anderen SocksClient kennen: bitte melden ;-).
SocksCap32 ist 120 Tage lang für den privaten Gebrauch kostenlos. Nachdem das Programm
installiert ist, muss es noch für unser Vorhaben konfiguriert werden. Dazu starten wird
das mitinstallierte Control-Tool, wählen den Punkt „File -> Settings“ und nehmen die
folgenden Einstellungen vor:


Als letztes muss noch SocksCap32 für D2 eingerichtet werden. Dies macht man unter
„File -> New…“. Der Dialog sollte intuitiv bedienbar sein, so dass ich mir die
Beschreibung erspare. Danach kann man D2 über das SocksCap Control Tool starten
(File -> Run Socksified!) und problemlos ins Battle.net – zumindest auf
meinen beiden Testrechnern.
Mit den oben genannten Einstellungen konnten beide Testrechner gleichzeitig im
Battle.net spielen; auch gemeinsam.
Über Anregungen, Kommentare, Fehlerkorrekturen etc pp. würde ich mich sehr freuen.
Einige Begriffsklärungen
Proxy (Server): Ein Proxy ist im strengen Sinne seiner Definition ein Web Cache.
Allerdings kann er viel mehr – vor allem im Sicherheitsbereich, da er einen indirekten Zugang
(Application-Gateway) zum Internet bietet, d.h. die Rechner (Clients) des Netzes bauen ihre
Verbindungen nicht direkt zu den Remote-Hosts (Server mit dem Web-Inhalt, den man betrachten
möchte) auf, sondern zum Proxy, welcher diese dann weiterleitet, falls der Client die nötigen
Berechtigungen besitzt. Proxies implementieren nur einige wichtige Protokolle des Internets,
wie z.B. HTTP, Gopher und FTP – also Schicht 7 Dienste/ Protokolle (Application-Layer)
des OSI/ ISO Referenzmodells.
Ein Beispiel-Szenario hierzu wäre:
- Benutzer am Client-Rechner will die Seite „http://www.indiablo.de“ betrachten
und tippt die Adresse in seinem Browser ein - Der Browser baut eine Verbindung zum Proxy (genauer dessen HTTP-Getway)
auf und fordert diese Seite an - Der Proxy prüft zunächst einmal, ob alle nötigen Rechte seitens
des Clients bestehen - Jetzt prüft er, ob die Seite bereits in seinem Cache liegt
[nur wenn er auch als Cache konfiguriert ist] - Nun baut der Proxy eine Verbindung zum Server von www.indiablo.de
auf und fragt, ob sich die Seite verändert hat - Hat sich die Seite geändert, fordert er sie erneut an und speichert
sie in seinem Cache - Als letztes schickt er die Seite zum Client
Dieser Aspekt des Proxy Servers (als Application Gateway) ist aber für viele Anwendungen
der Todesstoss, da sie eine direkte Verbindung zum Remote-Host benötigen bzw. die Protokolle
für Proxy nicht implementieren [Schritte 1 und 7 oben] (oder der Proxy kennt ihr Protokoll
nicht). Diablo 2 hat dieses Problem, d.h. es kann nicht mit einem Proxy kommunizieren,
so dass es also auch keine Verbindung zum Battle.net aufbauen kann.
Hierfür wurde ein weiteres Protokoll geschaffen: SOCKS (Socket Server
Protokoll). Dieses Protokoll schwindelt -grob gesagt- der Client-Software vor, dass
eine direkte Verbindung besteht bzw. ermöglicht diese. Dies wird dadurch erreicht, dass
der Proxy alle Daten die vom SOCKS-Protokoll kommen ins Internet schickt und alle Antworten
entsprechend an das SOCKS-Protokoll weiterleitet, ohne diese selbst auszuwerten. Dieses
wird als Circuit-Level-Proxy bezeichnet. Es würde also auch ausreichen, wenn
Diablo 2 das SOCKS-Protokoll implementieren würde; allerdings ist dies ebenfalls nicht
der Fall. Also ist für solche Programme noch eine weitere Komponente nötig (in unserem
Fall SocksCap32), welche die Internet-Anfragen der Client-Software auf das SOCKS-Protokoll
des Proxy umleitet.
Ein Beispiel-Szenario:
- Diablo 2 will eine (direkte) Socket-Verbindung zu „europe.battle.net:6112“
aufbauen und erzeugt einen neuen Socket mit dieser Adresse - Hier wird das SOCKS-Protokoll bzw. seine Client-Implementierung aktiv und
übergibt Diablo 2 seine Implementierung des Sockets und stellt gleichzeitig
eine Verbindung zum Proxy her, falls der Client-Rechner die nötigen Rechte besitzt - Der Proxy baut eine Verbindung zu europe.battle.net:6112 auf und schickt alle
Daten die ankommen an das SOCKS-Protokoll vom Client - Das SOCKS-Protokoll schickt diese Daten an das Socket von Diablo 2
OSI/ ISO Referenzmodell: Akronym für das Open Systems
Interconnections Referenzmodell der internationalen Standardisierungsorganisation ISO.
Es unterteilt die Protokolle und Dienste einer Netzwerkarchitektur in 7 Schichten.
Die 7. Schicht, die Anwendungsschicht, definiert die Protokolle für Anwendungen, wie z.B.
HTTP. Protokolle tieferer Schichten sind z.B. TCP oder UDP (Schicht 4 Transport), welche
die Kommunikation zwischen einzelnen Anwendungen regeln. HTTP benutzt TCP um Daten von
einer Anwendung zur anderen zu übertragen. TCP selbst benutzt Protokolle der Schicht 3,
um diese Daten zu transportieren. Es bietet aber noch weitere Dienste an, z.B.
zuverlässigen Datentransfer, d.h. es garantiert den Diensten (Anwendungen) die TCP
benutzen, dass die Daten, die von TCP übergeben werden, fehlerfrei sind; dies ist
bei UDP nicht der Fall.
Socket: Ein Socket ist die Schnittstelle zwischen einer Anwendung und einem
Dienst der 4. Schicht. Genauer gesagt, es ist die Schnittstelle zu einer beliebigen
Implementierung von einem Protokoll der Transportschicht. In unserem Fall stellt
SocksCap32 eine Implementierung von TCP und UDP zur Verfügung.
Links:
Proxy Server
Application Gateways
OSI/ ISO Referenzmodell
Autor:
black_spy
HTML-Übersetzung: MasterChief
Stand: Juni 2004