ich habe ich mich heute etwas mit meiner FritzBox 7050 und UPnP beschäftigt.
Dabei bin ich zu folgendem Ergebnis gekommen:
Man kann tatsächlich mit der FritzBox siedeln, ohne (manuell) ports zu forwarden.
(Allerdings gibts Probleme beim lobbychat, siehe weiter unten)
Dazu muß man in der FritzBox unter
Einstellungen->System->Netzwerkeinstellungen
sowohl bei
"Statusinformationen über UPnP übertragen (empfohlen)"
als auch bei
"Änderungen der Sicherheitseinstellungen über UPnP gestatten"
ein Häkchen machen.
Auf den Rechnern muß DirectX 9 installiert sein, denn seit Version 9
enthält DirectPlay UPnP Unterstützung und sorgt dann automatisch
dafür, daß die benötigten Ports im router freigeschaltet werden.
Zusätzlich muß man noch sicherstellen, daß die firewall des Rechners
die Kommunikation nicht behindert.
Allein durch diese Einstellungen konnte ich sogar mit zwei Rechnern Spielen beitreten.
Was nicht funktioniert hat, ist das Hosten, der port 47624 wird leider
nicht automatisch an einen der Rechner weitergeleitet (zumindest bei mir nicht).
Wenn man den port aber noch wie gehabt manuell beim portforwarding einträgt,
kann auch der eine Rechner Host sein, und man hat eigentlich alles, was man
braucht.
Von daher möchte ich jetzt fast glauben, daß man mit allen Routern, die UPnP-Unterstützung
haben, auch siedeln kann, und das dann sogar gleich mit mehreren Rechnern.
ABER:
Wo soviel Licht ist, muß auch Schatten sein
Die Meinungen über UPnP sind gespalten, da man dadurch die Kontrolle verliert,
welche ports weitergeleitet werden. Das erhöht nicht unbedingt das Gefühl
der Sicherheit. Aber da soll sich jeder selber eine Meinung bilden.
Ein weiteres Problem ist auch der Lobby-chat. Da er nicht mit DirectPlay läuft,
haben die UPnP Einstellungen keinerlei Einfluß auf ihn, d.h. der Lobby-chat
muß ohne besondere Einstellungen laufen (oder man muß sich doch wieder mit
herkömmlichem portforwarding behelfen). Das tut er mit der FritzBox auch,
zumindest hat es auf den ersten Blick den Anschein.
Nach meinen Beobachtungen gibt es aber mit der FritzBox eine Einschränkung:
Ich kann nur Nachrichten von den Spielern lesen, an die ich schonmal geschrieben habe.
Wenn ich selber nichts schreibe, sehe ich rein gar nichts, als wäre das große Schweigen ausgebrochen.
Wenn ich allerdings ein portforwarding für udp port 3343 einrichte, habe ich keinerlei
Einschränkung.
Wie komme ich zu dieser komischen Meinung? Dazu werde ich im Folgenden ziemlich ins Detail
gehen, wen sowas nicht interessiert, der sollte besser hier abschalten.
Der Lobby Chat funktioniert folgendermassen: Der Rechner baut eine Verbindung
zum Lobby-Server auf, der Rechner benutzt dazu standardmäßig Port 3343, der Server
3344 und 3345, alles UDP.
Bei der FritzBox scheint es so zu sein, daß bei ausgehenden Verbindungen standardmäßig
durch das NAT nicht nur die interne IP-Adresse in die externe IP-Adresse verändert wird,
sondern zusätzlich der source-port in einen port jenseits von 61000 verändert wird.
Das machen einige Router so, ich vermute um Konflikten aus dem Weg zu gehen, wenn
unterschiedliche Rechner im LAN den gleichen source-port benutzen.
Für den Lobbyserver kommt daher die Verbindung nicht von port 3343, sondern von
einem port größer 61000, sagen wir mal 61007.
Wenn andere chatteilnehmer mir jetzt etwas schicken wollen, schicken sie also Pakete
an port 61007, nicht etwa an 3343 wie sonst. Der Router muß dafür sorgen, daß diese
Pakete dann wieder auf port 3343 des Rechner gemapped werden. Und dieses mapping
ist bei der FritzBox scheinbar nur dann erlaubt, wenn über diesen port schonmal etwas
an die jeweilige IP ging.
Folgendes habe ich ausprobiert: ich war mit 2 Rechnern in einem chatraum. Was ich auf
Rechner 1 schrieb, kam bei Rechner 2 nicht an. Mittels ethereal (www.ethereal.com) habe
ich die Pakete mitgeloggt. Meine Nachricht wurde tatsächlich an den korrekten port 61007
geschickt, aber als Reaktion darauf erhielt ich ein ICMP Destination unreachable Paket.
Erst als ich einmalig was von Rechner 2 geschrieben hatte, klappte die Kommunikation in
beide Richtungen, ab da konnte auch Rechner 2 alles von Rechner 1 lesen (es wurde weiterhin
derselbe port benutzt)
Zur Erinnerung, wenn man öffentlich was sagt, wird implizit an jeden Teilnehmer eine
Nachricht geschickt.
Und dieses Verhalten ist auch bei mehreren Teilnehmern so. Wenn ich in die Lobby gehe und nichts
sage, sehe ich rein gar nichts. Wenn ich einmal hallo sage, so kann ich die Leute lesen, die
gerade anwesend sind. Kommen neue Leute hinzu, kann ich deren Nachrichten solange nicht lesen,
bis ich wiedermal öffentlich etwas gesagt habe und damit auch implizit den neuen etwas
geschickt habe.
Das bezieht sich allerdings nur auf die FritzBox. Andere Router können sich ähnlich verhalten,
oder aber auch komplett anders.
Bisher hatte ich aber immer ein portforwarding für 3343 eingerichtet und da stellte sich mir die Frage,
inwiefern das nicht überflüssig ist, wenn die Pakete doch an Port 61007 geschickt werden.
Da kann das forwarding doch gar nicht greifen? Kann es auch nicht, aber es passiert etwas anderes,
womit ich gar nicht gerechnet hätte. Durch den Portforwarding-Eintrag wird beim NAT nämlich
nicht mehr mein source-port 3343 verändert, d.h. meine Verbindung kommt für den Lobby Server nicht
mehr von port 61007, sondern tatsächlich von port 3343, so wie im Normalfall ohne router.
Und weil dies so ist, kann andererseits dann auch das portforwarding greifen, denn nun werden
alle Nachrichten an port 3343 (des routers) geschickt, der sie entsprechend an den Rechner weiterleitet,
wie es die portforwarding Regel aussagt. Und das passiert auch, wenn ich noch gar nichts gesagt habe, die
Pakete werden nicht geblockt.
Der Eintrag bewirkt also ein 1 zu 1 portmapping in beide Richtungen, und nicht nur von außen nach
innen, wie ich mir das gedacht hatte.
Von daher lautet meine Empfehlung bei der FritzBox:
Das portforwarding für port 3343 nicht vergessen!
(bzw. 3344 und portblocker für den 2. rechner, etc.)
Gruß
Jim
Hint
After clicking "OK" a connection to Facebook will be established so that you can share the post there with your Facebook account.