Tech- & FAQ-Forum

Zurück   CC-Community Board > CC-CB Hauptforen > Tech & FAQ Forum

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.09.2011, 08:45   #1
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard IP eines 'umherstehenden' DHCP-Server ermitteln?

Hallo zusammen,

ich müsste programmatisch irgendwie feststellen können, ob ein DHCP-Server umher steht. Dessen IP benötige ich dann.
Sollten es mehrere Server sein, so nehme ich gerne alle IPs.

Warum?
Ich möchte mir dann die MAC-Adresse der IP holen und anhand einer Liste vergleichen, ob ich in einem 'bekannten' Netz bin.
Daraufhin stelle ich dann automatisch meine Konfiguration um.
Das klappt jetzt schon gut, nur ist es doof, wenn ich z.B. von einem Kunden komme, wo ich eine statische IP zu verwenden hatte.
Wenn ich dann vor der Abreise vergesse wieder auf Dynamisch umzustellen, finde ich hier gar keinen DHCP-Server um festzustelle, wo ich jetzt bin.

Ich müsste also einen DHCP-Request per Broadcast raussenden und schauen, wer antwortet.

Umgebung:
Windows 7 (x64, aber das sollte keine Rolle spielen).
Bisherige Lösung ist mit VB6 erstellt. Irgendwie müsste ich das da einbinden können.

Wäre toll, wenn mir jemand helfen könnte.

Gruß,
Atze
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 09:13   #2
bavariantommy
Universaldilletant
 
Benutzerbild von bavariantommy
 
Registriert seit: 10.05.2001
Beiträge: 3.495
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Don't call us, we call you. Der DHCP-Server gibt sich eigentlich selbst zu erkennen und schickt in der Regel auch gleich die Konfiguration (DNS, Routing etc.) mit.

Alternativ schmeisst du beispielsweise Wireshark an und schaust nach den DHCP-Broadcasts, die eigentlich permanent durchs Netz fliegen.
bavariantommy ist offline   Mit Zitat antworten
Alt 17.09.2011, 09:23   #3
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Wenn ich ne feste IP habe, die gar nicht zum 'Netz' passt, dann kriege ich doch nie was mit. Oder sehe ich das falsch?
Soweit ich gelesen habe, wird dort vom DHCP-Client mit einem Broadcast gearbeitet.

Und Wireshark is nich, da ich das ja programmatisch erfassen will...
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 09:40   #4
DetLife
Patriarch
 
Registriert seit: 02.05.2001
Beiträge: 6.153
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Du kannst einen guten DHCP-Clienten (zum Beispiel diesen hier) umfassend über seine Konfigurationsdatei konfigurieren und auf unterschiedliche DHCP-Server unterschiedlich reagieren lassen.
DetLife ist offline   Mit Zitat antworten
Alt 17.09.2011, 10:42   #5
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Hm, sieht nicht aus, als wäre er für Windows und wenn, dann wohl nicht programmatisch nutzbar.
Verfehlt glaube ich etwas mein Ziel.
Aber danke!
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 11:01   #6
dr_tommi
alter Oldie
 
Benutzerbild von dr_tommi
 
Registriert seit: 26.04.2001
Ort: Berlin
Beiträge: 3.250
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Wie wäre es z. B. so:

Zitat:
How To Call GetNetworkParams/GetAdaptersInfo From Visual Basic
http://support.microsoft.com/default...b;en-us;223025

Weitere Infos und Links
http://www.vbmonster.com/Uwe/Forum.a...Ptions-from-VB
dr_tommi ist gerade online   Mit Zitat antworten
Alt 17.09.2011, 17:36   #7
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Hm, soweit ich sehe, brauche ich für diese Ansätze auch eine bestehende Verbindung zum DHCP-Server.

Ich beschreibe lieber nochmals das Szenario:
- Mein Notebook ist per LAN an einem Netz angeschlossen.
- Die gegenwärtige IP-Konfiguration dieses Netzwerkadapters ist jedoch fix, also KEIN DHCP, und stammt noch vom letzten Kundenbesuch.
- Ich habe also keine IP-Verbindung.
- Nun möchte ich per API oder ähnlich, ohne die Einstellung meiner Netzwerkkarte zu ändern, gerne die IP-Adresse eines (z.B. meines) DHCP-Servers herausfinden.

