# IP ausgeben



## na (6. Okt 2012)

Hi,

ich habe eine Anwendung die einen Server erstellt und eine andere die sich zu einem Server verbindet, wenn man dessen IP-Adresse eingibt. Die Server-Anwendung hat eine Funktion um die IP-Adresse des Servers auszugeben:

```
System.out.println(InetAddress.getLocalHost().getHostAddress());
```
Das funktioniert soweit auch alles.
Allerdings ist die IP-Addresse ja nur lokal gültig. Ist es irgendwie möglich eine IP auszugeben mit der man den Server auch über das Ineternet erreichen kann?

Danke schon mal im vorraus

jojo1234


----------



## Qler (6. Okt 2012)

Mir ist keine Methode bekannt, um mit Java direkt die "global" IP zu bekommen.

Jedoch könntest du einen HTTPRequest an z.B. What Is My IP Address? Lookup IP, Hide IP, Change IP, Trace IP and more... senden, das Ergebnis parsen und so deine aktuelle IP ermitteln.


----------



## na (6. Okt 2012)

schade 

trotz dem danke für den tipp 
werd es mal versuchen


----------



## turtle (6. Okt 2012)

So richtig verstanden habe ich die Frage zwar nicht...

Ich gebe trotzdem meinen Senf dazu ;-)

Üblicherweise bekommst Du eine neue IP von Deinem Provider zugewiesen, wenn Du Dich anmeldest. Dieses erschwert den Betrieb eines Servers, da dieser ja über eine festen Namen erreicht werden sollte.

Dafür gibt es aber Dienste wie zum Beispiel DynDNS wo Du eine Domain einrichten kannst. 

Diesen Wechsel der IP machen einige Router (z.B. FritzBox) bereits automatisch, ist aber auch sonst nicht schwer. Damit wird dem DynDNS mitgeteilt, dass Dein Rechner nun über eine andere IP erreicht werden kann. Benutzer "sehen" nur Deine globalen Domainnamen, der auf Deinen Server verweist.

Die Vergabe einer "globalen" IP/Domain ist normalerweise kostenfrei.


----------



## Bernd Hohmann (6. Okt 2012)

na hat gesagt.:


> ich habe eine Anwendung die einen Server erstellt und eine andere die sich zu einem Server verbindet, wenn man dessen IP-Adresse eingibt. Die Server-Anwendung hat eine Funktion um die IP-Adresse des Servers auszugeben:



Du hast einen Server, der sich mit einem anderen Server verbindet. Von welchem Server wilst Du welche Serveradresse herausfinden? Numeriere die mal durch, vielleicht hilfts mir.

Bernd


----------



## na (6. Okt 2012)

Also:
Das ganze soll ein Schachspiel werden, das 2 personen über internet miteinander spielen können.
Es gibt 2 Anwendungen. Einer startet Anwendung 1, die dann einen Server erstellt und dessen ip ausgibt.
Dann starten beide Anwendung 2 und geben die ip ein, und werden dann mit dem Server verbunden. Nach diesem Spiel wird der Server wieder geschlossen.
-> Es ist egal, dass sich die ip beim erneuten verbinden ändert.

Jetzt klarer?


----------



## Bernd Hohmann (6. Okt 2012)

Ja, jetzt klarer. Der Server "Alice" liegt im Heimnetz, gewöhnlicherweise bei IPv4 hinter einem NAT Gateway. "Bob" will nun auf einen Dienst von Alice zugreifen.

Erstes Problem: man muss dem Router von Alice mitteilen, dass er den Server-Port entsprechend nach innen weiterleitet (Konfigurationssache).

Zweites Problem: Bob braucht die Public IP des Routers. 

Dazu entweder einen Dienst wie dyndns.org nutzen (sofern der Router von Alice das unterstützt). Dann kann Bob zb. auf "na-chess.dyndns.org" zugreifen. Andere Variante ist ein Vermittlungsserver der kurz angesprochen wird - der kann dann die Remote-IP am Socket auslesen. Oder Du versuchst sowas wie Wie ist meine IP-Adresse? auszulesen.

Das erste Problem kann man mit einem Tunnelbohrer aushebeln, aber mit Java etwas problematisch.

Bernd


----------



## na (6. Okt 2012)

Habe ich das richtig verstanden, dass die einfachste Lösung wäre wieistmeineip.de auszulesen?
Reicht das allein schon?
Oder muss ich noch dann noch etwas anderes beachten?


----------



## Bernd Hohmann (6. Okt 2012)

Du musst nur noch an die Portweiterleitung im Router von Alice denken damit die Informationen wegen NAT nach innen weitergeleitet werden.

Bernd


----------



## na (6. Okt 2012)

kann die funktion "port forwarding" heißen?


----------



## Bernd Hohmann (6. Okt 2012)

Ja, das ist das Gesuchte.

Bernd


----------



