header YouTube
Clonk Livestream auf Twitch.tv!

Clonkspot

Hosten mit DS-Lite

#1

Hallo,

Ich habe meinen Internetanbieter gewechselt und musste leider feststellen, dass dieser nur DS-Lite verwendet.
Jetzt ist die Frage ob Clonk auch IPv6 unterstützt und ob schon Jemand es geschafft hat mit DS-Lite zu hosten.

Alternativ bietet der Anbieter die Möglichkeit auf normales Dual-Stack für 1,95 € zusätzlich. Wenn es aber auch so funktioniert könnte ich mir das sparen.

Gruß
NilsZ

0 Likes

#2

Soweit ich mich entsinne konnte man mit IPv6 nicht hosten und auch nur über so ein IPv6-auf-IPv4-Dings beitreten. Ich kann aber leider auch nicht sagen, ob und wenn ja, wann IPv6 Unterstützung mal implementiert werden soll. Wünschenswert wäre es aber durchaus.

0 Likes

#3

>so ein IPv6-auf-IPv4-Dings


Das ist eben das „DS-Lite“. Das Problem mit IPv6-Unterstützung ist, dass man dann eben das umgekehrte Problem bekommt: Nur noch Leute, die IPv6 haben, können beitreten. Deshalb ist es nicht so attraktiv, das zu implementieren.
0 Likes

#4

Wobei ja inzwischen die meisten Provider IPv6 anbieten. Zumindest in Deutschland. Ich weiss aber nicht, wie das in anderen Ländern aussieht. IPv4/6 gemischt wär doch theoretisch auch möglich, oder irre ich mich da?

0 Likes

#5

Naja, mein Provider bietet als Alternativen (für Altkunden) reines IPv4 oder DS-Lite IPv6 an. Da besteht absolut keine Motivation, zu wechseln.

>IPv4/6 gemischt wär doch theoretisch auch möglich, oder irre ich mich da?


Es geht schon, klingt aber einfacher, als es tatsächlich ist. Man kann etwa nur durch ausprobieren herausfinden, ob IPv6 funktioniert, was zu Verzögerungen beim Verbinden führen kann. Außerdem müsste dann ein Spiel doppelt beim Masterserver angemeldet werden, einmal über IPv4 und nochmal über IPv6.
0 Likes

#6

Ich bin zwar selbst nicht davon betroffen, kenne aber jemanden der das gleiche Problem mit DS-Lite von Unitymedia hat.
Bis vor einigen Wochen ließ sich der NAT-Router relativ einfach überwinden: Man musste nur eine TCP-Verbindung mit einem externen Host aufbauen oder ein UDP-Paket schicken, wobei man als Absender-Port den Port verwendete, unter dem man erreichbar sein will. Z. B. reichte es aus an google.de mit Absender-Port 11113 ein UDP-Paket zu schicken, um für ca. 2 Minuten alle an die externe IP an Port 11113 gerichteten Pakete zu empfangen. Das ließ sich per Engine-Patch oder externem Programm realisieren.
Seit kurzem ist aber der externe Port nicht mehr vorhersehbar. Allerdings ist die Adresse nach wie vor egal: Wenn die Engine z. B. ein Paket an clonk.de:11115 schickt, werden für 2 Minuten alle Pakete an den Port den der NAT-Router als Absender für clonk.de:11115 benutzt hat an die Engine weitergeleitet.
Genau das macht der Puncher, der übrigens immer noch in der Engine, aber nicht mehr auf clonk.de aktiv ist. Wenn der Puncher-Server noch laufen würde, bekäme die Engine von ihm den externen Port mitgeteilt unter dem sie erreichbar ist und würde ihn auf dem Masterserver eintragen. Hier gibt es nun zwei Probleme: Das erste ist, dass der NAT-Router nach 2 Minuten das Mapping entfernt wenn keine Pakete geschickt werden. Joint also niemand innerhalb von 2 Minuten, dann funktioniert die Weiterleitung nicht mehr. Clonk müsste also alle 2 Minuten ein neues Paket an den Puncher schicken. Das zweite Problem ist, dass Clonk alle Portnummern >= 32768 falsch vom Masterserver ausliest: http://forum.openclonk.org/topic_show.pl?tid=3230
Angenommen der NAT-Router benutzt nach außen Port 54321, dann wird das zwar korrekt auf dem Masterserver eingetragen. Beim Auslesen sehen die Engines aber Port 32767. So lange der Port unter 32768 bliebe müsste es aber funktionieren.

IPv6-Unterstützung zu implementieren würde auch nicht viel bringen, da wie Luchs schon sagte, immer noch viele Spieler kein IPv6 haben.