Das geht soweit ich weiß nur per Broadcast. Das muss theoretisch ziemlich low-level sein, da mein NIC (Netzwerkkarte) ja noch keine logische Verbindung zum Netz hat.
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 17:54   #8
DetLife
Patriarch
 
Registriert seit: 02.05.2001
Beiträge: 6.153
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Dazu sendest Du ein DHCPDISCOVER per UDP an 255.255.255.255:67 und erhältst ein DHCPOFFER an 255.255.255.255:68 zurück. Näheres siehe RFC 2131 und im Stevens.
DetLife ist offline   Mit Zitat antworten
Alt 17.09.2011, 18:01   #9
adhome
Oldie
 
Benutzerbild von adhome
 
Registriert seit: 10.06.2001
Beiträge: 4.464
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Such einfach nach dhcp.c Code per Google. Erste Treffer zeigt dir auch gleich wies geht:
Zitat:
static err_t dhcp_discover(struct dhcp_state *state)
{
err_t result;
int msecs;

ip_addr_set(&state->offered_ip_addr, IP_ADDR_ANY);

// Create and initialize the DHCP message header
result = dhcp_create_request(state);
if (result == 0)
{
dhcp_option(state, DHCP_OPTION_DHCP_MESSAGE_TYPE, 1);
dhcp_option_byte(state, DHCP_DISCOVER);

dhcp_option(state, DHCP_OPTION_DHCP_MAX_MESSAGE_SIZE, 2);
dhcp_option_short(state, 576);

#if 0
dhcp_option(state, DHCP_OPTION_DHCP_PARAMETER_REQUEST_LIST, 6);
dhcp_option_byte(state, DHCP_OPTION_SUBNET_MASK);
dhcp_option_byte(state, DHCP_OPTION_ROUTERS);
dhcp_option_byte(state, DHCP_OPTION_BROADCAST_ADDRESS);
dhcp_option_byte(state, DHCP_OPTION_DOMAIN_NAME_SERVERS);
dhcp_option_byte(state, DHCP_OPTION_DOMAIN_NAME);
dhcp_option_byte(state, DHCP_OPTION_NTP_SERVERS);
#endif

dhcp_option_trailer(state);

pbuf_realloc(state->p_out, sizeof(struct dhcp_msg) + state->options_out_len);

udp_recv(state->pcb, dhcp_recv, state);
udp_bind(state->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT);
udp_connect(state->pcb, IP_ADDR_BROADCAST, DHCP_SERVER_PORT);

if (udp_send(state->pcb, state->p_out, state->netif) >= 0) state->p_out = NULL;
udp_bind(state->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT);
udp_connect(state->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT);

dhcp_delete_request(state);
}

state->tries++;
msecs = state->tries < 4 ? (state->tries + 1) * 1000 : 10 * 1000;
mod_timer(&state->request_timeout_timer, ticks + msecs / MSECS_PER_TICK);

dhcp_set_state(state, DHCP_SELECTING);
return result;
}
Ein BROADCAST an UDP Port 67 und der DHCP sollte sich offenbaren.
adhome ist offline   Mit Zitat antworten
Alt 17.09.2011, 19:07   #10
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Yo, das sieht doch schon mal gut aus!
Jetzt muss ich nur in ner ruhigen Stunde mal schauen, wie ich das in VB6 verwurste.
Vielleicht in eine DLL compilieren, exportieren und diese dann aus VB6 heraus nutzen?
Theoretisch sollte das ja gehen. Praktisch muss ich mal sehen.
Hab' ich noch nie gemacht. Bin ja C#'ler.

Danke aber schon mal!
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 19:18   #11
DetLife
Patriarch
 
Registriert seit: 02.05.2001
Beiträge: 6.153
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Und warum muß es mit dem völlig veralteten VB6 gemacht werden?
DetLife ist offline   Mit Zitat antworten
Alt 17.09.2011, 19:23   #12
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

