Lokale IP Adresse bestimmen

bewerber2

Mitglied
Hi,

ich habe folgendes Problem:
In einem Server steckt eine Netzwerkkarte und dieser Netzwerkkarte sind mehrere IP-Adressen zugewiesen. Ist es irgendwie möglich, einem JAVA-Programm zu sagen, welche der IP-Adressen (die der Netzwerkkarte zugewiesen sind) es als lokale IP-Adresse nutzen soll?

Das Hauptproblem liegt darin, dass ich in meinem Programm für die Netzwerkkommunikation eine fertige Library benutze und diese nicht umprogrammieren kann - d.h. ich muss diese Einstellung der lokalen IP-Adresse in einer übergeordneten Form vornehmen, bevor die Library initialisiert wird. d.h. entweder als irgendein System-Property oder beim Startup von JAVA VM.

Oder nochmal anders:
Wenn ich das Programm ->3 laufen lasse, dann möchte ich als Ausgabe nicht die unter ->1 angegebene IP-Adresse bekommen, sondern eine der IP-Adressen (die ich selbst aussuche) aus dem IP-Pool ->2:

p.gif


Geht das?

Viele Grüße aus München!
 
Zuletzt bearbeitet:

Empire Phoenix

Top Contributor
ERm wie jetzt, du willst nicht die echte Ip benutzen sonder eine andere die theoretisch auch eine der echten Ip adressen wäre?
Klingt konfuz, wo liegt denn das eigentliche Poblem damit wenn die library die angegebene ip benutzt? Evtl haste ud dich da in einem der Konzepte/ideen verrant.
 

EdelStoff

Mitglied
bin mir nicht sicher ob folgendes funktioniert, aber probieren könntest du einmal

Java:
InetAddress[] a = InetAddress.getAllByName("*.*.187.242"); // Adresse die bei 1. Angegeben ist
 

bewerber2

Mitglied
Das eigentliche Problem liegt darin, dass ich einen VPN-Tunnel zu einer Partnerfirma benötige. Der VPN-Tunnel ist so konfiguriert, dass er auf meiner Machine die *.*.*.250 nutzt. Die Partnerfirma erwartet also einen Call von der *.*.*.250.

Wenn ich jedoch mein JAVA-Programm ausführe, gibt es sich als *.*.*.242 aus. Deshalb kommt keine Verbindung zustande. Ich kann aber aus bestimmten Gründen unter ->1 nicht die *.*.*.250 eintragen.

Vielleicht fehlen mir aber auch grundlegende Kenntnisse über die Netzwerkprogrammierung in so einem Fall, wo mehrere Netzwerkadapter vorhanden sind oder ich habe einen Denkfehler bei der Sache!?

Wäre sehr dankbar für Aufklärung..
 

Empire Phoenix

Top Contributor
Benutz doch bei 3 die gewünschte adresse, sonst nimmt der nur eine beliebige gültige.
Das geht natürlich nur wenn einer der an dem Rechner vorhandenen Schnittstellen in 1 den wert hat.

Das Problem ist demnach wie binde ich ein Socket auf eine spezifische adresse:
Socket("hier ip als string",hier port).

Wenn deine library jedoch den socket selber erstellt, dann kannst du nicht bestimmen wo der ist soweit ich weiß, ohne die betreffende library zu modifizieren.
 

bewerber2

Mitglied
Ja, du hast es richtig verstanden, genau das ist das problem! Ich müsste in die Library eingreifen und das wäre zu aufwändig. Ich habe jedoch irgendwo gelesen, dass man einen bestimmten Netzwerkadapter über die Registry auswählen kann und dieser wird beim Startup der JAVA VM als Ausgangswert benutzt.

Weiss jemand, ob und wie man das machen kann, resp. wo der Schlüssel in der Registry zu finden ist mit dem man einen bestimmten Adapter binden kann?
 

Empire Phoenix

Top Contributor
Hm davon kenne ich nichts, aber ich habe mal ein ähnliches problem mithilfe eines Virtuellen Pc's gelöst, der nur den VPN adapter kannte als netzwerkkarte. (Ging darum skype durch nen Vpn zu zwingen, obwohl der pc direkten internet anschluss hat)
 

