Viren, Spyware, Datenschutz 11.258 Themen, 94.807 Beiträge

Portfreischaltung. Noch immer nicht..

jueki / 7 Antworten / Baumansicht Nickles

...kapiert. Ich habe, trotz heftigen googelns, immer noch nicht kapiert, weshalb ich bei einem Router UDP- Ports freischalten muß. Und wie ich Trigger- Ports und Public- Ports festlege.
Ich habe mal hier bei Nickles was rauskopiert:
>Dafür ist UDP aber sehr schnell, da es nicht auf die Quittierung vom Zielrechner warten muss, bevor...
Wenn man aber keine Rückmeldung benötigt, weshalb muß da ein Port freigeschaltet werden? Ich verstehe das so, das da nur gesendet wird!
Und die Daten aber werden über TCP ausgetauscht:
>
Sendet ein Host ein TCP-Paket, wartet er auf eine Bestätigung des Empfängers
TCP- Port freischalten, ja, ist mir klar. Aber einen UDP- Port?
Hm. Und wenn schon, muß dann der TCP- und UDP- Port unterschiedlich sein oder ist es immer der Gleiche?
Weiter geht es:
Ich muß sowohl einen Triggerport freigeben, als auch einen Public- Port. Wie entscheide ich nun, was welcher ist?
Mal als Beispiel MSN. (bitte nicht über Wert und Unwert von MSN reden!) Habe ich hier, Klick! gelesen. Da steht:
Applications:__ >MSN Messenger (Including Voice) Notes:________ >See this Microsoft Link for detailed info, including Windows 2000 Problems Port Numbers:_ >6901& 6891-6900 Begreif ich schon mal nicht. Warum >6901& 6891-69006891 - 6901 Ich hab wirklich versucht, mir da was zu "erlesen". Begriffen hab ich aber wenig. Helft Ihr mir?

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
xafford jueki „Portfreischaltung. Noch immer nicht..“
Optionen

Mir ist nicht ganz klar, worauf sich deine Frage bezieht.
Ich gehe einmal davon aus, daß es entweder um Port-Forwarding oder um Freigaben bei einer Firewall geht. Dabei muß Du grundsätzlich eines verstehen, und zwar den Begriff "related". Die meisten Firewall-Implementierungen und auch NAT arbeiten nach dem statefull packet Prinzip, dabei werden zu einer Verbindung gehörende Verbindungen als zulässig und zuordenbar angesehen.
Nun erst einmal grundsätzlich, was ist ein Verbindung? Nehmen wir einmal den trivialen Fall einer Anfrage an einen HTTP-Server. Hier kontaktiert dein Rechner einen Webserver. Dein Rechner (Browser) startet von einem hohen Port aus eine Anfrage an einen Webserver an den Port 80. Dein Betriebssystem weiß, daß der Ausgangsport eine Anfrage an die Server-IP mit dem Port 80 eine Verbindung aushandelt und daß die Verbindung eine bestimmte Sequenznummer hatte. Das Paket erreicht den Server, welcher entscheidet, ob er die Verbindung aktzieptiert. Er antwortet auf das Paket und erhöht die Sequenznummer um 1 und verweist deinen Rechner an einen freien höheren Port.
Ein Statefull-Packet-Filter oder NAT erkennt anhand Sequenznummer und Adressen, daß diese verbindung von innen initialisert wurde und erlaubt die zugehörigen Verbindungen.
Es gibt allerdings auch Protokolle (gerade Messaging oder Chats) bei denen es nicht in der Form läuft. Hier gibt es nämlich aktiv initiierte verbindungen vom Server aus. Du kontaktierst den Server auf seinem "Triggerport" um eine Verbindung anzumelden, der Server selbst startet von sich aus Verbindungen an deinen Rechner. Diese Verbindungen kann ein Statefull-Packet-Filter oder NAT von sich aus nicht zu einer bestehenden Verbindung zuordnen, deswegen müssen solche Ports generell weiter geleitet werden, oder mittels recht komplizierter Filterregeln oder Proxys analysiert werden. Da die meisten handelsüblichen Router und Firewalls für den Heimbereich solche Filterregeln nicht abarbeiten können bleibt also nur das generelle freigeben und bei Routern, weiterleiten an eine IP im LAN.
Bei UDP liegt das Problem oft ähnlich. Hier ein kleiner Ausfulg in Protokolle:
TCP ist Verbindungsorientiert. Jedes Paket hat eine um 1 höhere Sequenznummer als das vorherige und die Pakete werden in Reihenfolge zusammen gesetzt. Fehlt zwischen Paket x und paket x+2 das Paket x+1, so ist dies ein Fehler und Paket x+2 wird verworfen um x+1 neu anzufoerdern. Bei UDP ist dem nicht so. Pakete können generell in recht beliebiger Reihenfolge eintrudeln, wodurch sich UDP eigentlich nur für Verbindungen eigenet, bei denen Einzelpakete nicht so wichtig ist, wie z.B. bei Video oder Audiodaten. Hier liegt oftmals dann auch ein Problem von Firewalls oder NAT (dieser Ausflug hatte jetzt aber wenig mit "Trigger" und "Public" Ports zu tun).
Grundsätzlich gilt aber, daß man bei Protokollen, welche aktive Rückkanäle, also vom Zielserver selbst initiierte Verbindungen welche nicht dem Schema der Ursprungsverbindung entsprechen, beinhalten Ports generell freigegeben werden müssen, da NAT-Router oder Firewalls meist keine Kenntnis vom Protokoll haben um diese Verbindungen zuordnen zu können.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Andreas42 xafford „Mir ist nicht ganz klar, worauf sich deine Frage bezieht. Ich gehe einmal davon...“
Optionen

