Grundlagen des Problems

Nerv mich nicht mit Techscare! Wie fix ich das? Scroll runter zu „Lösen wir das Problem!“

Warum sollte ich mir Gedanken zu Netzwerkeinstellungen machen, wenn ich doch nur eine XBOX Spielekonsole benutzen will?

IMG_20140821_102416Genau diese Frage habe ich mir schon öfters gestellt. Eigentlich braucht man das nicht, solange man alleine im Singleplayer spielt, sobald man ein Multiplayerspiel oder eine XBOX LIVE Party (bzw. das PS3/PS4 pendant) betreten will, folgt die Ernüchterung oftmals auf dem Fuße. Nix geht. Hat man Glück, weist einen das Spiel darauf hin, dass Dein NAT-Typ „strikt“ oder „moderat“ ist und dieser „offen“ sein soll. Ich arbeite nun schon seit Jahren in der IT und solche Bezeichnungen sind mir in der Form noch nie untergekommen. Googlet man danach, findet man bücherweise Ergebnisse von verzweifelten Leuten, die die verrücktesten Dinge tun, um NAT-Typ „offen“ auf magische Weise zu erhalten.

Was bedeutet dieser ganze Humbug nun?

Im Grunde ist es ganz einfach, die Konsole (und das trifft ebenso auf PS3/PS4 zu) ist von aussen (von Mitspielern) nicht direkt erreichbar. Da wir immer uns noch mit dem Jahrzehnte alten IPv4 Protokoll rumschlagen müssen, weil die Netzbetreiber ihren Arsch nicht hochbekommen, IPv6 einzuführen und im „alten“ Internet die Adressen knapp sind, werden private Netzwerke (und Firmennetzwerke) in nicht routingfähigen privaten Netzwerkbereichen (z. B. 192.168.0.0/24) aufgesetzt und ein Router macht NAT (Network Address Translation) nach außen ins Internet. Er schreibt also die privaten Adressen der Rechner im Netzwerk so um, als würden sie von der einen externen, öffentlichen IP des Providers abgeschickt werden. Dies spart IP-Adressen, ist ein Riesen Pain-In-The-Ass und nichts weiter als ein aus Adressmangel entstandener schmutziger workaround.

Naja, wenns funktioniert, wo ist das Problem?

Es funktioniert. Wenn die Verbindung von innen nach außen ins Internet initiiert wurde, also ein PC eine Anfrage zu einer Webseite geschickt hat, dann merkt sich der Router, wer mit wem sprechen will, und wenn die Antwort vom Webserver eintrifft, nimmt er die Antwort, die an den Router selbst gerichtet ist, und leitet ihn an den PC weiter. Wenn aber der Router nicht mit einer (stateful) answer rechnet, weiss er nicht, was mit dem Paket geschehen soll und lässt es einfach im Nirvana verschwinden. Die XBOX Deines Kumpels kann ihre Voicechatdaten also nicht bei Deiner XBOX abladen, sodass Du sie auf dem Headset hörst.

Ok, das hab ich verstanden, was ist dann der Unterschied zwischen „strikt“ und „gemäßigt“?

ohne freundliche Genehmigung von Microsoft hier geklaut: http://support.xbox.com/de-DE/xbox-one/networking/nat-error-solutionDie Erklärung wird ein bisschen technisch. Im Grunde wird bei „striktem“ NAT der Quellport randomisiert, also zufällig verändert, wobei bei moderatem NAT der gleiche Quellport auf der WAN Seite verwendet wird, wie ihn der PC im Netzwerk bereits benutzt hat.

Stellt also der besagte PC im Netzwerk eine Anforderung an eine Webseite auf dem Highport (ports 1024-65534) 13834 an die Webseite auf port 80, wird bei einem guten Router (striktes NAT) aus Gründen des Datenschutzes obfuscated (verschleiert), der vom PC gewählte Port also durch einen zufällig gewählten, beliebigen anderen (freien) Highport ersetzt – und zwar bei jeder neuen Verbindung zwischen 2 Netzwerkstationen. Eine TCP/IP Verbindung, die länger besteht, nutzt dann weiterhin die vormals ausgemachten Ports. Dies verhindert auch Komplikationen, falls 2 Rechner im Netzwerk zufällig den gleichen Port verwenden wollen, denn der Router ist die einzige Stelle im privaten Netz, der weiß, wer was verwendet.

