Problem mit Simutrans server public announcement - Druckversion +- Deutsches Simutransforum (https://simutrans-forum.de/mybb) +-- Forum: Simutrans (https://simutrans-forum.de/mybb/forumdisplay.php?fid=3) +--- Forum: Installation und Start (https://simutrans-forum.de/mybb/forumdisplay.php?fid=5) +--- Thema: Problem mit Simutrans server public announcement (/showthread.php?tid=8557) Seiten:
1
2
|
Problem mit Simutrans server public announcement - fluorid - 18-10-2016 Hallo Leute, ich wollte einen kleinen Simutrans Test server aufsetzen und ihn auch in die Serverliste setzen. Das Ganze soll auf einem Raspberrypi laufen. Oder vilmehr will ich sehen, was auf dem Raspberrypi möglich ist, Simutrans server technisch. Habe dazu nämlich nicht viele Infos gefunden. Zuerst mein Setup: Raspberrypi B mit raspbian, aktuelle version Simutrans 120 headless aus dem sourcecode kompiliert Das Ganze hängt (leider) hinter zwei Fritzboxen: In der 1. Fritzbox, die mit VDSL ans Internet angebunden ist, ist die zweite Fritzbox als exposed host eingetragen. Es sollten also per se alle ports weitergeleitet werden. Bei der 2. Fritbox, die dahinter hängt, sind die entsprechenden ports für TCP und UDP explizit freigegeben. Das Ganze funktioniert auch astrein, solange ich nicht den Hostname (von no-ip.com) angebe. Sobald ich das tue, versucht simutrans beim Serverstart den Hostname aufzulösen und checkt, ob der entsprechende Port offen ist (vermute ich mal). Da das aber nicht der Fall ist, bindet er nicht an den Port, was dazu führt, dass der Port nie geöffnet ist (wird). Wenn ich keine explizite IP Adresse angebe, startet der server und der Port ist offen. Allerdings geht ja kein announce, wenn der hostname nicht eingetragen ist. Hier die Fehlermeldung von Simutrans: Code: Message: socket_list_t::add_server: add server socket[5] Hat jemand eine Idee, was ich falsch mache, bzw. Wie ich das Problem umgehen kann? Liebe Grüße, fluorid - prissi - 18-10-2016 Also zuerst müsstest du port 13353 weiterleiten, über den läuft nämlich die interne Kommunikation (Kannst natürlich auch einen beliebigen anderen port angeben). Der Serverlist-Server versucht von deinem Server einen Spielstatus zu bekommen. Klappt das, dann wird er in die Liste eingetragen. TCP wird nur für die Kommunikation im Spiel verwendet, wenn sichergestellt werden soll, das Spielstände und Kommandos korrekt und in der richtigen Reihenfolge übertragen werden. - fluorid - 19-10-2016 Hallo, danke für deine Antwort, prissi. Das ist mir soweit alles klar. Ich habe anstatt des Standardport Port 13421 verwendet, aber das sollte keinen Unterschied machen. Mein Setup habe ich ja im 1. Beitrag schon erläutert. Um es nochmal deutlicher zu machen: Wenn der Server gestartet ist ohne an die no_ip url gebunden zu sein, geht alles und der Port ist offen. Wenn ich den server versuche zu starten und die no-ip url ist eingetragen komme ich gar nicht zu dem Punkt, wo der sevrer startet. Ich vermute der server startet nicht, weil der Port nicht offen ist. Aber der Port wird von der Fritzbox erst aufgemacht, wenn sich ein Programm dran gebunden hat. Kann das sein? Das wäre ja dann so eine Art Henne - Ei Problem... Portscan auf no-ip url mit nmap ohne gestarteten server: Code: ich@mypc:~$ nmap mydyndns.no-ip.org -p 13421 Hier das Ganze nachdem ich den server gestartet habe, ohne die dyndns url explizit anzugeben: Code: ich@mypc:~$ nmap mydyndns.no-ip.org -p 13421 Any ideas? Lg, fluorid - papa69 - 19-10-2016 ich bin jetzt nicht der Server-Experte, aber: Nur die 1. Fritzbox kann die IP via no-ip auflösen (bzw. no-ip kann nur die 1.Fritzbox "sehen" und nicht, was alles noch dahinter kommt --> deine 1. fritzbox muss also für no-ip eingerichtet sein und nur hier kann die fritzbox "ihre" aktuelle ip melden und no-ip deinen dns.no-ip-namen auflösen) die 2. fritzbox kann das nicht, weil ihr diese ip nicht bekannt ist, daher kannst du von hier aus nur über die portfreigabe der 1. Fritzbox nach "draußen" kommunizieren - fluorid - 19-10-2016 Hallo, danke für Deine Antwort, papa69. Also ich bin jetzt auch nicht unbedingt der Serverexperte aber das ist quatsch. Die Fritzbox muss ja nichts auflösen. Der Client, also die Person die mitspielen will, bzw. der Simutrans announcement server muss die no-ip Adresse auflösen können, bzw. die richtige IP dazu sehen können. Das funktioniert auch einwandfrei. An der 2. Fritzbox ist Port 13421 freigegeben. Da die 2. Fritzbox als exposed host in der 1. eingetragen ist, schickt die 1. Box alles was reinkommt und nicht zu einer bestehenden Verbindung gehört auf die 2. Box weiter. Diese hat eine Portfreigabe auf 13421 (den Port, den ich verwenden will). Somit kommt auch alles am RaspberryPI an, wie es soll. Ich kann mich auch via dyndns auf den Server verbinden. Das setup scheint OK zu sein. Was nicht geht ist der server announce. Was ich inzwischen kapiert habe: Klar kann der RaspberryPI (mein simutrans server) nicht an die externe ip binden. Er hat schließlich kein interface, dem diese ip Adresse zugewiesen ist. Aber was muss ich nun wo eintragen, damit das announce funktioniert? Bisher sieht der Netzwerkabschnitt meiner simuconf.tab so aus: Code: ###################################network stuff############################## Passt die config so? Lg, fluorid - prissi - 20-10-2016 Kommentier "listen" aus; für das gibt es eigentlich keine vernüftige Anwendung, wenn du nicht gerade mehr als einen Netzwerkschnittstelle hast. Setz mal statt dem symbolischen Namen die richtige IP händisch (also server_dns = 149.55.49.1 oder was deine externe IP ist), dann sollte der Listserver deine IP sehen. Wenn es dann keine Antwort kommt, dann musst du dich mal mit der Kommunikation zwischen den Fritzboxen befassen. Ich hatte zwar nie 'ne Fritzbox, aber bei fast alle Routern, die ich je gesehen hatte, konnte man auch portweise weiterleiten. Und mit einer einfachen Portweiterleitung von 13353 (bzw. bei dir eben 13421) ist es schon erledigt. Also Testvorschlag: Port 13421 weiterleiten, listen auskommentieren, und nochmal versuchen. Alle IP und sonstige Verbindungen baut der Server auf, und die muss nur der Router nach draußen lassen. EIne DMZ ist völlig überkandidelt und wird den PI eher überlasten, bei dem Müll der typischerweise aus dem Netzt schwappt. - fluorid - 20-10-2016 Hallo, danke für Deine Antwort, prissi. Ich habe "listen" auskommentiert und es mit der IP Adresse probiert. Funktioniert. Mit der dyndns url funktioniert es nicht. Die 2. Fritzbox leitet ausschließlich port 13421 an den raspberryPI weiter. Der bekommt also keinen Müll aus dem Internet ab. Der dyndns name lässt sich prima auflösen und wenn man ihn manuell einträgt und den server abfragt kann man sich ohne Probleme verbinden. Das ist schon seltsam... Noch irgendwelche Ideen? Lg, Fluorid - prissi - 21-10-2016 Da es mit IP Adresse geht und mit dynamischen Namen nicht, hat sich auch bei einem kurzen Test mit NoIP herausgestellt. Keiner der aktiven Server hat einen Symbolischen Names. Irgendwas scheint da am Server zu haken. Leider ist das Node-Skript nicht von mir und ich habe nur rudimentäre Kentnisse davon. EDIT: Symbolische IP-Adressen gehen wieder ... EDIT2: Und schon sind doppelt so viele Server da! - fluorid - 21-10-2016 Hey! Yayy! Das ist ganz großartig. Jetzt geht es perfekt. Habe schon ernsthaft an mir gezweifelt :-). Rein aus Interesse: Wo lag das Problem? Lg, fluorid - prissi - 21-10-2016 Die neuere Version von node.js kopiert den Präfix ::ffff: vor jede IP4 Adresse und vor jeden DNS-Namen. Damit scheitert die Abfrage, ob die Adresse eine gültige DNS-Adresse ist, den das Nachschlagen geht nicht. Daher war in der IP4-Nummerabfrage schon ein Test auf "::ffff:" als Präfix drinnen, aber nicht bei DNS-Name. Runterkopiert und es ging; hat mich aber auch drei Stunden suchen gekostet. Bei Interesse mal auf simulist auf github anschauen. |