Hi!

Zustimmung, das ist eine gelungene Erklärung. Ohne Übertreibung: diese Erklärung habe ich auch gerade gesucht, da mir hier auch noch etwas die Grundlagen fehlen.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
jueki Nachtrag zu: „Portfreischaltung. Noch immer nicht..“
Optionen

Danke, @Xafford. >Etwas Aber, das ist eben mein Problem: es ist schwierig für mich. Nur mal als Beispiel, wie sich da die Schwierigkeiten auftürmen, wenn ich mich bemühe, etwas hier - oder eben auch in der Literatur zu begreifen. (Wobei ich mir wirklich die redlichste Mühe gebe!)
Ich spreche kein englisch. Also muß ich übersetzen. Der Translator übersetzt das Wort "related" mit "verwandt". Bei "Statefull-Packet-Filter" liefert nun Google 36 Ergebnisse...
Bitte nicht gram sein, wenn ich mich dämlich anstelle!
Aber mal so, wie ich Deine Ausführungen bisher verstanden habe:
Für eine Verbindung werden immer sowohl UDF als auch TCP benötigt.
Will ich jetzt eine Verbindung aufbauen, spricht mein PC also auf einen hohen Port den Trigger- Port der Webspace an. Diese antwortet nun und spricht ihrerseits einen oder mehrere Ports meines PC an?
Nee, so wird es nix. Ich sitze nun schon über eine Stunde hier vor dem Text und versuche zu formulieren. Um sowohl Zornes- als auch Heiterkeitsausbrüche meiner freundlichen Helfer zu vermeiden. Geh ich mal anders an die Sache ran.
Ich habe meinen Router folgendermaßen konfiguriert. (Das Reinsetzen von Bildern hier hab ich ja auch begriffen!)

_____


Nun bin ich da wirklich nur nach einer Kochbuchanleitung vorgegangen. Warum ich das gemacht habe, blieb mir in den Grundlagen unverständlich.
Müssen die Ports 21, 25, 110 und 126 eigentlich explizit freigeschaltet werden?
Unter 6.) - ICQ: Port 5190 als Triggerport - da dachte ich, das ist der Port, auf dem die Daten ankommen. Und von dort aus werden sie auf die Ports 12000 - 12004 meines PC verteilt?
1.), 7.), 8.) und 9.) - eMule- Freigaben. Die hab ich so eingestellt, wie ich es in verschiedenen Foren herausgelesen habe. Und damit funktioniert es auch!
Warum ich bei 1.) TCP, bei 7.) UDP, bei 8.) und 9.) bei Trigger TCP und bei Public UDP eingestellt habe, weiß ich nicht!
Das hat doch sicherlich nichts direkt mit eMule zu tun, sondern mit den Grundlagen des Datentransfers!
Und: Wie oder von wem werden diese Ports eigentlich zugeteilt und festgelegt? Von dem Programmierer der entsprechenden Anwendung? Hier zum Beispiel: http://kbserver.netgear.com/kb_web_files/n100495.asp - da habe ich ja einiges gefunden, was ich freischalten muß. Aber warum?
Ich weiß, das ich Deine -und Eure- Geduld strapaziere. Aber mir fehlt wirklich noch der "Klick" im Kopf. Und leider habe ich in meiner -für mich erreichbaren- Nähe noch niemand gefunden, der mir in einem Gespräch meine vielen Fragen erklären könnte!
Und in einem (teuer bezahlten) Lehrgang wurde alles mögliche angesprochen und erklärt - Aufbau des PC, Eingaben, Tastaturen, Word, Excel - nicht aber so etwas!

Jürgen

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen
xafford jueki „Danke, @Xafford. Etwas Aber, das ist eben mein Problem: es ist schwierig für...“
Optionen