## na (6. Okt 2012)

ok


----------



## homer65 (6. Okt 2012)

Muß es denn unbedingt eine IP sein?
Viele Router unterstützen Dynamisches DNS.
Damit wäre dein Server unter einem Namen erreichbar, der immer gleich wäre.
Mein PC Zuhause ist zum Beispiel unter ehm.homelinux.org zu erreichen.


----------



## Bernd Hohmann (6. Okt 2012)

homer65 hat gesagt.:


> Muß es denn unbedingt eine IP sein?
> Viele Router unterstützen Dynamisches DNS.



Dein Lösungsansatz hat den Nachteil, dass Alice diesen Dienst irgendwie bedienen muss - für ein kleines Schachspiel eventuell schon etwas zu aufwändig.

Mein Tip seit der Erfindung des fünfeckigen Rades ist immer noch, sich für sowas für kleines Geld einen Server oder VM irgendwo anzumieten und sich dort die entsprechenden Dienste zu installieren. Klar erfordert das eine gewisse Einarbeitung, aber ein Linux-Server ist wesentlich weniger ekliger zu bedienen als Java EE.

Bernd


----------



## JohannisderKaeufer (6. Okt 2012)

Qler hat gesagt.:


> Mir ist keine Methode bekannt, um mit Java direkt die "global" IP zu bekommen.




Das hängt unter anderem auch daran, daß je nach Netzwerkkarte eine andere IP zugewiesen wird (lokale IP).
Im Heimnetz habe ich beispielsweise über WLan eine andere lokale IP als über Lan.

Das nächste ist der Router. Der bekommt eine ip von Aussen und zumindest meiner zeigt diese auch an. Der hat allerdings auch nur einen WAN-Port.

Als nächstes ist auch nicht immer sichergestellt, daß du von deinem Provider eine echte IP bekommst. Da kann es unter Umständen, besonders im Mobile-Bereich sein, daß dieser dir auch nur eine lokale IP zuweist mit der du dann hinter einer weiteren NAT sitzt.


----------



## troll (7. Okt 2012)

@TO
eigentlich ist die frage ziemlich sinnfrei

grund : wenn das ganze über TCP laufen soll muss der "hoster" auch port forwarding im router einstellen ... und eigentlich jeder router im home-bereich zeigt auf der seite "status" oder "info" die aktuelle public-ip an ...

ergo : zumindest beim ersten mal kann man schon direkt im router die notwendige info auslesen ...
für weitere spiele (wenn der port bereits weitergeleitet wurde) reicht es wenn der host einfach selbst mit seinem browser auf ne seite geht die dessen public-ip anzeigt (gibt ja genug) und diese einfach dem mitspieler über chat oder ähnliches mitteilt ...
da muss man sich nicht nicht die platte machen und irgendwas in seiner software entwickeln ...


eine andere möglichkeit wäre noch das bereits gelinkt UDP Hole Punching (ja, es gibt auch TCP Hole Punching, ist aber mit java so direkt ohne zusatz lib NICHT möglich) ... dafür ist zwar ein vermittlungsserver nötig, aber die notwendigen informationen kann man mit jedem free-hoster zusammenbekommen ...

oder man nutzt gleich einen freehoster mit webservice und eine datenbank ... dann braucht man sich über server und port-forwarding gar keine gedanken mehr machen (erfordert natürlich regelmäßiges polling)


----------



## na (7. Okt 2012)

wenn ich das richtig verstanden habe, wäre es am einfachsten, wenn ich einen Server miete und von dort die spiele hoste


----------



## na (7. Okt 2012)

und wenn ja was habt ihr irgenwelche serverempfehlungen für mich?


----------



## troll (8. Okt 2012)

eine empfehlung nicht ... aber einen tipp : KEINEN vServer bei WebTropia ...
eigene kleinere Java-apps kann man zwar laufen lassen ... aber minecraft/bukkit läuft komischer weis schon nicht mehr ...
liegt laut google an der technik die genutzt wird um die vServer zu emulieren


----------



## faetzminator (8. Okt 2012)

Ich verstehe, dass man irgendwann (v)Server empfiehlt, aber warum in diesem Fall? Wenn jemand ein kleines P2P-Spiel aus Freude entwickelt, kann man das gut und gerne mit Port forward "von zu Hause aus" spielen...


----------



## TheDarkRose (8. Okt 2012)

Leute, gleich einen vServer zu empfehlen ist die schlechteste Idee überhaupt! Da braucht es schon tiefergehende adminerfahrungen, sonst ist die nächste spamschleuder im Netz. 

Gesendet von meinem Nexus 7 mit Tapatalk 2


----------



## na (8. Okt 2012)

es ist zwar im Moment nur diese eine Anwendung, vermutlich kommt aber noch mehr dazu

und ich würde das ungerne von zu hause aus hosten


----------



## TheDarkRose (8. Okt 2012)

