Entwickler-Ecke

Internet / Netzwerk - Locale IP Addresse einem Webserver gegenüber


Mr_Sven - Do 15.10.09 11:11
Titel: Locale IP Addresse einem Webserver gegenüber
Hi,

ich habe ein kleine Problem.

Ich habe einen SOAP Client und muss dem SOAP Server meine Lokale IP Adresse übergeben wo er mich erreichen kann.
Leider kricht das der SOAP Server nicht selber hin, deswegen muss ich ihm die Adresse geben.

Nun meine Frage.
Wie kann ich die Lokale IP Adresse herausfinden mit der ich mich dem Server gegenüber melde.

Mit Winsock GetIpAdress kram habe ich schon rum gespielt, habe aber keine effektive Lösung gefunden,
da ich bei mir z.B. VMWare usw. drauf habe, habe ich natürlich 3 oder mehr IP Adressen, aber welche davon ist nun die richtige.

Gruß


BenBE - Do 15.10.09 11:18

1. Für einen im Internet befindlichen SOAP-Server die NAT-IP vom Router. Siehe ip.wieist.de o.ä.

2. Bei Multihomed-Systemen ist egal, auf welcher Schnittstelle man mit einer gewissen IP angesprochen wird; die Gegenstelle muss nur für die gegebene Adresse die korrekte Route zu deinem Client finden.

3. Wozu muss Seife wissen, von wem sie verwendet wird?


Mr_Sven - Do 15.10.09 11:26

Also,
Antwort 1: blöd, weil Firmen Intern
Antwort 2: auch blöd, weil wenn ich dem SOAP server sage du erreicht mich unter 192.xxx, und in der Firma aber nen 10.er netz ist, dann weiß er nix mit an zu fangen.
Antwort 3: Weil die Seife mir Notifications Schicken will.


BenBE - Do 15.10.09 11:32

user profile iconMr_Sven hat folgendes geschrieben Zum zitierten Posting springen:
Also,
Antwort 1: blöd, weil Firmen Intern

So einen Dienst halt einfach irgendwo im Firmennetz intern, für alle erreichbar platzieren.

user profile iconMr_Sven hat folgendes geschrieben Zum zitierten Posting springen:
Antwort 2: auch blöd, weil wenn ich dem SOAP server sage du erreicht mich unter 192.xxx, und in der Firma aber nen 10.er netz ist, dann weiß er nix mit an zu fangen.

NAT ist eine Absonderlichkeit, die hoffentlich mit Einführung von IPv6 endlich abgeschafft wird ...

user profile iconMr_Sven hat folgendes geschrieben Zum zitierten Posting springen:
Antwort 3: Weil die Seife mir Notifications Schicken will.

Intelligente Seife. ^^

hmmm, eine Verbindung vom Client aus aufbauen, auf dem die Notification dann reinkommt?


Mr_Sven - Do 15.10.09 11:37

Das mit dem Dienst is auch blöd weil das Tool an andere Firmen weiter gegeben(Verkauft wird) und ich nicht jedes mal noch so einen Dienst irgentwo installieren will.

Mit ner Client Verbindung und Notifications ist bei Seife nicht so einfach, da ich bei Notifications den Server (SOAP Server) spielen muss und der eigentliche Server dann der Client ist.

Ich hatte an Irgentwas im sinne von "WinInet Verbindung zum Server aufbauen und die Verbindungsdaten abfragen" gedacht, weil das Wininet dann schon die richtigen Routen und Interfaces verwendet.


BenBE - Do 15.10.09 11:42

Jap, diese mehr oder weniger statische Lösung mit offen gehaltener TCP-Verbindung hätte ich auch vorgeschlagen (war mehr oder weniger auch so im vorigen Post bereits gemeint). Alternativ wäre Polling eine Option.

BTW: Was hindert dich daran, diese IP-Abfrage als zusätzliche Funktion in die vorhandene Seife aufzunehmen?


Mr_Sven - Do 15.10.09 11:48

Naja, die Server Seife ist ne Third Party Seife.


Martok - Do 15.10.09 12:35

user profile iconMr_Sven hat folgendes geschrieben Zum zitierten Posting springen:
Naja, die Server Seife ist ne Third Party Seife.

Das ändert die Sachlage doch komplett. Der Designer hat da also gepfuscht und du darfst das ausbügeln... Nett.

3 Varianten fallen mir ein:
* TCP-Pakete der Antwort-Envelopes mitschneiden und gucken wohin die adressiert sind; geht nur ohne NAT und mit RAW-Sockets, die man aber so ab XP SP3(?)nicht mehr hat oder WinPCap und viel Aufwand.
* Dienst auf dem Server installieren, der genau sagen kann was Sache ist.
* Lokale IPs enumerieren und anhand von dazugehörigen Gateways und Netzmasken schätzen welche wohl verwendet wird um den Server zu erreichen. Geht auch wieder nur ohne NAT.

NAT dürfte in Firmennetzen nicht so das Problem sein. Bleibt also nur die letzte Variante. Oder halt richtig machen und irgendwas auf dem Server laufen lassen.

Trotzdem: Notifications sind in SOAP nicht definiert... also außer Polling gibt es nichts was Standardkonform wäre.


user profile iconMr_Sven hat folgendes geschrieben Zum zitierten Posting springen:
Das mit dem Dienst is auch blöd weil das Tool an andere Firmen weiter gegeben(Verkauft wird) und ich nicht jedes mal noch so einen Dienst irgentwo installieren will.

Lass es die selber machen oder dich bezahlen, fertig.
Wer etwas mit kaputtem Protokoll kauft muss damit leben.
Ich weiß, oft hat man da keine Wahl, aber ist eben so.

cu
Martok


Mr_Sven - Do 15.10.09 13:11

Jo, deswegen wird der Server dann zum client und pollt die Applikation.

hab gerade was getestet und damit scheint es zu funktionieren.

Delphi-Quelltext
1:
2:
3:
4:
5:
 TcpClient1.RemoteHost :='server.com';
 TcpClient1.RemotePort :='80';
 TcpClient1.Connect;
 ShowMessage(TcpClient1.LocalHostAddr);
 TcpClient1.Disconnect;


BenBE - Do 15.10.09 13:14

Hinter einer NAT halt nicht ...

Tipp: Konfiguration, wo der Client vom Server aus erreichbar ist, im Client als Setting; ggf. nur ne kleine Autodetection, aber so, dass der User das überschreiben kann.


Martok - Do 15.10.09 16:13

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Tipp: Konfiguration, wo der Client vom Server aus erreichbar ist, im Client als Setting; ggf. nur ne kleine Autodetection, aber so, dass der User das überschreiben kann.

95% der Mitarbeiter kennen die IP ihres Rechners nicht. Erst recht nicht, wenn die per DHCP vergeben wird.


BenBE - Do 15.10.09 20:28

Daher ja auch der Hinweis mit ner gewissen Auto-Detection ...

Außerdem werden solche Sachen eh meist fernadministriert bzw. über ne Policy verteilt. d.h. das kann ein Admin auch aus der Ferne durchaus automatisiert "konfigurieren" ...