Hi Jüki, net verzagen, Netzwerkprotokolle sind nicht wirklich die leichteste Kost. Ich versuche erst einmal so gut ich es kann deine Einzelfragen abzuarbeiten:


  • Nein, für eine Verbindung werden nicht immer sowohl UDP als auch TCP benötigt. Es gibt Protokolle, die entweder das eine, oder das andere oder auch beides benutzen, je nachdem, wie sie implementiert wurden. HTTP (Webserver) z.B. arbeitet nur über TCP, Streamingprotokolle vornehmlich über UDP, Messagingprotokolle meist über sowohl TCP als auch UDP.

  • Zu den Ports, ja und nein. Dein PC initiiert wirklich von einem Port jenseits der 1024 eine Verbindung an den Server mit Zielport 80. Was dann passiert hängt stark vom Protokoll ab, bleiben wir einmal bei HTTP. Der Server handelt dann mit deinem Rechner eine Verbindung aus und verweist deinen Rechner an einen (bzw mehrere) hohe Ports des Servers selbst. Der Server von sich aus baut bei HTTP keine Verbindungen zu deinem Rechner auf, ansonsten gäbe es bei HTTP Probleme mit NAT worauf ich später noch zurück komme

  • Die Ports 21, 25, 110, etc mußt Du NICHT frei geben, es sei denn Du würdest selbst einen entsprechenden Server betreiben. Du willst ja von innen nach außen eine Verbindung zu diesen Servern aufbauen, damit hat NAT keine Probleme, nur wenn jemand von außen nach innen diese Server bei Dir erreichen wollte gäbe es Probleme und Du müsstest freigeben, da komme ich aber später auch nochmal drauf zurück

  • Zu ICQ kann ich Dir aus dem Stehgreif nichts detailliertes sagen, außer das es sich nicht um ein Trigger- Kommunikationsport-Problem handelt, so ein Problem kennt NAT nicht. Es geht bei Messagingprotokollen darum, daß die entsprechenden Server von sich aus eine Verbindung zu deinem Rechner aufbauen wollen/müssen für bestimmte Funktionen, Du in diesem Fall also selbst eine Art Server anbietest.

  • Wie Ports zugeteilt werden unterscheidet sich danach, was für einen Dienst Du implementierst. Wenn Du z.B. einen Webserver selbst programmierst, dann bist Du mehr oder weniger festgelegt auf Port 80 oder 8080, da diese Ports von einem Gremium für diese weit verbreiteten Dienste fest gelegt wurden um verbindliche Rahmenbedingungen für die Kommunikation zu schaffen. Programmierst Du eine eigene Anwendung, die es noch nicht gibt, so hast Du eigentlich die freie Wahl welchen Port Du nimmst, solltest aber tunlichst keinen Port nehmen, der schon durch verbreitete Protokolle belegt ist, ergo fallen die ersten 1024 normalerweise weg.

  • Lehrgänge in denen so etwas unterrichtet wird sind meist wesentlich teurer bezahlt und man darf sich anschließend mit netten Titeln und Zertifikaten schmücken und 50% höhere Beratungshonorare verlangen, also nicht unbedingt etwas, daß man unbedingt braucht, wenn man was ehrliches gelernt hat ;o).



So, jetzt aber noch einmal zurück zu ein paar Grundlagen:

Wann muß man bei NAT einen Port freigeben?
Generell immer dann, wenn jemand von außen versucht eine Verbindung zu deinem Rechner aufzubauen, ohne daß diese vorher von innen gestartet wurde.
Hierzu jetzt einen Ausflug wie NAT (Hier speziell SourceNAT (SNAT) noch spezieller masquerading) funktioniert.
Dein Rechner will einen Webserver kontaktieren und sendet im Normalfall (direkte Verbindung ins Netz) ein TCP-Paket von einem hohen Port aus an den Webserver mit Port 80 als Zieladresse. In der Regel nimmt der Server das Paket an und handelt dann mit deinem Rechner eine Verbindung aus. Dabei verweist der Server für die Kommunikation deinen Rechner an einen hohen Port des Servers, um Port 80 für weitere Verbindungsanfragen frei zu machen, da sonst ein Webserver mit vielen Anfragen schnell einen verstopften Port 80 hätte. Dein Client erkennt die ausgehandelte Adresse und die weitere Kommunikation läuft entsprechend über die "Nebenports".
Bei NAT funktioniert das ganze ähnlich, außer daß der Router dazwischen die interne IP des Clients und den von ihm angegebenen Port mit seiner eigenen IP (die des Routers zum Internet) und einem anderen Port ersetzt. Diese Übersetzung merkt er sich in einer Tabelle. Kommen nun Antwortpakete, so erkennt er anhand der Verbindungsdaten durch einen Blick in seine Tabelle, an welchen Rechner im LAN er dieses Paket senden muß. Er erkennt auch die ausgehandelten Ports mit dem Server für den Datenaustausch und berücksichtigt diese intelligent, im Gegensatz zu einem dummen Portfilter, welcher solche einen automatismus nicht kennt. Dies ist das, was man bei Firewalls als "Statefull Packet Inspection" kennt. Die Pakete werden mit Kenntnis des Protokolles nicht nur auf IP-Ebene inspiziert.
Anders sieht dies nun aus bei Protokollen, bei denen ein Server (oder andere Clients) wiederum nach aushandeln einer Verbindung selbsttätig Verbindungen zu deinem Rechner aufbauen will, wie z.B. bei vielen Messagingprotokollen. Wenn hier der Server eine Verbindung öffnen will und diese erreicht den NAT-Router, so schaut er wie üblich in seine NAT-Tabelle, findet aber keine bestehende Übersetzung, zu der das Paket passt. Er weiß also nicht, an welchen Rechner im LAN er dieses Paket schicken soll, da er das Kommunikationsprotokoll nicht kennt und deswegen diesen "Rückkanal" nicht als verwandte (RELATED) Verbindung behandeln kann. Er kennt zwar die Mechanismen von IP, TCP und UDP, nicht jedoch die Protokolleigenheiten von ICQ, eMule, Kazaa und die damit zusammenhängenden Verbindungswirrwarr. Dies muß man ihm mit einem Portmapping abnehmen.
Das ist also der Fall, wann Portmapping oder virtual Server nötig ist: Wenn eine Verbindung von außen zu deinem Rechner aufgebaut werden muß, die nicht zu einer bestehenden Verbindung passt.

