Tohle je reakce na dotaz kamaráda ohledně jeho problémů s přístupem na fileshare přes DNS alias. Odstranil jeden souborový server, jeho obsah přehodil na jiný stroj, ale potřeboval jeho jméno zachovat. Velké množství konfigurací v síti obvykle závisí na jméně toho serveru. To se dá obejít dlouhodobým užíváním DFS Namespaces namísto skutečných jmen serverů, ale ne všechny aplikace DFSN podporují.
A potom mu nefungovaly logon scripty a nějaké další věci.
Tak tu jsou informace, které se tohoto tématu týkají. Není to tak jednoduché jako jenom založit DNS alias.
Primárně použijte NETDOM COMPUTERNAME
Na počítači, který přebírá jméno nějakého staršího stroje, který už v síti není, je vhodné přidat toto alternativní jméno pomocí NETDOM COMPUTERNAME /Add. Mašina bude o sobě vědět, že se tak jmenuje.
Sama si bude registrovat toto jméno jako A záznam do DNS, sama si přidá host/* SPN apod.
Popis věcí, které se tím buď vyřeší samy, nebo které je potřeba současně zkontrolovat následuje.
DNS alias a protokol sdílených souborů (SMB)
SMB má aktuálně 3 verze. Verze 1 je na Windows Server 2003, Windows XP a starších. Ve Windows Vista a Windows 2008 se objevila verze 2. Od Windows 8 a Windows Server 2012 budeme mít SMB 2.2. Každý systém se snaží používat tu nejnovější verzi, kterou může. Takže pokud se například Windows 7 připojují na Windows Server 2003, mohou používat pouze verzi SMB 1.0.
Verze je důležitá z pohledu serveru a alaisů. Jestliže se používá verze SMB 1.0, musí být na serveru v registrech tato hodnota:
HKLM\System\CurrentControlSet\Services\LanManServer\Parameters
DisableStrictNameChecking = DWORD = 1
Takže nikoliv jen na Windows Server 2003 a starších. Tuhle hodnotu musíte mít na všech počítačích, na jejichž sdílené soubory se dívá kdokoliv "starší" - Windows 2003, Windows XP, 2000 a starší. Dejte to tedy do registrů i na Windows 2008 R2 apod. tím rozhodně nic nezkazíte.
DNS alias a Kerberos
Klienti se ověřují pomocí protokolu Kerberos, pokud to z nějakého důvodu nejde, tak se použije NTLM. Pokud něco běží pod účtem SYSTEM (různé skripty, startup skripty apod.), tak SYSTEM nemůže použít NTLM. SYSTEM chce používat pouze Kerberos.
Ano, to se sice dá přepnout od Windows Server 2008 R2 a Windows 7 pomocí politiky Network Security: Allow Local System to use computer identity for NTLM, ale obecně je lepší rozchodit Kerberos.
Takže jakmile vytvoříte DNS alias pro daný server, přidejte správné SPN (servicePrincipalName) do účtu nového serveru, na který jste data přenesli:
- najděte si účet toho nového souborového serveru, na který jste data přenesli. Například new-fs. Doména je třeba domain.local.
- původní server se jmenoval jak? Například old-fs. Předpokládám, že tohle je to jméno, pro který jste dělali DNS alias.
- v konzoli Active Directory Users and Computers (dsa.msc) si v menu View zapněte volbu Advanced Features.
- ve vlastnostech účtu new-fs na záložce Attribute Editor přidejte do atributu servicePrincipalName (SPN) hodnoty cifs/old-fs a cifs/old-fs.domain.local.
- ještě nakonec ověřte ve vlastnostech účtu old-fs, že tam tahle dvě SPN nejsou. Případně se ještě můžete ujistit, že vůbec nemáte v doméně duplicitní SPN obecně - SETSPN -X
Poznámka: alternativní metodou zanesení DNS aliasu do Active Directory je, že uvedete to aliasové jméno do atributu msDS-AdditionalDNSHostName. Takto ho tam například připíše právě NETDOM COMPUTERNAME. Takže byste místo bodu 4 mohli jen nastavit old-fs.domain.local do tohoto atributu.
NTLM loopback check
Poslední věc, kterou je dobré udělat na našem aliasovaném new-fs serveru. NTLM ověřování, pokud by se přistupovalo z toho samotného serveru na ten samotný server - tedy loopback - a bylo to čistě náhodou NTLM, tak to nepojede.
NTLM to nejspíš nebude, protože jsme proto právě založili Kerberos SPN, ale u loopback spojení člověk dost často neví. Takže je lepší ten alias nadefinovat i pro NTLM.
HKLM\System\CurrentControlSet\Control\LSA\MSV1_0\BackConnectionHostNames = MULTI_SZ = old-fs, old-fs.domain.local
A to je všechno milé děti.