Dziś szybka notka bez heroicznych wstępów i rozbuchanych metafor. Czysty techniczny bełkot o migracji serwera DHCP z Windows 2003/2003R2 do Windows 2008/2008R2. Spraw wydaje się bagatelnie prosta, bo przecież wszyscy wiedzą, że wystarczy na starym serwerze zrobić to:

netsh DHCP server \\nazwa_serwera export C:\ w2k3DHCPdb all

Następnie na nowym zassać bazę DHCP tą komendą:

netsh DHCP server \\ nazwa_serwera import C:\ w2k3DHCPdb all

Przeładować DHCP I odpalić joint’cika. Generalnie w 99,9% to prawda i ten sposób działa wyśmienicie. Jednak ten 0,01% problemów może dopaść nas w przypadku, gdy system źródłowy jest w jakimś obcym, barbarzyńskim języku – włoski, francuski, hiszpański czy zapomniany przez wszystkich polski. Wtedy migracja z tego języka do Windows Serwera w wersji angielskiej bywa uciążliwa. Regułki się nie ładują, import rzyga błędami i generalnie jest nieprzyjemnie.

Sposób, aby to ominąć nie wynika, jak to chwali się nie jedna firemka z branży IT, z lat doświadczenia i prawie 300 osobowego zespołu specjalistów oraz najwyższego, złotego poziomu certyfikacji Microsoft, lecz z logicznego myślenia. Otóż rozwiązanie jest proste. Pierwszym krokiem jest eksport całej bazy DHCP, jako zbioru komend, robimy to poleceniem:

netsh DHCP server dump all >c:\DHCPdump.txt

Dzięki temu dostajemy pliczek z całą konfiguracją DHCP, który powinien wyglądać podobnie do tego:

# ==============================================================
#  Information de configuracion para el servidor 192.168.51.25
# ==============================================================

# =====================================
#     Agregar Clases
# =====================================

Dhcp Server 192.168.51.25 Add Class „Clase de enrutamiento y de acceso remoto predeterminada” „Clase de usuario para clientes de acceso remoto ” 525241532e4d6963726f736f6674 0 b
Dhcp Server 192.168.51.25 Add Class „Clase BOOTP predeterminada” „Clase de usuario para clientes BOOTP” 424f4f54502e4d6963726f736f6674 0 b
Dhcp Server 192.168.51.25 Add Class „Opciones de Microsoft Windows 2000 ” „Opciones especificas del proveedor de Microsoft para clientes de Windows 2000” 4d53465420352e30 1 b
Dhcp Server 192.168.51.25 Add Class „Opciones de Microsoft Windows 98” „Opciones especificas del proveedor de Microsoft para clientes de Windows 98” 4d534654203938 1 b
Dhcp Server 192.168.51.25 Add Class „Opciones de Microsoft” „Opciones especificas del proveedor de Microsoft aplicables a clientes de Windows 98 y Windows 2000” 4d534654 1 b

# =====================================
#     Finalizar Agregar Clases
# =====================================

# =====================================
#     Establecer valor de opcion
# =====================================

Dhcp Server 192.168.51.25 set optionvalue 3 IPADDRESS „192.168.51.4”
Dhcp Server 192.168.51.25 set optionvalue 15 STRING „corp.cmentarnapolka.pl”
Dhcp Server 192.168.51.25 set optionvalue 44 IPADDRESS „192.168.51.10” „192.168.51.11”
Dhcp Server 192.168.51.25 set optionvalue 46 BYTE „8”
Dhcp Server 192.168.51.25 set optionvalue 6 IPADDRESS „192.168.51.10” „192.168.51.11

# ==============================================================
#  Informacion de configuracion para el servidor 192.168.51.25 Finaliza
# ==============================================================

Oczywiście w tym przypadku mamy do czynienia z wersją hiszpańską. Poza niezrozumiałymi komentarzami, oraz opisami wszytko jest jasne i proste. Żeby zaimportować plik wystarczy zrobić mały zabieg chirurgiczny. Weźmy dla przykładu jedną z linii powyższego dumpa:

Dhcp Server 192.168.51.25 set optionvalue 3 IPADDRESS „192.168.51.4”

Przygotowanie do migracji będzie wyglądać tak, że dorzucimy netsh z przodu i wyrzucimy serwer – linia powinna po wszytkich zabiegach wyglądać tak:

netsh Dhcp Server set optionvalue 3 IPADDRESS „192.168.51.4”