Ob man mit DS-Lite hosten kann hängt also von diesen Punkten ab:
1) Der NAT-Router muss mitspielen (indem er sich z. B. so verhält wie der oben erwähnte von Unitymedia)
2) Irgendjemand muss wieder den Puncher hosten
3) In der Engine muss der 32768-Bug behoben und alle 2 Minuten das Mapping erneuert werden

Punkt 1 müsstest du testen, für 2 wird sich sicher jemand bereit erklären. Und zu 3: Der Bug (und viele andere) ist schon seit geraumer Zeit behoben, nur muss der Code halt noch aufgeräumt werden und ich weiß leider nicht, wann wir endlich mal dazu kommen.

0 Likes

#7

Klingt auf jeden Fall nach einer guten Lösung.

Wie kann ich denn manuell ein UDP-Paket senden? Mit cmd.exe und ping google.de:11113 oder wie?

Hier noch die Stellungnahme von meinem Provider inexio/quix:

als schnell wachsender Internet-Provider müssen wir uns den sich permanent ändernden Rahmenbedingungen anpassen. So auch der endlichen Zahl von IPv4 Adressen. Die vorhandenen IPv4 Adressen sind vollständig aufgebraucht. Damit ist es für uns unausweichlich unser Netz vollständig auf IPv6 umzustellen.

Aktuell betreiben wir Endkundenanschlüsse im Dual-Stack-Betrieb mit NAT. Dabei wird jedem Anschluss eine private IPv4-Adresse und ein öffentlicher IPv6-Bereich zugewiesen.
Dadurch sind Sie per IPv4 nicht direkt aus dem Internet erreichbar. Verbindungen von Ihnen zum Internet sind weiterhin über unsere zentralen NAT Gateways möglich.

Da der IPv4-Adressenmangel ein allgemeines Problem ist, betrifft dieses Thema alle erfolgreich wachsenden Diensteanbieter. Wir bitten Sie daher die von Ihnen genutzten Dienste, wenn möglich direkt über IPv6 zu nutzen.

Mit dieser Methode ist es möglich, die wenigen verbliebenen IPv4-Adressen effizient zu nutzen. Per IPv6 ist Ihr Anschluss weiterhin aus dem Internet erreichbar.

Sollten Sie aus einem bestimmten Grund weiterhin eine öffentlich erreichbare IP-Adresse benötigen, bieten wir Ihnen den Betrieb einer öffentlichen IPv4-Adresse zu einer monatlichen Gebühr von 1,95€ an.

Wenn Sie wünschen, dass wir Ihren Anschluss entsprechend umstellen, bestätigen Sie uns bitte, dass Sie mit den genannten Kosten einverstanden sind. Dazu können Sie einfach auf diese Email antworten.

Mit freundlichen Grüßen
Ihr QUiX-Support

0 Likes

#8

So einfach geht das mit dem Testen leider nicht. Ich hab dazu mal ein Programm angehängt. Du brauchst noch 2 Leute dafür: Einer hostet den Puncher und ein anderer versucht beizutreten.

Derjenige, der den Puncher hostet, braucht eine funktionierende Portweiterleitung und führt dann, um den Puncher auf Port 11115 zu hosten, aus:
PuncherTest.exe p 11115

Du führst dann Folgendes aus, um auf Port 11113 zu hosten und den Puncher zu benutzen:
PuncherTest.exe s 11113 <externe_IP_des_Punchers>:11115
Bei dir müsste dann Puncher response: External address is <deine_externe_Adresse> erscheinen.

Der Client führt dann aus:
PuncherTest.exe c <deine_externe_Adresse>

Wenn der NAT-Router so funktioniert wie der Unitymedia-Router, dann müsste bei dir Received 1 byte(s) from <externe_Adresse_des_Clients> erscheinen.

Also angenommen der Puncher hat die externe IP 1.1.1.1, du hast 2.2.2.2 und der Client 3.3.3.3. Dann würde es z. B. so ablaufen:
- Puncher: PuncherTest.exe p 11115
- Du: PuncherTest.exe s 11113 1.1.1.1:11115
- Ausgabe bei dir: Puncher response: External address is 2.2.2.2:12345
- Client: PuncherTest.exe c 2.2.2.2:12345
- Ausgabe bei dir: Received 1 byte(s) from 3.3.3.3:23456

Edit:
Auf 134.119.8.5:11115 hat DerTod schon einen Puncher laufen. Also brauchst du nur noch einen Client zum Testen.

0 Likes

#9

Der Puncher läuft jetzt unter 178.33.39.158:11115 , falls nochmal jemand drüber stolpert.

0 Likes