FArt

Top Contributor
Ein Serversocket kann auf eine beliebige Adresse gebunden werden. Die Factory, die die Sockets erstellt, kann global gesetzt werden, indem man die Defaultimplementierung ersetzt, z.B. durch eine Implementierung, die sofort auch ein Binding übernimmt: ServerSocket (Java 2 Platform SE v1.4.2) und ServerSocket (Java 2 Platform SE v1.4.2). Die richtige IP könntest du beim Programmstart als Systemproperty setzten.

Ohne deine genauen Anforderungen verstanden zu haben bzw. deine lokale Konifguration verstanden zu haben, glaube ich, dass du eigentlich als Applikationsentwickler von dieser Infrastruktur keine Ahnung haben DARFST und z.B. einen VPN NICHT extra berücksichtigen musst.
 
G

Gast2

Gast
Wenn ich jedoch mein JAVA-Programm ausführe, gibt es sich als *.*.*.242 aus. Deshalb kommt keine Verbindung zustande. Ich kann aber aus bestimmten Gründen unter ->1 nicht die *.*.*.250 eintragen
das klingt als wenn das VPN und das Netzwerk im selben Subnetz liegen ... wer hat den Blödsinn verzapft?

ansonsten FArt hat recht ... für Dich als Andwendungsentwickler ist es uninteressant wie das Netzwerk aufgebaut ist ... das einzige was Dich interessiert ist die Server-IP und der Server-Port ... der rest macht das Netzwerk automatisch (sofern richtig konfiguriert)
 

HoaX

Top Contributor
Per API hast du da eh keine Chance was zu ändern, die Auswahl passiert über deine Routing-Tabelle, kannst ja da was konfigurieren, ka wie das bei Windoze geht.
 

bewerber2

Mitglied
Scheinbar fehlen mir grundlegende Kenntnisse über Netzwerkprogrammierung.

Ich habe es mir so vorgestellt:
- wenn ein VPN-Tunnel aufgebaut wird, dann werden zwei feste IP-Adressen miteinander verbunden
- mein Gegenüber erwartet also einen Call von der *.*.*.250 (weil der Tunnel mal so konfiguriert wurde), sonst lehnt er die Verbindung ab
- wenn unter ->1 die *.*.*.242 eingetragen ist, dann trete ich als *.*.*.242 auf und der andere Rechner lehnt die Verbindung ab, weil ich nicht die *.*.*.250 bin
- ich dachte, das was unter ->1 eingetragen ist, ist immer meine Default-IP mit der ich mich beim anderen Rechner "vorstelle" und wenn ich etwas Anderes aus dem IP-Pool ->2 haben will, so muss ich es explizit angeben

Wo ist der Fehler, resp. welche der Annahmen ist falsch?
 

FArt

Top Contributor
Um von einem Client einen Server zu erreichen, benutzt man die IP Adresse des Servers. Wenn dieser Server mit dieser IP nur über den VPN zu erreichen ist, und dieser richtig eingerichtet wurde, wird der Call auch nur über diesen virtuellen Netzwerkadapter mit der passenden IP Adresse (Client) gehen.
Wenn der Server auch über einen andern Netzwerkadapter zu erreichen ist (und dieser halt zuerst versucht wird), dann wird der Client mit dieser IP Adresse (also des "falschen" Netzwerkadapters) beim Server aufschlagen.
Das ist aber alles Netzwerkkonfiguration des Clients.
 
G

Gast2

Gast
Um von einem Client einen Server zu erreichen, benutzt man die IP Adresse des Servers. Wenn dieser Server mit dieser IP nur über den VPN zu erreichen ist, und dieser richtig eingerichtet wurde, wird der Call auch nur über diesen virtuellen Netzwerkadapter mit der passenden IP Adresse (Client) gehen.

ACK ... der Client muss also *.*.X.* haben und der VPN-Server *.*.Y.* ... sitzt der VPN-Server selber noch in *.*.X.* drinnen, dann stimmt da was nicht ... und Du unterscheidest nur in der letzten Stelle ... damit wirst Du immer über die unverschlüsselte Verbindung kommen

