Port Forwarding



  • Hallo!

    Kann ich in C++ irgendwie ein Port Forwarding von einem bestimmten Port machen?

    Vielen Dank
    Krypto



  • Hallo

    Hat nichts mit C++ oder dem Builder direkt zu tun. Dazu brauchst du einen Router bzw. eine Router-Software.
    Wenn du eine solche Router-Software selber schreiben willst must du dich mit TCP-Sockets auseinandersetzen, die zum Beispiel über die WinAPI benutzt werden können. Es gibt aber auch VCL-Wrapper für diese Winsocks, zum Beispiel im Indy-Package.

    Wenn du also präzise erklärt was du warum vorhast wirst du auch präzisere Antworten bekommen. Nur ein vorneweg : Das ist nichts für Anfänger.

    bis bald
    akari



  • Hallo!

    Vielen Dank für deine schnelle Antwort. Du hast Recht, es macht mehr Sinn, wenn ich erzäle was ich vorhabe.

    Ich will ein Programm programmieren, dass Daten an ein Programm in meinem Server schickt. Diese Daten werden vom Server ausgewertet und dann wieder an den Benutzer geschickt.
    Am Einfachsten erscheint mir das ganze mit der FastNet Komponente NMMsg und NMMSGServ. Jetzt habe ich das Problem, dass bei dem Client ja auch die NMMSGServ komponete vorhanden ist, damit das Programm die Daten empfangen kann. Jedoch ist der Port (bei NMMSg & NMMSGServ standardmäßig 6711) natürlich nicht frei. Und dem Benutzer zu sagen: "Mach ma in deinen Ruterkonfigurationen den Port 6711 frei!" ist ja auch nicht das wahre 😉 .

    Grüße
    Krypto



  • Hallo

    Und dem Benutzer zu sagen: "Mach ma in deinen Ruterkonfigurationen den Port 6711 frei!" ist ja auch nicht das wahre

    Wenn es um einen Hardware-Router geht der ein lokales Netz mit dem Internet verbindet wirst du nichts anderes machen können. Den Router sind unabhängige Geräte und haben keine standardisierte Schnittstelle, sondern meistens nur eine Weboberfläche. Da muß der User schon selber konfigurieren. Es gibt aber im Netz einige Übersichten wo nach Routertyp geordnet erklärt wird wie man Ports freischaltet.

    bis bald
    akari



  • Hallo!

    Wie stellen dann andere Programme Verbindung zum Internet her?

    Grüße
    Krypto



  • Hallo

    Deine Frage ist mal wieder ungenau. Was meinst du? Clientprogramme oder Serverprogramme? Direkter Zugang oder zwischengeschalteter Router für LAN?

    Fakt ist das Server in einem lokalen Netzwerk auf dem Router ein manuelles Portforwarding brauchen, um vom WAN aus erreichbar zu sein. Dafür gibt es keine Automatik.

    bis bald
    akari



  • Hallo!

    Ich meine Programme wie MMORPGs oder Messenger (etc. pp.). Ich mein die werden bestimmt nicht FTP verwenden 😃 .
    Solche Programme müssen ja auch über irgendeinen Port verbindung mit dem Server aufnehmen.

    Grüße
    Krypto



  • Hallo

    Richtig. Ist auch kein Problem weil der Router automatisch alle Verbindungen von LAN nach WAN durchläßt. Das heißt der Client im LAN verbindet sich aktiv mit einem ihm bekanntem Server im WAN. Dafür brauchst du kein Portforwarding.
    Du willst aber (vermutlich) einen lokalen Server im WAN erreichbar machen. Also das der passive Server im LAN über den Router für Clients aus dem WAN heraus erreichbar ist. Dafür brauchst du Portforwarding, da der Router im WAN ja nur eine IP hat und nun wissen muß wohin er Anfragen auf einen bestimmten Port hin intern weiterleiten muß. Von Sicherheitsaspekten ganz zu schweigen.

    bis bald
    akari



  • Hallo

    Siehe auch hier.

    bis bald
    akari



  • Hallo zusammen,

    Zusätzlich zum Portforwarding wäre natürlich auch noch eine Art "Proxy" denkbar. z.B. ein Server im Internet, bei dem dann die Daten abgerufen, bzw hingeschoben werden. Damit wäre dann das Problem des "Portforwarding" umgangen. (OK, gebe zu nicht elegant. Aber die allseits "beliebten" Trojaner machen das auch teilweise so...)

    Wenn ich es mir recht überlege, funktionieren WebServer genau auf diese Weise...

    Man könnte sich natürlich auch die Mühe machen, und für diverse Router das Konfigurieren des Portforwardings per SNMP (heißt das so?) oder per "Fernsteuern" der Web-Oberfläche realisieren. Aber das wird wohl für einmal "Portaufmachen" zuviel des Guten sein...

    Zu den Messengern/MMORPG. Diese brauchen i.d.R. ein Portforwarding. Nur die wenigsten Programme können auch in einen "Polling"-Modus gehen, beidem dann wie oben beschrieben einfach in Regelmäßigen abständen nach neuen Daten "gefragt" wird.

    mfg

    Frank



  • Hi, habe mich derweilen mit Sockes noch nicht beschäftigt, jedoch, wäre es doch denkbar ein Tunnel zu verwenden!

    -> Es gibt da doch einige "Telnet" Varianten die dies ermöglichen!
    (http://www.jfranken.de/homepages/johannes/vortraege/ssh2.de.html)

    -> Oder aber OpenVPN - Netze etc.
    (http://de.wikipedia.org/wiki/OpenVPN)
    (http://openvpn.net/)

    Die alles über einen lokal, freigegebene Ports schieben!

    Und da die Virentechnologie erwähnt wurde, in dieser wird doch derweilen neuerdings der Port 80, unser allseits bekannter Port zum surfen, ausgenutzt!
    Um eben dies zu ermöglichen!

    -> Rein theoretisch wäre auch ein VPN darüber möglich!

    🙄 Naja nur ne Idee am Rande 😃
    (Denn zum einen muss für Telnet Verbindungen ja nun auch nen Server laufen und ein Port offen sein und zum anderen wird für VPN's zumeist ein anderer Port gewählt, siehe Hamachi (www.hamachi.cc)

    Damit könntest du jedoch den "Router" umgehen! 😉 Und auf die freien Ports zurückgreifen!

    Aber wie besagt, nur eine Idee dazu am Rande!



  • Trotzallem brauchst Du für die Kommunikation I-net > PC einen offenen Port auf dem Router, der auf den PC weitergeleitet wird (NAT). Nur so kannst Du Daten direkt an den PC, bzw einen Serverprozess auf dem PC, senden. 💡

    Alles andere kann nur auf Techniken basieren, die ein "Polling" einsetzen.

    Kein halbwegs gut konfigurierter Router öffnet "automatisch" Ports zwischen PC und I-Net. 😮

    Andere Meinungen hierzu? 😃

    mfg

    Frank



  • tach,

    Hab mich mal mit sockets client server befast, ich weis jetzt nicht ob du die gleichen komponenten benutzt.

    aber bei mir war das so das ich den zu benutzenden port angeben musste für empfang und senden.
    weil du ja auch in beide richtung arbeiten willst, wirst du auch auf beiden seiten ein client und server komponente benutzen müssen.

    um den entfernten pc zu erreichen gibt es verschiedene möglichkeiten...

    einmal das portforwarding, bei mitlerweile fast jedem router in der konfigurations beschreibung nachzulesen wie!
    das sieht dann so aus wie -> kommt ein packet mit dem port 80 an, leite es weiter an die ip x.x.x.x, die des rechners im lokalen netz.

    dan gibt es noch das portmapping, welche modelle dies mitmachen weis ich nicht genau, schau mal ins handbuch deines routers 😉
    das sieht dann so aus wie -> kommt ein packet mit dem port 80 an, leite es weiter an die ip x.x.x.x mit dem mapp port zb 3000.
    damit kannst du zb einem port scan etwas entgegen setzen den der scaner zeigt nur den freien port auf dem router an, also 80, aber wenn der jeniege jetzt eine http(port 80) anfrage macht wird er nicht weiter kommen den die eigentliche applikation läuft ja auf port 3000.

    aber am sichersten würde ich auch sagen daß es über eine vpn verbindung laufen wird, diese kannst du dann mit komunikation vollstopfen und port soviel du willst, den es stell ja für dich ein privates netz dar. 👍

    wünsche noch was


Anmelden zum Antworten