n3tworker
Goto Top

DNS Server IP zuweisen?

Hallo,

da ich bei mir im Netzwerk gerade am umstellen auf w2k3 bin ergibt sich ein kleines Problem.

Ich habe einen neuen Server bereits zum 2ten bzw. alternativen DNS Server gemacht. gibt es die Möglichkeit mein Windows XP Clients die neue Adresse des DNS Servers irgendwie remote zu zuweisen? Ich bin leider auf statische IP´s angewiesen und kann so kein DHCP einsetzen.

In den Gruppenrichtlinien gibt es ja dazu nichts, lediglich Proxy etc.

Das Netzwerk beinhaltet ca. 300 Rechner, wäre jetzt sehr umfangreich bei allen die DNS Adresse zu ändern.

Kennt jemand eine Möglichkeit?

Schonmal Danke

Gruß

Marcel

Content-ID: 41970

Url: https://administrator.de/contentid/41970

Ausgedruckt am: 20.11.2024 um 01:11 Uhr

bastla
bastla 11.10.2006 um 20:10:37 Uhr
Goto Top
Hallo Marcel!

Zunächst zB:
netsh -r Remotecomputer interface ip set dns name="LAN-Verbindung" static 192.168.0.2  

Näheres zu netsh: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/de/libra ...


Um alle Rechner einer Domäne (oder auch nur ganz bestimmte) umzustellen siehe


Kurze Erklärung: VBScript erstellt Liste aller Computer in Textdatei (diese ev. von Hand editieren, um einzelne Rechner auszunehmen), dann mit Batch (FOR /F-Schleife) alle in der Liste eingetragenen Rechner mit obiger Anweisung umstellen.

HTH
bastla
N3tworker
N3tworker 11.10.2006 um 20:35:03 Uhr
Goto Top
Vielen Vielen Dank bastla für die Kompentente und schnelle Anwort.

Ich könnte also den netsh Befehl theoretisch auch in eine .bat Datei packen, oder?

Also den Befehl mehrmals kopieren und bei Remotecomputer meine Ip´s der Clients die umgestellt werden?
bastla
bastla 11.10.2006 um 20:47:12 Uhr
Goto Top
Hallo Marcel!

Wenn Du Dich von Biber (siehe oben erwähnter Beitrag) nicht dabei erwischen lässt ... face-smile

Wir (Biber und ich) hatten uns dort darauf geeinigt, dass der von mir vorgeschlagene Weg mit der automatisierten Erstellung einer derartigen "vollständigen" Batchdatei (für eine "psexec"-Sache, siehe Zeile CLine = ...) unmittelbar durch das Script in Beitrag 3 unflexibel und nicht elegant wäre - funktionieren sollte es allerdings schon.

bastla
bastla
bastla 11.10.2006 um 20:59:50 Uhr
Goto Top
Ergänzung: Falls Du allerdings fortlaufende IP-Adressen hast, solltest Du vielleicht einfach eine FOR /L-Schleife verwenden, also etwas in der Art von

For /L %i in (10,1,100) do netsh -r 172.16.0.%i interface ip set dns name="LAN-Verbindung" static 172.16.0.2  

für alle Adressen von 172.16.0.10 bis 172.16.0.100

bastla
N3tworker
N3tworker 11.10.2006 um 21:43:57 Uhr
Goto Top
So,

ich habe mir mal ein kleines script gemacht, allerdings noch ohne loop

@echo off
SET DESC="LAN-Verbindung"
SET DNS0=192.168.1.253
SET DNS1=10.107.45.3
netsh -r 192.168.1.50 interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY
pause
netsh interface ip add dns name=%DESC% addr=%DNS1% index=2


echo konfiguration
sleep1
Ipconfig /all


