LDAP DHCP leasings auslesen

Vamp7771

Mitglied
Hallo zusammen,

ich habe mir etwas programmiert, wodurch ich nun meine IP Adresse über die Hostnameneingabe bekomme.

Nur dank unserer Active Directory (Netbios ist ja deaktiviert) stimmen die meisten IP Adressen nicht mehr, also möchte ich folgendes programmieren:

Ich gebe meinen Hostnamen ein, erhalte die IP Adresse über System.Net und würde diese nun auch gerne mit dem DHCP vergleichen.
Stimmt diese IP adresse, so soll auch diese dann angezeigt werden, stimmt sie nicht, soll man darauf hingewiesen werden und die richtige (vom DHCP) sehen.

Mein Anfang ist dieser (Haupcode):

Code:
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        KeyPreview = True
        If e.KeyCode = Keys.Enter Then
            If TextBox1.Text <> "" Then
                Try
                    StrHost = TextBox1.Text
                    SearchStr = StrHost + StrSuffix
                    Dim index As Integer
                    Dim StrIpAddrInfo As New System.Net.Sockets.TcpClient
                    Dim hostInfo As IPHostEntry = Dns.GetHostByName(SearchStr)
                    StrIpAddrInfo.Connect(hostInfo.AddressList(index), 135)
                    For index = 0 To hostInfo.AddressList.Length - 1
                        If index >= 0 Then
                            TextBox2.Multiline = True
                            TextBox2.AutoSize = True
                            TextBox2.Visible = True
                        End If
                        TextBox2.Text = Convert.ToString(hostInfo.AddressList(index)) & vbCrLf & "Timeout: " & (StrIpAddrInfo.ReceiveTimeout.ToString)
                    Next index
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                    MessageBox.Show("Name konnte nicht gefunden werden! - Bitte neuen Namen eingeben")
                    TextBox1.Text = ""
                End Try
            End If
        End If
    End Sub
#End Region

Wie ich die Abfrage des DHCPs machen soll weiß ich nicht, es gibt keine Klasse dafür, und im Internet lese ich immer LDAP, und System.DirectoryServices, aber auch der Namespace stellt mir keine Klasse zur Verfügung die mir weiterhilft.

Weißt das jemand, wie kann ich einen Request an einen DHCP machen und die IP Adresse vergleichen, mit der ich bereits über Dns.GetHostByName erhalte?

mfg
Vampy^^
 

Norbert Eder

Erfahrenes Mitglied
Ähm, moment :)

Was genau willst du da jetzt eigentlich? Die deinem Rechner zugewiesene IP-Adresse in einem Formular anzeigen?

Die Daten die du via DNS-Klasse bekommst, kommen direkt vom DNS-Server, sollten also stimmen. Inwiefern du da jetzt das Active Directory in Beziehung bringst, weiß ich nicht, würde ich dich jedoch bitten, dies aufzuklären. Denn ich weiß nicht warum irgendwelche IP-Adressen nicht mehr stimmen sollten, ausser du wählst zufällige, die auch nicht vergeben wurden.

Ich denke, dass du hier etwas verwirrt bist ;-)
 

dobPh

Mitglied
Hallo,

ich habe schon ein bißchen mit LDAP und dem DirectoryService unter VB.Net gearbeitet aber ich verstehe nicht ganz was du machen möchtest. Meines erachtens nach kannst du keine IP's aus der AD lesen, die werden (wenn ich nicht irre), dort auch gar nicht gespeichert, sondern nur der PcName, OS, Description etc. pp.
Die Adresse die du über Dns.GetHostByName bekommst müsste doch normalerweise die Adresse sein, die der DHCP dem Rechner den du suchst zugewiesen hat.

Grüße
Philipp


edit:
Da war der Norbert wohl schneller mit tippen ;).
 

Vamp7771

Mitglied
Hallo,

hier kommt die Aufklärung:

Unser AD ist so aufgebaut, dass es pro Site einen DomainController gibt (okay, ist wohl nichts Besonderes :)
Jeder Benutzer, der sich nun anmeldet, meldet sich auf dem DC an, der am schnellsten auf den Broadcast antwortet (bisher macht es denke ich auch noch Sinn)