Das ist aber alles Netzwerkkonfiguration des Clients.
nein ... des Netzadmins ... mit dem Client kannst Du am Routing des Netzwerks nichts ändern
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M lokale Benutzer auslesen Netzwerkprogrammierung 28
B Webstart + externe/lokale Plugins/JARS einbinden Netzwerkprogrammierung 10
A IRC-Server für das lokale Netzwerk? Netzwerkprogrammierung 12
E Custom E Mail Adresse mithilfe Serversocket oder ähnliches Netzwerkprogrammierung 21
P IP-Adresse von Drahtlos-LAN-Adapter WLAN Netzwerkprogrammierung 1
M Fritzbox Mac Adresse Hinzufügen Netzwerkprogrammierung 2
Java_RY Die IP-Adresse des Eigenen Hostes ausgeben Netzwerkprogrammierung 4
O HTTP IP Adresse verschleiern Netzwerkprogrammierung 19
O HTTP IP Adresse verschleiern Netzwerkprogrammierung 5
O Ip Adresse verschleiern Netzwerkprogrammierung 3
M Socket IP-Adresse Netzwerkprogrammierung 8
N Multicast Adresse herausfinden des PCs Netzwerkprogrammierung 11
G ServerSocket.accept() überschreibt IP-Adresse Netzwerkprogrammierung 4
H Eine Mac-Adresse übers Internet ermitteln Netzwerkprogrammierung 2
P IP-Adresse per Hand einstellen Netzwerkprogrammierung 11
Kr0e Netty3 + Localhost Adresse, Durchsatzdrosselung ? Netzwerkprogrammierung 6
C Mac-Adresse des Systems Netzwerkprogrammierung 2
B Globale IP-Adresse auslesen - Java Applet Netzwerkprogrammierung 2
S Port auf einer bestimmten IP-Adresse auslesen? Netzwerkprogrammierung 6
G IP Adresse vergeben Netzwerkprogrammierung 18
T Mac Adresse über Socket Verbindung abfragen? Netzwerkprogrammierung 9
M Bestimmung der Netzwerkklasse mittels IP-Adresse Netzwerkprogrammierung 3
T IP Adresse mit Hilfe der MAC Adresse ermitteln Netzwerkprogrammierung 3
W Bestimmt IP Adresse verwenden wenn man mehrere hat Netzwerkprogrammierung 5
C MAC Adresse Netzwerkprogrammierung 5
G Eigene IP-Adresse hinter Router ermitteln Netzwerkprogrammierung 1
zilti IP-Adresse Netzwerkprogrammierung 10
J Prüfen, ob IP-Adresse gültig ist Netzwerkprogrammierung 5
J Socket - Remote/Client Mac-Adresse? Netzwerkprogrammierung 3
C IP adresse anhand einer domain adresse auslesen / ermitteln Netzwerkprogrammierung 3
F IP-Adresse auslesen Netzwerkprogrammierung 7
M Eigene IP-Adresse Netzwerkprogrammierung 37
O IP adresse ermitteln Netzwerkprogrammierung 11
K IP Adresse erhöhen Netzwerkprogrammierung 4
S wie finde ich die ip adresse vom client heraus? Netzwerkprogrammierung 16
Z Physikalische Adresse der Netzwerkkarte Netzwerkprogrammierung 4
I IP Adresse des Clients einer Socket Verbindung Netzwerkprogrammierung 2
bernd IP Adresse Netzwerkprogrammierung 13
D DynDNS-Adresse ändert sich während Server pollt Netzwerkprogrammierung 2
E Socket Outputstream - chunks groeße bestimmen. Netzwerkprogrammierung 3
S Bestimmen der aktiven Netzwerkverbindung Netzwerkprogrammierung 4
Dit_ UDP Port bestimmen | Windows, MAC, Linux... Netzwerkprogrammierung 2
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
O Interface bestimmen Netzwerkprogrammierung 7
L Dateninhalt im IP/TCP Packet genau bestimmen Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2
C Prozess-ID (PID) bestimmen Netzwerkprogrammierung 12

Ähnliche Java Themen


Oben