Dann solltest du auf eine managed Lösung zurückgreifen, denn ein ungesicherter Server kann schlimmstenfalls sogar rechtliche Konsequenzen haben. 

Gesendet von meinem Nexus 7 mit Tapatalk 2


----------



## na (8. Okt 2012)

hast du irgendwelche empfehlungen für einen Anbieter?
in welcher Preisklasse spielt das Ganze?


----------



## Bernd Hohmann (8. Okt 2012)

na hat gesagt.:


> hast du irgendwelche empfehlungen für einen Anbieter?
> in welcher Preisklasse spielt das Ganze?



1&1 kleiner vServer, 9,99 EUR/Monat (oder noch billiger). Da kann man schon ordentlich was mit machen.

Eine Spamschleuder wird das übrigens erst, wenn man entsprechende Dienste unabgesichert anbietet - und dazu gehört schon mehr als einen Schachserver aufzusetzen.

Bernd


----------



## TheDarkRose (8. Okt 2012)

Bernd Hohmann hat gesagt.:


> 1&1 kleiner vServer, 9,99 EUR/Monat (oder noch billiger). Da kann man schon ordentlich was mit machen.
> 
> Eine Spamschleuder wird das übrigens erst, wenn man entsprechende Dienste unabgesichert anbietet - und dazu gehört schon mehr als einen Schachserver aufzusetzen.
> 
> Bernd



Nein, es reicht schon, ssh nicht richtig abzusichern

Gesendet von meinem Nexus 7 mit Tapatalk 2


----------



## Bernd Hohmann (8. Okt 2012)

TheDarkRose hat gesagt.:


> Nein, es reicht schon, ssh nicht richtig abzusichern



Sag ich doch: "Eine Spamschleuder wird das übrigens erst, wenn man entsprechende Dienste unabgesichert anbietet", ein SSH mit schwachem Password ohne ssh-key ist ein ungesicherter Dienst der die Installation einer Spamschleuder ermöglicht.

Oder wolltest Du gerade einem alten Jäger in die Flinte pissen und sagen "es regnet"? 

Bernd


----------



## troll (8. Okt 2012)

also SSH sollte man grundsätzlich
-auf einem anderen port laufen lassen
-nur mit key-auth betreiben und password-auth deaktivieren
-so einrichten das root-login nicht gestattet

@TO
warum willst du irgendwas HOSTEN ? ich gehe mal davon aus das der server eh nur während des spiels läuft .. wenn nicht gespielt wird läuft der server also auch nicht (bzw brauch nicht laufen) ...
was du also mit "von zu hause aus hosten" meinst versteh ich nicht wirklich ... da es ja nur so lange "gehostet" wird wie der server läuft ... und das kann man, wenn es auf die partie beschränkt ist, auch wirklich von "zu hause aus" machen in dem man seinen router entsprechend einstellt ..

du machst dir das deutlich komplizierter als es sein muss ..


(liegt vielleicht daran das du keine erfahrung mit sehr alten klassikern hast die grundsätzlich nur über direkt-verbindungen liefen)


----------



## faetzminator (9. Okt 2012)

Bernd, Fakt ist, dass man ohne SSH ziemlich nichts hat


----------



## tuxedo (9. Okt 2012)

Hinzu kommt noch, dass die wenigsten lediglich SSH + ihren eigenen Dienst hosten. Meist kommt ja noch ein Webserver und noch anderes Zeugs wie FTP dazu. Und bereits beim Thema Webserver hat man schnell ein riesiges Scheunentor offen. Denn die meisten werden den mit PHP nutzen wollen. 

Wer keine Ahnung von Linux hat und noch nie so eine Kiste auch nur ansatzweise administriert hat, sollte IMHO die Finger von einem (v)root lassen und wenn, dann auf einen Managed Server zurückreifen. Die sind dann halt auch etwas teurer. Ansonsten steht man quasi schon mit einem Bein im Knast. Rucki Zucki hat man über eine Lücke in einer PHP-Anwendung Fremd-Code auf dem System über den fleissig Filme aller Art "geshared" werden. 

Aber mal davon abgesehen: Meine Hoster-Empfehlung: Hetzner.de

- Alex


----------



## na (9. Okt 2012)

allen schon mal vielen dank

ich werde mir das ganze noch mal durch den kopf gehen lassen

Es scheint mir, dass das zu einer Art Grundsatzdiskussion geworden ist: managed oder nicht


----------



## TheDarkRose (9. Okt 2012)

na hat gesagt.:


> Es scheint mir, dass das zu einer Art Grundsatzdiskussion geworden ist: managed oder nicht



In dieser Hinsicht ist nicht zu diskutieren. Was du dir aber überlegen solltest, geht es nicht auch von daheim aus? UPnP oder auch mit UDP hole punching... 

Gesendet von meinem Nexus 7 mit Tapatalk 2


----------