Das ganze funktioniert allerdings nicht, der secondary dns wird gesetzt, beim ersten erhalte ich aber immer eine Fehlermeldung das es den Befehl nicht gibt, wo ist mein Fehler?
N3tworker
N3tworker 11.10.2006 um 22:06:25 Uhr
Goto Top
Also ich habs leider immer noch nicht geschafft, mir ist aber allerdings aufgefallen das bei

desc=LAN-Verbindung steht, also die " " werden nicht mit eingefügt obwol sie oben so stehen???
N3tworker
N3tworker 11.10.2006 um 22:14:56 Uhr
Goto Top
Der Fehler liegt wohl an:

netsh -r 192.168.1.50 interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY

er erkennt einfach nicht das es ein ganzer Befehl ist, macht man das ganze ohne -r Zielcomputer klappt es, wo ist mein Fehler wie bekomme ich es hin???
bastla
bastla 12.10.2006 um 08:35:15 Uhr
Goto Top
Hallo Marcel!

Falls es an den Anführungszeichen liegen sollte:

netsh -r 192.168.1.50 interface ip set dns name="%DESC%" source=static addr=%DNS0% register=PRIMARY


Wenn es nur mit der Remote-Ausführung Probleme gibt, hilft vielleicht
http://book.itzero.com/read/microsoft/Microsoft.Press.Microsoft.Windows ...
set machine zu verwenden,
die beiden Batch-Zeilen in ein Anmeldescript zu verfrachten (Problem: Adminrechte) oder
per psexec ausführen zu lassen

Übrigens: Die MS-Infoseite von oben bezieht sich auf W2000 - für einen 2003er-Server (habe ich leider nicht zur Verfügung) müsstest Du die Syntax überprüfen.

HTH
bastla
N3tworker
N3tworker 12.10.2006 um 20:24:34 Uhr
Goto Top
Hi bastla,

das Problem mit dem Remote Syntax habe ich leider noch nicht hinbekommen, hab aber weiter noch nichts probiert
Kann es sein das ein RPC Server Vorraussetzung ist?

Aber zu meiner anderen Überlegung, das ganze wäre ja wirklich unpraktisch, so ein script eignet sich wohl viel mehr zum kurzen ändern eines bestimmten Clients.

Soweit ich weiß gibt es doch die Möglichkeit über die Gruppenrichtlinie Computer oder Nutzerbezogen das Script ausführen zu lassen, ich müsste lediglich die Group Policy mit dem Skript auf die OU´s anweden wo ich den DNS geändert haben will. Bei mir käme dann aber nur Computerbezogen in betracht, da sich oftmals auch ein user mal mehrere Tage nicht anmeldet, dafür aber ein anderer.

Ich hab leider gerade keinen Serverzugriff in der nähe, kann mir jemand sagen wo ich das zuweisen von Skripten finde?

Ich müsste so mein Skript lediglich abändern, also das "-r remoteclient" entfernen...

Die Lösung mit VB würde mich auch interessieren, aber ich bin ein absolouter Programmier Anfänger und mir gelingt der Einstieg irgendwie nicht.

Schonmal Danke

Gruß

Marcel
bastla
bastla 12.10.2006 um 20:33:54 Uhr
Goto Top
Einen hab ich noch:

wmic /node:192.168.1.50 process call create "netsh interface ip set dns  name=LAN-Verbindung source=static addr=192.168.1.253 1"  