Noch eine Anmerkung: Was eventuell ein Problem beim Verständnis ist, sind die verschiedenen Protokollebenen und deren Interaktion. So ist IP ein Protokoll, TCP ein Protokoll, UDP ein Protokoll, ebenso HTTP FTP, etc. Diese arbeiten aber nicht unabhängig, sondern die höheren Protokolle werden über die niederen Protokolle übertragen, sozusagen als Nutzlast. Das IP-Protokoll trägt TCP und UDP, TCP und UDP wiederum tragen z.B. HTTP, welche selbst wiederum auch noch andere Protokolle tragen können. Es ist wie bei diesen russischen Puppen wo eine problemlos mehrere andere enthalten kann und diese immer eine nach der anderen ausgepackt werden.
Ein Gerät auf dem Weg dieser Pakete kennt meist nur die unteren und deren mechanismen (IP, TCP, UDP) nicht jedoch die Eigenarten der darin transportierten Protolle.
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Tyrfing jueki „Portfreischaltung. Noch immer nicht..“
Optionen

Zu der Sache mit den Triggerports:
Nehman wir mal an, eine Anwendung benutzt Port 1234, um sich mit einem Server zu verbinden, nimmt aber danach Auch Daten von den Ports 1200-1250 engegen. Diese Ports hat das Programm dann aber außer 1234 nicht zum Senden benutzt, deshalb wird der Router wenn er z.B. Daten an Port 1230 erhält diese Daten als "nicht angefordert" ansehen und verwerfen.
Eine Möglichkeit wäre jetzt, jeden Port von 1200 bis 1250 generell weiterzuleiten. Viele Leute wollen aber nicht so viele Ports dauerhaft weiterleiten und nebenbei gibt es noch das Problem, dass man bei manchen Routern dann wirklich jeden Port von 1200 bis 1250 einzeln eintragen müsste.

Stattdessen kann man aber eben auch Port 1234 als "Trigger" ("Auslöser") eintragen und die Ports 1200-1250 als "ausgelöste" Ports. Sobald nun ein Computer hinter dem Router Port 1234 benutzt, um Daten zu senden, werden alle Daten für die Ports 1200-1250 automatisch an diesen Computer weitergeleitet.

bei Antwort benachrichtigen
Teletom jueki „Portfreischaltung. Noch immer nicht..“
Optionen

Voll genial, diese Ausführungen!!! von allen Beteiligten.

Deshalb möchte ich hier nicht meinen Senf dazu geben (außer jemand hat eine direkte Frage), aber ein Lob sei auch mal gestattet.

Gruß
Teletom

bei Antwort benachrichtigen
jueki Nachtrag zu: „Portfreischaltung. Noch immer nicht..“
Optionen

..und ganz herzlich Danke! Ich hab es mir mal ausgedruckt und versuche, es zu verarbeiten.
Eine Frage stellt sich mir: Du machst das hier kostenlos. Warum machen es die Buchautoren, die das bezahlt bekommen, nicht ebenso verständlich?
Wenn ich das alles hier erst mal begriffen habe, werde ich weitere Fragen stellen. Diese Drohung gilt!

- Nichts ist schwerer und nichts erfordert mehr Charakter, als sich im offenem Gegensatz zu seiner Zeit zu befinden und laut zu sagen "NEIN!" Kurt Tucholsky
bei Antwort benachrichtigen