為了在管理者與使用者兩者之間取得平衡,可能會選擇採用DNS建立一筆CNAME紀錄這樣的方式,但是實際使用時,就會發現UNC路徑連接到\\CNAME時,可能會發生驗證失敗或是一片空白的狀況
參考微軟文件後,解決方式可分為單機與叢集資源....
微軟文件:https://support.microsoft.com/en-us/help/3181029/smb-file-server-share-access-is-unsuccessful-through-dns-cname-alias
如果是單機的話,可透過以下方式:
- 1. 透過修改機碼的方式關閉名稱檢查
Registry location:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
DWORD name: DisableStrictNameChecking
DWORD value: 1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
DWORD name: DisableStrictNameChecking
DWORD value: 1
2. 透過指令將伺服器帳戶新增到網域 (文件中有特別提醒「不建議使用,除非您堅持」)
NETDOM COMPUTERNAME /ADD
3. 設定SPN(service principal names)
SETSPN -a host/alias_name targetserver
SETSPN -a host/alias_name.contoso.com targetserver
SETSPN -a host/alias_name.contoso.com targetserver
SMB檔案分享是在Windows 2012並且有叢集化,可以透過「設定Alias別名」的方式
參考文件:https://blogs.msdn.microsoft.com/clustering/2012/04/08/how-to-configure-an-alias-for-a-clustered-smb-share-with-windows-server-2012/- 先透過以下指令,確定叢集資源中,是否有指定別名 (通常是空白)
- 再使用以下指令,指定別名 (通常是空白)
- 最後重覆第一個指令,確定別名是否有指定成功 (通常是空白)
- 如果Alias別名的設定確認無誤,請讓叢集資源離線後再重新上線
Get-ClusterResource "MyClusterName" | Get-ClusterParameter Aliases
Get-ClusterResource "MyClusterName" | Set-ClusterParameter Aliases Alias別名
Get-ClusterResource "MyClusterName" | Get-ClusterParameter Aliases
注意事項:
- 文件中有提到,如果是以IP、Alias別名來連接至SMB檔案分享,這些連線是不支援Kerberos驗證的,連線驗證會使用傳統的NTLM,使用Alias別名雖然帶來了便利性,但是要考慮一下安全性
如果需要設定多個別名,請以雙引號"框起所有Alias別名,每個別名中以逗號,分隔,請參閱下面範例:
Get-ClusterResource "MyClusterName" | Set-ClusterParameter Aliases "Alias別名1,Alias別名2"