(abgeleitet von http://forums.windowsitpro.com/web/forum/messageview.aspx?catid=54& ... - was die 1 am Ende bedeutet, weiß ich nicht)


Zum Script (W2000): In der Gruppenrichtlinie Computerkonfiguration / Windows-Einstellungen / Skripts / Starten wählen, zuerst mit "Dateien anzeigen ..." zum entsprechenden Verzeichnis wechseln, dort das Script ablegen und danach über "Hinzufügen ..." in die Richtlinie aufnehmen (OK nicht vergessen - ist zumindest mir schon passiert face-smile)

bastla
N3tworker
N3tworker 12.10.2006 um 20:58:30 Uhr
Goto Top
Hey Bastla - einfach spitze, du bist meine Rettung...

ich werde es gleich mal testen.

Da du aber so fit mit netsh bist kann ich dir vielleicht noch ne frage stellen.

Ich würde gerne eine .bat datei schreiben die im Autostart liegt und prüft ob die IP der Lanverbindung 1 z.B. die 10.107.45.5 hat, und wenn nicht diese dann ändert.

Einen Ansatz habe ich, aber mir fällt der "IF" Syntax, also "wenn die IP Adresse LAN-Verbindung nicht 10.107.45.8 ist dann ändere....

Hast du einen Tipp??

Gruß Marcel

Nochmals vielen Dank für deine Hilfe
N3tworker
N3tworker 12.10.2006 um 21:02:09 Uhr
Goto Top
Kurze Zwischenfrage:

Gibt es für das netsh Scripting eigentlich Fachlektüre in Bücherform, bzw empfehlenswerte um sich damit besser auseinander zu setzen?
bastla
bastla 12.10.2006 um 21:30:56 Uhr
Goto Top
Hallo Marcel!

Hab heute leider keine Zeit mehr, daher nur kurz:

Literaturempfehlung: leider nein; Link zur MS-Doku oben gibt auch nicht wahnsinnig viel her


VBScript: http://www.microsoft.com/technet/scriptcenter/createit.mspx - vor allem das Portable Script Center enthält viele Beispielscripts


Batch: Um die erste Stelle der aktuellen IP herauszufinden könntest Du folgendes verwenden (liefert aber bei 2 Karten nacheinander beide, also zB bei Zuweisung an eine Variable würde die Adresse der 2. Karte drinstehen):

for /f "tokens=2 delims=:. " %%i in ('netsh int ip show address^|find "IP-Adresse"') do @echo %%i  

(Wenn nicht im Batch verwendet, natürlich nur %i statt %%i)

Statt echo könntest Du zB Call :Auswertung %%i verwenden und nach dem Label :Auswertung mit %1 auf den übergebenen Wert zugreifen ...

That's all for now
bastla

<Edit>
Reihenfolge im Batch-Code oben umgestellt (tokens=2 nach vorne); für gesamte Adresse statt nur erster Stelle: ändern auf delims=:, also ohne Punkt
</Edit>
bastla
bastla 13.10.2006 um 07:57:04 Uhr
Goto Top
Hallo Marcel!

Zu Deinem DNS-Problem: Was auf jeden Fall funktionieren müsste, ist der Weg über psexec.

Für einen einzelnen Rechner sähe das (auf das Wesentliche beschränkt) so aus:

psexec \\192.168.1.50 netsh interface ip set dns "LAN-Verbindung 1" static 192.168.1.253  

Wenn Du eine Liste der Computer in einer Textdatei (zB Comp.txt) erstellst, kannst Du in obiger Anweisung die Adresse durch @comp.txt ersetzen, um alle Rechner umzustellen.

Für ev nicht erreichbare Computer gibt es die Schalter -d oder -n.


Die Abfrage der altuellen IP-Adresse lässt sich auch auf die erste Karte ("LAN-Verbindung 1") beschränken:

for /f "tokens=2 delims=:. " %%i in ('netsh int ip show address "LAN-Verbindung 1"^|find  /i "IP-Adresse"') do @if %%i neq 10 echo Nicht im 10er-Netz  

Statt des echo dann eben ein Befehl oder ein Call ...

Mehrere Stellen der Adresse überprüfen:

for /f "tokens=2-4 delims=:. " %%i in ('netsh int ip show address "LAN-Verbindung 1"^|find  /i "IP-Adresse"') do @if %%i.%%j.%%k neq 10.107.45 echo Nicht im Netz 10.107.45.x - Adresse derzeit %%i-%%j-%%k  

Anmerkung: Trennung der ausgegebenen aktuellen Adresse zu Demonstrationszwecken absichtlich mit "-"

Viel Erfolg
bastla