Das Spiel Testdrive Unlimited hat jede Menge Bugs. Der schlimmste jedoch ist das es praktisch unmöglich ist das Spiel "durchzuspielen" also 100% zu erreichen. Das Problem: eine Mission verlangt das der Spieler in einem Rennen Club vs Club gegen einen anderen Club mindestens 3 Siege erringt. Aber die Clubfunktionalität ist so kaputt das dies nicht geht. Jedenfalls nicht ohne Tricks.
Problem: Clubrennen lassen sich nur starten wenn mindestens 2 Spieler desselben Clubs gleichzeitig online sind UND sich in der Club Lobby auch gegenseitig sehen. Wegen des Fehlers geht genau das nur wenn beide Spieler sich im selben LAN hinter einem Router befinden. Ansonsten meldet das Spiel störisch: "Kein weiteres Clubmitglied online"
Lösung 1: Lan hinter einem Router.
4 Spieler packen ihre Rechner ein und machen eine schöne Lanparty. Ok, hat was, da kann man gleich auch noch anstoßen und den ein oder anderen Schluck trinken. Aber das -=I.O.S=- TDU Team ist über ganz Deutschland verteilt. Nur für die 100% 4 Spieler mit teilweise über 600KM Entfernung zueinander führen ist zu Heavy. Und überhaupt! Das Internet muss doch noch für mehr als Fickbilder gut sein oder? Also Lösung 2:
Lösung 2: VPN Tunnel
Nur kurz umrissen ist es möglich mit VPN ein virtuelles LAN zu erstellen. Und es funktioniert überraschenderweise mit TDU in ganz einfacher Konfiguration.
Ausgangspunkt: Ein Linux (Ubuntu) Server hinter einem Kabelmodem mit 25000/6000 UP/Downstrem Rate, Feste IP oder DynDnS Name.
1) OpenVPN auf dem Server installieren
Unter Debian-Like mit apt-get install openvpn
2) Zertifikate erstellen.
/usr/share/doc/openvpn/examples/easy-rsa/2.0/vars ein Template in dem einige Punkte angepasst werden können:
- export KEY_COUNTRY="US"
- export KEY_PROVINCE="CA"
- export KEY_CITY="SanFrancisco"
- export KEY_ORG="Fort-Funston"
- export KEY_EMAIL="me@myhost.mydomain"
Dies wird dann später im Certifikat angezeigt, ist ansonsten aber nicht von Belang. Die restlichen Default Vorgaben sind so erstmal in Ordnung.
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
Die Datei ./vars editieren.
Der folgende Befehl veranlasst OpenVPN nun die editierte Vorlage beim Erstellen des Zertifikates zu benutzen:
source ./vars
Jetzt werden die Zertifikate für den Server und für jeden einzelnen Spieler erstellt:
- ./clean-all
- ./build-ca
- ./build-key-server server
- ./build-key Spieler1
- ./build-key Spieler2
- ./build-key Spieler3
- ./build-key Spieler4
- ./build-dh
Jetzt liegen die Zertifikate für den Server und für jeden Spieler unter dem Pfad
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/
Dort sind sie nicht so gut aufgehoben, deswegen kopiere ich sie nach /etc/openvpn/keys
- mkdir /etc/openvpn/keys/
- cp keys/dh1024.pem /etc/openvpn/keys/
- cp keys/server.* /etc/openvpn/keys/
- cp keys/Spieler* /etc/openvpn/keys/
- cp keys/ca.* /etc/openvpn/keys/
3) Die Server Config erstellen
Die Datei /etc/openvpn/server.conf erstellen bzw editieren. Der Server bekommt die Adresse 10.8.0.0, wir möchten gern udp und auf Port 1194 lauschen. Außerdem muss der Pfad zu den Keys angegeben werden, die wurden im Schritt 2 ja nach /etc/openvpn/keys kopiert. (Unter anderem damit man hier nicht einen endlos Pfad eintippen muss) Die komplette Beispieldatei:
server 10.8.0.0 255.255.255.0 dev tun port 1194 proto udp push "redirect-gateway def1" push "dhcp-option DNS 145.253.2.11" # DNS-Server 1 push "dhcp-option DNS 145.253.2.171" # DNS-Server 2 (falls vorhanden) ping-timer-rem keepalive 20 180 persist-key persist-tun verb 3 mute 50 dh /etc/openvpn/keys/dh1024.pem ca /etc/openvpn/keys/ca.crt key /etc/openvpn/keys/server.key cert /etc/openvpn/keys/server.crt duplicate-cn client-config-dir /etc/openvpn/clients
4) Ready, Set GO!
Jetzt das erste mal Openvpn starten mit dem Befehl:
- openvpn --config /etc/openvpn/server.conf
Und Iptables anweisen das Pakete die über OpenVPN ankommen in die Weiten des Internets geschickt werden sollen (NAT-Maskiert weil 10.8.0.0 ein privates Netzwerksegment ist).
- iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
5) Authorisierte Clients freischalten
Der Server läuft jetzt, oder sollte es zumindest. Ansonsten geben die Fehlermeldungen hoffentlich einen Hinweis wo es hängt. Nun muss OpenVPN noch wissen wer sich verbinden darf, und welche Einstellungen für die Clients gültig sind.
Ein Verzeichnis /etc/openvpn/clients anlegen und dort für jeden Spieler eine Datei
spieler1 spieler2 spieler3 spielerx [...] mit dem Inhalt:
# Der Client wird angewiesen den OpenVPN-Server als Default-Gateway zu nutzen # und alle Verbindungen über ihn abzuwickeln: push redirect-gateway # Der Server wird angewiesen dem Client eine feste IP zuzuweisen. ifconfig-push 10.8.0.14 10.8.0.13
Die IP-Adresse muss für jeden Spieler individuell angepasst werden.
Passend zur Subnetzmaske 255.255.255.252 sind für die Spieler 1-4 folgende Kombinationen gültig:
Spieler1 10.8.0.6 10.8.0.5
Spieler2 10.8.0.10 10.8.0.9
Spieler3 10.8.0.14 10.8.0.13
Spieler4 10.8.0.18 10.8.0.17
Damit ist der Server einsatzbereit und wartet auf die ihm bekannten Clients.
6) Client Installation
Das OpenVPN GUI Paket auf den Clients installieren. Zur Zeit: openvpn-2.0.9-gui-1.0.3-install.exe
Den Ordner in dem openvpn Installiert wurde öffnen und zu dem Ordner config durchhangeln, also z.B.
C:\Programme\OpenVPN\config
Dort einen Ordner keys erstellen und dort die
- ca.crt
- Spieler1.crt,
- Spieler1.key
die im Punkt 3 auf dem Server erstellt wurden und die wir nach
/etc/openvpn/keys kopiert haben ablegen. Kann man z.B. über einen
sicheren Kanal (verschlüsselte E-Mail ;) den anderen Spielern zukommen
lassen )
Im Ordner C:\Programme\OpenVPN\config eine Datei Spieler1.ovpn anlegen mit dem Inhalt:
client ip-win32 manual remote 192.168.1.1 1194 # Hostname/externe IP und Port des Servers proto udp dev tun ca C:\\Programme\\OpenVPN\\config\\keys\\ca.crt cert C:\\Programme\\OpenVPN\\config\\keys\\Spieler1.crt key C:\\Programme\\OpenVPN\\config\\keys\\Spieler1.key verb 3 # Zum Debugging erhöhen mute 50 # Zum Debugging auskommentieren
Nun unter den Netzwerkverbindungen die neu vorhandene virtuelle Netzwerkkarte (z.B. Lan Verbindung 2) Rechtsklick, Eigenschaften, TCP/IP, Eigenschaften eine Feste IP-Adresse zuweisen:
- Der erste Spieler 10.8.0.6 Mask 255.255.255.252 Gateway 10.8.0.5
(Das ist die IP-Adresse die dem Server oben bei Schritt 5 unter /etc/openvpn/clients/Spielerx für diesen Spieler zugeteilt wurde)
Bei
der Default Installation von OpenVPNGUI läuft der Prozess jetzt bereits
unten in der Taskleiste und wird durch ein rotes Netzwerksymbol
angezeigt.
Dort Rechtsklick, verbinden und der Tunnel sollte stehen.
Ansonsten das Logfile des Server nach Fehlermeldungen durchsehen.
Vom Server aus sollte man in der Lage sein jeden einzelnen eingewählten Spieler anzupingen, der Spieler kann den Server anpingen. (Bei den Spielern untereinander klappt das nicht, dafür müsste man den OpenVPN-Modus TAP wählen)
Hat der Verbindungsaufbau geklappt werden alle Pakete ins Internet über den OpenVPNServer geleitet.
Die Spieler befinden sich im selben LAN und gehen über dieselbe "Leitung"
/ IP-Adresse auf den TDU Server.
7) PROFIT!?
Sind jetzt alle Spieler im
Club sehen sie sich nicht nur in der Club Lobby - womit das ganze
Konzept des Hauskaufes für den Club und die Features zur
Avatargestaltung überhaupt erst einen Sinn ergibt - nein - jetzt kann
man auch ein Club vs Club rennen fahren wenn sich jeweils Spieler 1 und
2 bzw Spieler 3 und 4 in verschiedenen Clubs befinden.
Wie
man sieht steht das dringend benötigte "Bereit für Wettbewerb" nun
endlich da. Außerdem beachte man wie Crashman gelangweilt an der Bar
steht, Kellerkind im Sessel darauf wartet das ein Gegner erscheint und
ganz hinten auf diesen Screenshot schwer zu erkennen lümmelt
Grandfather auf der Couch rum....
Im Beispiel
werden feste IP-Adressen benutzt - das lässt sich auch mit dhcp
benutzerfreundlicher gestalten. Mit dem tun Interface und der
Subnetzmaske 255.255.255.252 (Eine Beschränkung von OpenVPN mit
Windows) lassen sich andere LAN Spiele nicht gut spielen - dafür ist
das TAP interface besser geeignet. Natürlich müssen alle Firewall
Lösungen bei den Spielern und auf dem Server entsprechend
freigeschaltet werden.
Einer unserer Spieler hatte Probleme mit der
Übernahme des DNS vom OpenVPN Server. Laut Wiki muss der
Benutzerkontenschutz UAC bei Vista abgeschaltet werden und die
Konfigurationsschalter
route-method exe
route-delay 2
in
der SpielerX.ovpn sollen helfen. Brachte aber nichts. Also von Hand den
DNS beim Clienten eingetragen und Schwupps alles schick. Nach den
ersten AHA Effekt gibt es also noch jede Menge Möglichkeiten zum
Finetuning. Gute Anlaufstellen dafür sind:
http://www.hs-esslingen.de/de/40044
http://arnowelzel.de/wiki/de/fli4l/openvpn
http://www.openvpn.net/index.php/documentation/howto.html
http://www.vpnforum.de/wiki/
und für Probleme
http://www.vpnforum.de/openvpn-forum/
oder fragt einfach bei uns im Board
http://www.internationaloldstars.de/board/index.php/topic,2128.75.html
http://www.internationaloldstars.de/board/index.php/topic,2607.0.html