Nur haben unsere Jungs von der Leitstelle in Oxford sich leider einen Patzer erlaubt, und können dies nun auch nicht mehr beheben (wohl zu faul)
Der Patzer ist:
Wir haben keinen Primary DC und keinen Sec DC Eintrag, das heisst, der Rechner verbindet sich mit dem DC, der zuerst antwortet (wir haben mehr als 50DC's, weltweit)

So er verbindet sich nun, erhält eine IP Adresse und einen Lease.
Die Leasings werden aktualisiert, jedoch in gewissen Abständen.

Mein Problem ist nun:

Loggt sich ein User 2 mal am Tag ein, so verbindet er sich möglicherweise mit 2 verschiedenen DC's und erhält mit 1 Hostname 2 IP Adressen.
DNS liefert mir immer nur 1 IP Adresse.
Der DHCP aber hat dann 2 Einträge und der neueste Eintrag stimmt.
Das muss ich ermitteln.

Ich hoffe ihr habt nun mein Problem verstanden, den es ist auch etwas doof zu erkären.

@ Norbert:

Nein, ich möchte kein Formular, ich habe nur 2 Textboxes:
- in die erst wird der Hostname eingegeben
- in der 2ten wir die IP Adresse dazu angezeigt

Ich bin nun soweit, dass ich mir über DNS die IP Adresse anzeigen lasse, aber ich kann eben nicht sicherstellen, ob denn nun das die richtige oder vielleicht eine veraltete ist.

mfg
Vampy
 

dobPh

Mitglied
Hallo,

normalerweise sollte doch aber das Ergenbnis schon der aktuelle (letzter Eintrag) des DHCP's sein, oder?

Auf jeden Fall liegt der Lösungsansatz dann nicht über eine Abfrage der AD, da wie gesagt meiner Meinung nach keine IP Adressen in der AD abgelegt werden. Das einzige was mir jetzt auf die Schnelle einfällt, wäre eine AD Abfrage nach dem 'lastlogon' zu machen und dann zu gucken ob es ca. mit DHCP Eintrag Zeit übereinstimmt (falls so was überhaupt möglich ist).

Grüße
Philipp
 

Norbert Eder

Erfahrenes Mitglied
Zu welchem DC sich der Rechner verbindet ist doch vollkommen egal. Das AD hat mit dieser Geschichte nichts zu tun.

Du beziehst deine IP-Adresse _immer_ vom DHCP-Server (wenn eben die IP-Adressen automatisch bezogen werden). Wenn der Rechner-Name auf eine "alte" IP-Adresse verweist, dann solltet ihr euren DNS-Server etwas unter die Lupe nehmen, denn dann aktualisiert dieser nicht schnell genug.

Das ist ein Problem welches du programmiertechnisch nicht umgehen kannst. Die IP, die bei dir am Rechner eingetragen ist, ist die aktuelle. Die, welche du dann aber eventuell via DNS-Server bekommst, könnte in deinem Fall eben alt sein. Dann ist das aber ein generelles Netzwerkproblem hätte ich jetzt gesagt.

EDIT: Wobei es natürlich auch möglich ist, dass ein Rechner mehrere IP-Adressen bekommt, weil er diese benötigt, aber das ist wieder eine andere Geschichte und wird bei euch wohl nicht der Fall sein.

Wenn ihr DHCP und DNS von Microsoft verwendet, dann solltets Dynamic DNS verwenden. Und eventuell Caching ausschalten ;-)

Und welche Firma hat bitte FÜNFZIG DC's. Ist ja schwerst oversized ...
 

Vamp7771

Mitglied
Jap,

da gebe ich euch auch Recht.
Ich weiß, es ist der falsche Ansatz, hinten aufzuräumen, aber vorne (am DNS) darf ich nicht, da ich nicht mehr die Rechte habe (seit AD machen wir das nun Zentral)
Das bedeutet ich bin nun ein eingeschränkter Administrator....

gut, hmpf....

Dennoch bleibt mein Problem, ich möchte den DHCP Server via .Net nach IP Adressen zu Hostnamen abfragen, anstatt mir die Infos über DNS zu holen, da diese einfach nicht 100% korrekt sind.
Gibt es diese Möglichkeit überhaupt?

Sorry, falls ich euch etwas verwirrt habe.

:)

mfG
Vampy
 

Norbert Eder

Erfahrenes Mitglied
Ihr werdet wohl einen Administrator haben, der den DNS entsprechend konfigurieren kann und sollte. Dein Problem dürfte in diesem Netzwerk ja wohl nicht das einzige sein.

Ansonsten schau dir einfach mal die DHCP Server Callout API an. Dazu brauchst allerdings ein paar Rechte am DHCP bzw. DC.
 

Neue Beiträge