- Zum einen ist das Progrämmchen wo ich es einbauen möchte schon fertig und basiert auf VB6.
- Zum andern ist die Laufzeitumgebung schlanker als z.B. bei .NET. Und da es beim Hochfahren quasi als Dienst genutzt wird, möchte ich diesmal eine schlanke Umgebung. Sonst favorisiere ich klar .NET.
- Delphi kenn ich nicht.
- C ist bei mir fast 20 Jahre her und der Erfahrungsschatz war auch auf Grund zeitlicher Engpässe damals sehr gering.
- C++ kenne nur aus der Theorie.

Im Grunde spricht da nicht viel gegen VB6. Wenn ich das oben aufgeführte Sample in eine DLL compiliert kriege kann ich es von dort aus ja nutzen. Eine reine C/C++ Lösung wäre aus der jetzigen Situation heraus für mich nicht einfacher umzusetzen.
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 22:20   #13
adhome
Oldie
 
Benutzerbild von adhome
 
Registriert seit: 10.06.2001
Beiträge: 4.464
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Das Sample ist nur ein Auszug aus nen längeren Code. Sagte eher, sollte google suchen lassen (;
Im Grunde wurde das Gewünschte hier gemacht:
Die Kunst ist nicht alles zu wissen, sondern zu wissen, wie man alles findet (;
adhome ist offline   Mit Zitat antworten
Alt 17.09.2011, 22:42   #14
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

adhome, ich glaube das Sample aus deinem letzen Link geht in eine andere Richtung, oder?
EchtAtze ist offline   Mit Zitat antworten
Alt 17.09.2011, 23:14   #15
adhome
Oldie
 
Benutzerbild von adhome
 
Registriert seit: 10.06.2001
Beiträge: 4.464
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

DhcpRequestParams sollte ein Array mit allen DHCP Servern geben.
Ist aber wirklich vielleicht hier überdimensieniert. Zumal Adaptername usw. mit angegeben werden.

Reicht es nicht die Registry zu fragen?
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DHCPNameServer
Ausgangspunkt der Suche sollte HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DHCP\Parameters\Options
sein.
adhome ist offline   Mit Zitat antworten
Alt 18.09.2011, 00:22   #16
SkAvEnGeR
Master of Tools
 
Benutzerbild von SkAvEnGeR
 
Registriert seit: 21.05.2001
Beiträge: 3.902
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

Wie wäre es damit, ein Tool wie Netsendman zu benutzen.

Damit kannst du verschiedene LAN-Konfigurationen als Profile abspeichern und schnell hin- und her wechseln. Da würde dir auch gleich deine Suche nach einem DHCP-Server erübrigen.
SkAvEnGeR ist offline   Mit Zitat antworten
Alt 18.09.2011, 09:35   #17
EchtAtze
Oldie
 
Benutzerbild von EchtAtze
 
Registriert seit: 09.06.2001
Beiträge: 3.843
Standard AW: IP eines 'umherstehenden' DHCP-Server ermitteln?

@adhome:
Zitat:
DhcpRequestParams sollte ein Array mit allen DHCP Servern geben.
Wenn dem wirklich so ist, dann wäre das toll.
Ich muss mich da mehr reinwühlen. Bin nur momentan am kränkeln und habs nicht so mit Konzentration irgendwie.
Bzgl. deiner Idee mit dem Auslesen der Registry: Da muss der Rechner/Adapter doch auch schon wieder bereits logisch mit dem LAN verbunden sein (was ja in meinem Szenario definitiv nicht der Fall ist, weil eine statische IP-Konfiguration vorliegt, die gar nicht zum vorliegenden Netz passt), oder habe ich ein Brett vor dem Kopf?

@Skavenger:
Ich nutze bereits ein solches Tool von Lenovo/IBM, da mein Notebook von da her stammt.
Bin sehr zufrieden damit. Es kann auch automatisch Profile wechseln, hat aber Schwachpunkte, die ich mit meinem Tool ausgleiche.
Zudem ist mein Notebook, wenn ich es Zuhause hochfahre, zugeklappt und bleibt auch so (ich verwende dort Input Director). Da ist das mit dem händischen Wechseln Essig.
Also danke dir für den Vorschlag, aber ich weiß schon wo ich hin will.
Ich muss halt nur noch den/die DHCP-Server finden um zu ermitteln wo ich bin.
Wie es aussschaut bin ich ja nah dran.
EchtAtze ist offline   Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.


vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.