Bei „moderatem“ NAT verschickt der Router in diesem Beispiel die Pakete auch auf Port 13834. Dass dies nun gemäßigt genannt wird, hat den Grund, dass man dabei ein wenig tricksen kann, die „moderate“ XBOX öffnet nun also regelmäßig Verbindungen zu einer anderen XBOX, ohne Daten anzufordern und wartet bis die andere mit einem Paket antwortet, welches diese Deiner XBOX zustellen will, das funktioniert freilich nur, wenn die andere Seite nicht „strikt“ ist, weswegen dies keinen wirklich gangbaren workaround darstellt.

Lösen wir das Problem!

Jetzt gibt es ein paar Möglichkeiten, die XBOXen oder PlayStations doch zur Kommunikation zu bewegen:

  1. UPnP aktivieren
  2. Manuell einen port-forward / Portweiterleitung / SNAT einrichten

Die erste Variante ist eine der schwachsinnigsten Ideen seit Erfindung des NAT! UPnP ist ein höchst primitives Protokoll aus der Feder von u. A. Microsoft, das ohne jede Authentifizierung und Kontrolle beliebige Ports vom Router aus dem Internet auf beliebige Ports beliebiger PCs umbiegen (weiterleiten) kann. Man braucht kein Superhirn zu sein, um zu erkennen, dass dies eine Einladung an Cracker darstellt, mit nur einem infizierten PC ein ganzes Netzwerk zu kompromittieren. Und dabei braucht es nicht mal Schadsoftware, ein fehlerhafter Torrent Client oder ein geistesabwesender User können so auch schon die Höllentore öffnen.

Für die zweite Möglichkeit braucht man Infos, welche Port(s) die Konsole denn wohl verwenden will. Und genau da liegt der Hund begraben! Diese Infos gibt es augenscheinlich auf den XBOX Support Seiten. Jeweils für die XBOX 360 und die XBOX ONE. Das Problem dabei ist nur. Diese Infos sind grundlegend falsch! Es steht in beiden Fällen seit Jahren unter der Unterschrift „Portweiterleitung„. Das stimmt nicht! Hier werden die Ports genannt, die die XBOX nach außen hin verwendet. Ein normaler Heimrouter/Firewall blockt nach außen in aller Regel gar nichts. Diese Infos benötigt man, wenn man – wie ich – etwas paranoider ist und nur selektiv für einzelne Geräte die Kommunikation erlauben möchte, nicht zur Lösung des NAT Problems.

Wenn man UPnP mal spaßeshalber aktiviert, richtet sich die XBOX beim Verbindungstest eine Portweiterleitung von WAN 3074 UDP auf ihre eigene interne IP-Adresse ein. Und keinen einzigen Port mehr! Mehr braucht das Gerät nicht, weder für Kinect, noch für Sprachchat oder irgendwas anderes. Und mehr sollte sie deswegen auch nicht bekommen. Und ja, dies trifft sowohl auf XBOX ONE wie auf XBOX 360 zu, ein paralleler Betrieb beider Geräte im Wechsel oder mehrere gleicher Generation wird also nochmal komplizierter – wenn überhaupt möglich.

Hab ich gemacht. Geht trotzdem nicht! Warum?

pfsense_static NAT

Die XBOX will mit static Port ins Internet ge-NAT-ed werden.

Tja, das gleiche Problem hatte ich auch und war ebenso verwundert wie frustriert. Und an dieser Stelle wirds erst recht interessant. Denn das dumme Biest öffnet bei sich den Port 3074 und will während des Tests darüber zu einem Microsoft Server sprechen. War der NAT-Typ vorher moderat, meldet sich die XBOX bei Microsoft vom Port 3074, der Server testet, ob er sie an der öffentlichen Internetadresse auf 3074 erreichen kann und alles ist gut, war der NAT Typ strikt, meldet sie sich von einem zufälligen Port und Microsoft testet diesen zufälligen statt dem gerade als Portweiterleitung eingerichteten Port 3074