Zmianę należy zastosować do wszystkich linii, następnie usunąć wszystkie komentarze zaczynające się od # oraz linie z komendami Add Clas, Add Optiondef.Dwie ostatnie, jeżeli bardzo wam na tym zależy można zmienić, do swoich potrzeb. Ja usunąłem gdyż migrowały one ustawienia standardowe serwera. Po małych zabiegach skrypt powinien wyglądać mniej więcej tak:

net stop DHCPserver
del c:\windows\system32\DHCP
net start DHCPserver

netsh Dhcp Server set optionvalue 3 IPADDRESS „192.168.51.4”
netsh Dhcp Server set optionvalue 15 STRING „corp.cmentarnapolka.pl”
netsh Dhcp Server set optionvalue 44 IPADDRESS „192.168.51.10” „192.168.51.11”
netsh Dhcp Server set optionvalue 46 BYTE „8”
netsh Dhcp Server set optionvalue 6 IPADDRESS „192.168.51.10” „192.168.51.11”

netsh Dhcp Server Set AuditLog „C:\WINDOWS\System32\dhcp”
netsh Dhcp Server Set DatabaseBackupInterval 60
netsh Dhcp Server Set DatabaseBackupPath „C:\WINDOWS\System32\dhcp\backup”
netsh Dhcp Server Set DatabaseCleanupInterval 60
netsh Dhcp Server Set DatabaseLoggingFlag 1
netsh Dhcp Server Set DatabaseName „dhcp.mdb”
netsh Dhcp Server Set DatabasePath „C:\WINDOWS\System32\dhcp”
netsh Dhcp Server Set DatabaseRestoreFlag 0
netsh Dhcp Server Set DetectConflictRetry 0

netsh Dhcp Server add scope 192.168.30.0 255.255.255.0 „192.168.30.0” „”
netsh Dhcp Server Scope 192.168.30.0 set state 1

netsh Dhcp Server Scope 192.168.30.0 Add iprange 192.168.30.2 192.168.30.254
netsh Dhcp Server Scope 192.168.30.0 add excluderange 192.168.30.2 192.168.30.49
netsh Dhcp Server Scope 192.168.30.0 add excluderange 192.168.30.50 192.168.30.79

netsh Dhcp Server Scope 192.168.30.0 set optionvalue 6 IPADDRESS „192.168.51.11” „192.168.51.10”
netsh Dhcp Server Scope 192.168.30.0 set optionvalue 44 IPADDRESS „192.168.51.11” „192.168.51.10”
netsh Dhcp Server Scope 192.168.30.0 set optionvalue 51 DWORD „691200”
netsh Dhcp Server Scope 192.168.30.0 set optionvalue 3 IPADDRESS „192.168.30.1”
netsh Dhcp Server Scope 192.168.30.0 set optionvalue 15 STRING „corp.cmentarnapolka.pl”
netsh Dhcp Server Scope 192.168.30.0 set optionvalue 46 BYTE „8”

netsh Dhcp Server add scope 192.168.51.0 255.255.255.0 „192.168.51.0” „”
netsh Dhcp Server Scope 192.168.51.0 set state 1

netsh Dhcp Server Scope 192.168.51.0 Add iprange 192.168.51.1 192.168.51.254

netsh Dhcp Server Scope 192.168.51.0 add excluderange 192.168.51.80 192.168.51.109
netsh Dhcp Server Scope 192.168.51.0 add excluderange 192.168.51.1 192.168.51.79

netsh Dhcp Server Scope 192.168.51.0 set optionvalue 6 IPADDRESS „192.168.51.11” „192.168.51.10”
netsh Dhcp Server Scope 192.168.51.0 set optionvalue 44 IPADDRESS „192.168.51.11” „192.168.51.10”
netsh Dhcp Server Scope 192.168.51.0 set optionvalue 51 DWORD „691200”
netsh Dhcp Server Scope 192.168.51.0 set optionvalue 3 IPADDRESS „192.168.51.4”
netsh Dhcp Server Scope 192.168.51.0 set optionvalue 15 STRING „corp.cmentarnapolka.pl”
netsh Dhcp Server Scope 192.168.51.0 set optionvalue 46 BYTE „8”

Po zapaleniu tego jak skryptu .cmd wasz serwer się wypełni regułkami. Wystarczy go tylko zautoryzować w AD i spokojnie odnowić adres IP.

About the author

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT. Specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.
2 Responses
  1. Administracja serwerów

    Ciekawe rozwiązanie.
    Szczerze, to trzymam DHCP na Linuxie, ale dobrze wiedzieć, że na Windzie idzie to (też) tak łatwo.

  2. Justin

    Wow, that’s what I was exploring for, what a information! existing here at this webpage, thanks admin of this web site.

Leave a Reply