Detect non local ip address



  • ich hab aber ziehmlich sicher eine(öffentliche) wenn ich online bin ^^



  • Wenn Du hinter NAT sitzt, dann hat der "Router" eine oeffentliche Adresse, Dein Rechner aber nicht.



  • ahso, so hast du das gemeint, welche möglichkeit gibt es denn, die ip addresse des routers (öffentlich) herrauszufinden, und dann möchte ich natürlich auch noch die pakete die ich(der router ja dann) empfange, das die an mich vom router(der die ja dann bekommt) gesendet werden ?!?! Das muss doch machbar sein...



  • Es gibt keine bessere Möglichkeit.
    Wenn du Glück hast kann dein Router uPnP und du kannst darüber die wan-ip kriegen und teilweise sogar port-forwarding freischalten. Aber das kann bei weitem nich jeder Router und ist außerdem aus sicherheitsgründen oft per-default deaktiviert.



  • was passiert denn wenn ich einen server der auf einen pc läuft, die öffentlich ip addresse des routers zuweise ?



  • Wenn du manuell die IP Adresse eines Hosts änderst, der hinter einem NAT sitzt, dann bekommt der Host keine Datenpakete mehr. Er wird also quasi disconnected. Hosts hinter einem Router können abgesehen davon nicht beliebige IP-Adressen bekommen, sondern nur speziell reservierte. Guck mal unter NAT bei Wikipedia.



  • Wenn du den Server auf die WAN-IP 'bind'est (sollte gehen, falls du nich eh ANY nimmst...) musst du noch den Router dazu bewegen die Pakete für den Server an den Rechner weiterzuleiten.

    Evtl. interessiert dieser Thread:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-175379.html



  • jo, geeky genau das hab ich gemeint, habs jetz nochnich probiert, aber ich glaub ich werd da n bissi probs haben den router beizubringen mir die pakete zuforwarden...



  • Wenn auch andere User deine Applikation nutzen sollen ist es ziemlich krass ein Portforwarding zu verlangen. 90% aller User (ich rede jetzt nicht von Usern, die an diesem Forum teilnehmen) wissen gar nicht was das ist. 5% wissen was das ist haben aber kein Bock die Referenz ihres Routers zu lesen, um zu raffen, wie sie das einstellen.

    Portforwarding ist außerdem ein potentielles Sicherheitsrisiko. Die allermeisten Netzwerkadmins reagieren extrem allergisch darauf, wenn User Portforwarding machen wollen.

    Dann kannst du fast auch gleich verlangen, dass jeder User ne DMZ extra für dein Programm einrichtet.

    Die bessere Lösung wäre, wenn deine Applikation eine andere Anwendung (die kannst du auch selber schreiben und auf irgendeinem Server mit ner Public-IP betreiben) ne "Gib mir deine IP"-Message schickt und dein Server antwortet mit ner "Hier-ist-deine-IP-Adresse".



  • koennte vielleicht mit nem icmp paket und einem TTL von 1 auch funktionieren.
    wenn ich bei mir tracert starte wird als erstes auch immer meine oeffentliche IP angezeigt.

    Meep Meep



  • Müsste die Antwort eines ICMP-Paketes mit TTL = 1 nicht die Absenderadresse der LAN-Schnittstelle des Routers haben(also eine 192.168.x.x-Adresse)? Die WAN-Schnittstelle wird bei TTL=1 niemals das Paket zu sehen bekommen.

    Wenn, dann müsste es meiner Meinung nach TTL = 2 sein. Was aber wieder zu dem NAT Problem führt, nämlich, dass die NAT die Zieladresse ersetzt, bevor das Antwort-Paket an den entsprechenden Host weitergeleitet wird.

    Habe mich eine Weile mit PeerToPeer Systemen beschäftigt. Skype hat das gleiche Problem, nämlich das Hosts hinter einem NAT zunächst mal unsichtbar sind. Skype löst das durch einen STUN-Vermittler. Das ist ein Rechner, der eine öffentliche IP-Adresse hat.



  • dann wundert es mich aber, das ich ,wenn ich tracert aufrufe,

    tracert -h 1 web.de
    

    folgendes angezeigt bekomme:

    Routenverfolgung zu web.de [217.72.195.42]  über maximal 1 Abschnitte:
    
      1     3 ms     1 ms     1 ms  pxxxxxD76.dip.t-dialin.net [84.149.77.x] 
    
    Ablaufverfolgung beendet.
    

    die 84.149.77.x ist meine inet-adresse

    benutze auch einen router

    Meep Meep



  • Mein Router macht das nicht 😉
    Da kriege ich bei tracert nie meine WAN-IP zu sehen.


Anmelden zum Antworten