Die gute Nachricht ist, die meisten Plastikrouter von Euren Providern machen es ohnehin schon so wie von der XBOX/PlayStation erwartet, die schlechte ist: vermutlich wird sich das Verhalten bei Eurem Router nicht ändern lassen.

Ich nutze einen PC mit der freien pfsense Software drauf als Router / Firewall / VPN / usw., diesem kann man in den Outbound NAT Rules beibringen für die XBOXen und nur die XBOXen, dieses Verhalten zu ändern, möglicherweise findet sich eine ähnliche Einstellmöglichkeit auch bei Eurem (besseren) Router. pfsense ist aber schon ein recht mächtiges Werkzeug, vielleicht zu viel des Guten für ein Heimnetzwerk, alternativ kann man sich auch mal IPFire oder monowall ansehen, die einen ganz brauchbaren Eindruck hinterlassen haben. Vorzugsweise lässt man diese Art der Software auf stromsparenden (embedded) Geräten laufen, wenn man ohnehin nicht so hohe Ansprüche an die Leistungsfähigkeit des Routers hat, bei intensiver Nutzung von VPN und anderen rechenintensiven Aufgaben, sollte der PC schon etwas flotter sein.

Hab ich alles schon probiert und es geht immer noch nicht. Ich könnte heulen!

Dann bleibt noch eine letzte Möglichkeit. Nämlich, dass Du das (zweifelhafte) Vergnügen hast, schon in den Genuss des next-gen Internet IPv6 gekommen zu sein, die ersten Provider verteilen bei relativ neuen Verträgen schon IPv6 Adressen. Toll! Endlich! Dann sollte es gar keine Probleme geben, denn bei IPv6 gibt es kein NAT mehr (auch wenn einige ängstliche Windows Admins das gerne anders hätten). Nur beherrscht weder eine PlayStation noch eine XBOX dieses Protokoll. Die XBOX zumindest theoretisch auf dem Datenblatt, sie nutzt es dennoch nicht

Stattdessen verwendet sie immer das auf IPv4 angewiesenen längst begrabene V4-v6 Übergangsprotokoll Teredo, was bei Verfügbarkeit von nativem IPv6 gar nicht mehr benutzt werden soll/darf, da gab es große Probleme mit einigen AVM Fritzboxen, die korrektes Verhalten an den Tag gelegt haben und im Zuge der XBOX Probleme zu nicht standardkonformem Verhalten umgepatcht werden mussten, um Teredo Tunnel auch mit IPv6 Konnektivität zu erlauben.

Zu diesem Problem, dass die next gen Konsolen nicht next-gen tauglich sind, gesellt sich noch ein viel gravierenderes Problem. IPv4 und IPv6 können wunderbar parallel genutzt werden, also gleichzeitig auf der gleichen DSL Internetverbindung. Das nennt man Dual-Stack. Nur haben die Provider den Trend mittlerweile so lange verschlafen, dass auch ihnen die Adressen nun ausgehen und sie eine Technik namens DS-Lite (Dual Stack Lite) einsetzen. Das heißt, sie verteilen nur noch die neuen IPv6 Adressen und keine echten öffentlichen IPv4 Adressen mehr. Stattdessen tunneln sie das „alte Internet“ durch das neue hindurch und machen NAT dann beim Provider. Man müsste also 2 Portweiterleitungen einrichten, einmal beim Provider und einmal bei sich im Router. Da das nicht geht, gibt es für dieses Problem leider keine selbst zu bewältigende Lösung.

In dem Fall bleibt Euch nichts weiter übrig, als böse Mails an Microsoft und Sony zu verschicken, warum verfickt nochmal sie IPv6 nicht richtig beherrschen und an Euren Provider, Euch doch noch (vermutlich gegen Aufpreis) eine IPv4 Adresse zu geben. Das ist die traurige Wahrheit.