Nowości w Windows Server 2008 R2 - AD DS: bezpołączeniowe dołączanie do domeny (Offline domain join)
Autor: Nataniel Zieliński
Opublikowano: 7 kwietnia 2009
Zawartość strony
Idea działania | |
Tylko po co...? | |
Krok po kroku | |
Ograniczenia | |
Przydatne linki |
**Uwaga!**Artykuł pisany jest na ok. rok przed premierą produktu, dla wersji Windows Server 2008 R2 beta 1 – w wersji finalnej pewne elementy mogą ulec zmianie.
Idea działania
Idea prezentowanego mechanizmu jest prosta: możliwość dodania do domeny stacji, która nie ma połączenia z AD. Aby stacja została dodana do domeny, operacja musi zostać wykonana w dwóch krokach – na kontrolerze domeny musi zostać powołane konto, a stacja kliencka musi zapisać informację o tym, że ma uwierzytelniać się w domenie.
Jest to oczywiście bardzo skrócony opis, istotą jest jednak wykonanie czynności po obu stronach – inaczej całość nie ma szansy zadziałać. Nie przez przypadek zostało użyte sformułowanie ‘powołać konto’ (provision), ponieważ wiąże się to z zapisaniem pewnych informacji o systemie, który to konto reprezentuje – w przeciwieństwie do ‘założenia konta’, które jest po prostu założeniem obiektu bez żadnej relacji z rzeczywistą stacją.
Do wymiany informacji musi zostać wykorzystane jakieś medium zastępujące połączenie sieciowe, i w tym przypadku jest to mały plik tekstowy.
Do początku strony
Tylko po co...?
Co osiągniemy, jeśli włączymy stację dodaną do domeny bezpołączeniowo?
- nie zostaną pobrane polisy GPO
- nie będzie można zalogować się na żadne konto domenowe
- nie da się skorzystać z żadnych zasobów domenowych
A więc jaki jest scenariusz, w którym taka funkcjonalność może być przydatna? Podstawowym zastosowaniem jest wykorzystanie tego mechanizmu podczas powoływania maszyn wirtualnych w centrach danych. Wirtualizacja staje się coraz bardziej powszechna i możliwość szybkiego utworzenia maszyny, która będzie od razu dodana do domeny z odpowiednią nazwą, może okazać się pomocne.
Do początku strony
Krok po kroku
Nie będzie to zbyt długi spacer - ma tylko dwa kroki, w obu wykorzystane będzie narzędzie 'djoin', które jest standardowo w każdym Windows 7.
W pierwszym należy 'powołać konto':
PS C:\>djoin /provision /domain "w2k8r2.domain" /machine "client01" /savefile "client01.djoin"
Nazwa pliku wynikowego może być dowolna i jest to prosty plik tekstowy, w którym zapisane są zakodowane informacje o haśle konta i nazwie komputera. Ciekawostką i największą zaletą tego rozwiązania jest fakt, że nazwa stacji klienckiej zostanie podczas operacji zmieniona na taką, jaką zdefiniujemy podczas powoływania. Zapewnia to wygodę podczas pracy z szablonami systemów wirtualnych. Podczas tej operacji kontroler domeny musi być dostępny.
Drugi krok można wykonać na dwa sposoby - zależnie od scenariusza. Zacznę od mniej ciekawego - kiedy stacja robocza działa, ale nie ma połączenia z domeną. W takim wypadku należy po prostu wykonać komendę:
PS C:\>djoin /requestODJ /loadfile client01.djoin /windowspath (Get-Item -path Env:\windir).value /localos
System wystarczy teraz zrestartować i niezależnie od nazwy jaką miał poprzednio - po restarcie mamy gotową do pracy, dodaną do domeny maszynę o zadanej nazwie.
Jednak podstawowy scenariusz, gdzie na prawdę widać po co djoin został stworzony, to powoływanie maszyn wirtualnych z szablonu. Systemy zenkapsulowane są w plikach vhd, a Windows 7 posiada nową, bardzo ciekawą funkcjonalność - natywne wsparcie dla dysków vhd. Oznacza to, że możemy za pomocą djoin przygotować maszyny w trybie offline. W tym celu trzeba najpierw podłączyć dysk vhd:
PS C:\> diskpart
Microsoft DiskPart version 6.1.7000
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: W2K8R2BETA
DISKPART> select vdisk file="h:\w7.vhd"
DiskPart successfully opened the virtual disk file.
DISKPART> attach vdisk
DiskPart successfully attached the virtual disk file.
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 E DVD-ROM 0 B No Media
Volume 1 D Windows 7 NTFS Partition 149 GB Healthy System
Volume 2 C W2k8R2.b7oo NTFS Partition 24 GB Healthy Boot
Volume 3 F NTFS Partition 127 GB Healthy
DISKPART> exit
Leaving DiskPart...
PS C:\> dir f:
Directory: f:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2009-02-20 11:03 PerfLogs
d-r-- 2009-02-20 15:24 Program Files
d-r-- 2009-03-12 16:13 Users
d---- 2009-03-12 16:27 Windows
-a--- 2008-04-29 21:43 24 autoexec.bat
-a--- 2008-04-29 21:43 10 config.sys
Dysk F: to wirtualny system Windows 7 w pliku vhd.
Teraz można wykonać komendę:
PS C:\>djoin /requestODJ /windowspath f:\windows /loadfile client01.djoin
Loading provision data from file: .\client01.djoin
Offline domain join request completed successfully.
Warunkiem powodzenia jest, aby komputer, na którym podłącza się dysk, był w domenie oraz aby użytkownik, który dodaje stację, miał do tego uprawnienia.
Po wykonaniu dołączenia, należy nie zapomnieć odłączyć dysk wirtualny za pomocą diskpart:
DISKPART> select vdisk file="h:\w7.vhd"
DiskPart successfully opened the virtual disk file.
DISKPART> dettach vdisk
DiskPart successfully dettached the virtual disk file.
DISKPART> exit
Leaving DiskPart...
Polecenie diskpart można oskryptować, tworząc plik wsadowy i wykonując je z przełącznikiem „-s” [ref 1], dzięki czemu całe rozwiązanie można już dziś w pełni zautomatyzować.
Jeśli zajrzymy do pliku „client01.djoin”, zobaczymy tam jedynie „krzaczki”. Okazuje się, że ma on nieskomplikowaną budowę i po wyrzuceniu pierwszych dwóch bajtów, reszta to zakodowane w base64 informacje.
Na blogu Matthieu Suiche można przeczytać szczegółowe informacje, oraz pobrać narzędzie – dinfo, które wyświetla informacje zawarte w pliku wygenerowanym przez djoin:
PS E:\> .\dinfo /loadfile .\client01.djoin
dinfo - v1.0.20090128 - Domain Information
dinfo utility displays the contents of the provisioning file created by Microsoft djoin.exe tool.
Copyright (c) 2007 - 2009, Matthieu Suiche <http://www.msuiche.net>
Copyright (c) 2008 - 2009, MoonSols <http://www.moonsols.com>
main: Loading provision data from file: .\client01.djoin
main: Blob base64 decoded, unpickling...
main: Blob decoded successfully, dumping...
Blob version: 1
Blob size: 864
Global Information:
lpDomain: w2k8r2.domain
lpMachineName: client01
lpMachinePassword: \.AqzuoU.rWTnv@;Z_8iQ jc=P`px&*bYCxVa'0ARgwAkVD`kA!`vY#i"mLZ6PgXlP8Z fYOw*%rM8xZ"eFCx7-m X`UT=@]86@Z!-2VM(Sep0z#YN<uc2ZS
DomainDnsPolicy:=""
Name:="" w2k8r2=""
DnsDomainName:="" w2k8r2.domain=""
DnsForestName:="" w2k8r2.domain=""
DomainGuid:="" 8bfecf3f-0327-4600-b644-32afd280e175=""
Sid:="" S-1-5-21-2489063379-3576466881-4189521548=""
DcInfo:=""
DomainControllerName:="" \\AD.w2k8r2.domain=""
DomainControllerAddress:="" \\2002:ac00:1::ac00:1=""
DomainControllerAddressType:="" 0x1=""!
DomainGuid:="" 8bfecf3f-0327-4600-b644-32afd280e175=""
DomainName:="" w2k8r2.domain=""
DnsForestName:="" w2k8r2.domain=""
Flags:="" 0xe00031fd=""
DcSiteName:="" w2k8r2-central=""
ClientSiteName:="" w2k8r2-central=""
Options:=""
Options = "0x0"
Do początku strony
Ograniczenia
Idealnym rozwiązaniem byłoby napisanie skryptu, który tworzyłby dyski wirtualne przyrostowe z przygotowanego dysku bazowego, następnie by je podłączał, wykonywał djoin – i możemy w krótkim czasie stworzyć dowolnie wielkie środowisko wirtualne.
Pojawia się tutaj jednak poważny problem: podczas zmiany nazwy, nie jest zmieniany SID systemu. Teoretycznie da się dołączyć do domeny systemy z tym samym SIDem, ale jest to ryzykowne – nie ma w zasadzie żadnego dokumentu, który mówiłby jakie będą tego konsekwencje, a z praktyki wiem, że niestety czasem pewne aplikacje działać nie chcą.
Należy więc mieć nadzieję, że do pojawienia się wersji finalnej, narzędzie zostanie zmodyfikowane tak, żeby podmieniało SID systemu.
Do początku strony
Przydatne linki
- skrypty diskpart https://msdn.microsoft.com/en-us/library/bb905578.aspx
- blog Matthieu Suiche http://www.msuiche.net/2009/01/29/windows-7-and-windows-server-2008-r2-djoin-offline-domain-join-utility/
Nataniel Zieliński (konsultant ISCG) Przygodę z komputerem zaczynał na polskich 8-bitowcach Bosman 8 w późnych latach 80-tych. Po bogatych doświadczeniach z licznymi systemami, rozpoczął karierę jako administrator systemów Windows NT w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zgłębiał tajemnice kolejnych wersji Windows NT, zarówno od strony technicznej - administrując, jak teoretycznej - prowadząc kursy MOC w Akademickim Centrum Szkoleniowym. Od kilku lat pracuje w roli konsultanta oraz trenera MCT w firmie ISCG Sp. z o.o., Gold Partnera Microsoft, dalej pogłębiając swoją wiedzę w dziedzinie kolejnych produktów ze stacji Microsoft. Od dłuższego czasu członek elitarnego klubu inżynierów Microsoft - SEClub. |
Do początku strony |