iT邦幫忙

0

跨site VPN斷線後,有當地DC但新建帳號無法通過驗証登入PC

各位先進好:
近日遇到奇怪的問題,我的環境在兩端(本部-分部)有建VPN連線,AD抄寫正常。
但是,前幾天遇到VPN斷線後,分部的DC雖然能接受新PC加入網域,但是,新建的帳號(假設是A02)卻無法登入,
改用原本的帳戶(假設是A01)就可以登入(但我無法確定是當下問DC的結果還是本機驗証暫存)。

本部有建立A-DC01, A-DC02,分部則有B-DC01, B-DC02,並設定了對應的site與IP subnet。

假想情況是當斷線時,B-DC01或B-DC02應該還是會自動維持DC服務,但實際上似乎不是這麼一回事。
想請教各位先進,是否架構或設定上有問題,還請各位先進惠予指教,感謝。

harrytsai iT邦新手 4 級 ‧ 2019-11-21 11:31:57 檢舉
強制複寫一下
tibandyli iT邦新手 2 級 ‧ 2019-11-22 11:24:21 檢舉
謝謝 Harry
確認過斷線前/後的同步都是正常的
repadmin /showrepl 或 repadmin /showrepl * 都能正常抄寫
repadmin /syncall 也沒有錯誤

2 個回答

6
raytracy
iT邦大神 1 級 ‧ 2019-11-23 12:17:36
最佳解答

這是一件: 在新版系統上引用 20 年前舊知識所造成的誤解....

登入一個舊帳號, 需要甚麼角色來驗證? Ans:

狀況一: 本機 Cache 已存有驗證 Token, 用本機 Token 驗證
狀況二: 本機沒有 Token, 需要向 PDC 取得新的 Token 驗證

VPN 斷線時, 您的舊帳號仍可以符合狀況一, 所以跟你的 DC 無關
(想想看: 萬一 NB 帶到外面去用, 沒辦法連 DC, 開機能不能登入?)

我們再問,
登入一個新帳號, 需要甚麼角色來驗證? Ans:

因本機未曾登入過, Cache 內沒有 Token, 所以必須向 PDC 驗證

這裡是問題癥結點:
當 VPN 斷線時, 他要如何向 PDC 驗證?

很多人會說:
「啊我有很多台 DC 啊, 本地也有 DC, 不是可以驗證嗎?」

上面這個被誤傳很久的說法, 在 NT3.5~4.0 的 Pre-AD 時代是成立的, 因為當時的驗證設計只有: PDC 和 BDC 兩種角色, 當 PDC 不存在的時候, BDC 會自動出來接手驗證. 只要你的本地有 BDC 備援, 即使 VPN 斷線連不到 PDC 還是可以驗證....不過....(就是這個 But..)

這個 NT 架構, 早在進入 Windows 2000 的時候, 就已經被拋棄了: 2000 開始導入 Active Directory (AD) 架構, 在 AD 架構下, 已經沒有原本 NT 架構內的 PDC/BDC 這兩個東西, 但以前的驗證方法還無法馬上被拋棄, 當時該怎麼辦?

所以 2000 AD 另外創了一個角色叫: PDC Emulator, 後來被併入 FSMO 五大角色內, 成為五大角色的一員, 這五大角色分別是:
1. Schema Master
2. Domain Naming Master
3. Infrastructure Master
4. RID Master
5. PDC Emulator
 

五大角色是各自獨立的, 可以分散在多台 DC, 但並不是每個角色都可以有多套並存..其中 Schema 和 Domain Naming 在整個 Forest level 內只會有一套, 剩下的 Infrastructure/RID/PDC Emulator 則是每一個 Domain level 裡面會有一套....

一個 AD 組織下只能有一個 Forest level, 一個 Forest 下, 可以有多個 Domain level, 一個 Domain level 底下可以有多個 Site.... 但是一個 domain level 裡面, 只會有一台 PDC Emulator. (不論你有幾個 Site) 而且, 你看到 E-m-u-l-a-t-o-r 這幾個字了嗎? 代表他只是用來模擬充場面, 還不是真正的 PDC/BDC 架構...

(各位 AD 管理員, 你知道自己的五大角色分散在哪幾台 DC 內嗎?)

所以 AD 有 PDC Emulator, 但是有沒有 BDC? ...沒有...
所以 VPN 斷線了, 非 PDC 能不能驗證用戶端? ...不能...

(Server 2000 發表到現在, 你說, 是不是快要 20 年了?)
(其實還有個東西叫 Global Catalog 也要注意, 但他不是 FSMO)

這點跟 20 年前的 NT 架構設計大不相同, AD 管理員在設計和維運網路的時候, 請務必要小心謹記以下重點:

Windows AD 的設計是假設, 在整個 domain level DC 相連網路都不會斷的前提下, 才能正常操作, 雖然單一個 domain level 可以跟 Root forest 或是其他 domain level 短暫失聯沒關係, 但是在自己的 domain level 網路裡面, 各台 DC 之間是不能斷線. 一旦斷了, 運作就會不正常....

換句話說: AD 並沒有自動備援的設計, FSMO 一旦故障或斷線, 只能由人工進行奪取作業, 奪取成功之後才能恢復正常運作....

DC 之間不能斷線! AD 沒有自動備援能力!!
DC 之間不能斷線! AD 沒有自動備援能力!!
DC 之間不能斷線! AD 沒有自動備援能力!!

請各位 AD 管理員, 每天上班都默念以上口訣....
(也請大家別再用 20 年前的知識去教其他新手了)

------------ 我是分隔線

第二個問題:

不對呀, 你說斷線不能驗證, 但是為何我可以把電腦加入網域?!

沒錯, 但我上面只說不能驗證新用戶, 可沒說不能加電腦啊!!

加電腦進網域有哪些必要條件?

1. 必須通過 Domain Admins 身分驗證
2. 必須配發給該電腦專屬的新 SID 編號

第一個要求: 如果你在當地的 DC 上面操作過 Domain Admin 帳號, DC 裡面肯定有你的 Token Cache, 所以 Admin 身分驗證沒問題.

接下來第二個要求: 新的 SID 跟誰拿?

SID 的組成 = Domain SID + RID

五大角色內, RID 是由 RID Master 負責發放的, 但是 RID 又將這個工作, 委派給每一台 DC 去執行, 所以每一台 DC 都會分配到核發 RID 的編號空間.

當 VPN 斷線時, 如果本地的 DC 還活著, 雖然他不一定可以聯繫到 Domain level 內唯一的一台 RID Master 角色, 但因為編號空間早已委派給所有 DC 主機了, 所以即使連絡不到 RID, DC 自己也可以先行委派, 待連線恢復之後, 才將委派結果複寫出去...

以上才是你可以將電腦加入網域的關鍵, 跟 PDC Emulator 無關..

但是這裡有個前提:
發放 SID 必須是本機被委派的 RID 號碼還有剩餘空間時, 才可以完成. 如果本機預存的 RID 已經被用完了, 本地 DC 仍然要去跟 RID 申請一塊新的 RID 空間, 此時若聯絡不上 RID, 一樣會失敗....

------- 我又是分隔線

以上皆是 MCITP/MCSA 認證考試需要研讀的內容, 雖然認證對你的薪水可能沒有幫助, 不過顯然上過認證的課程, 你才會知道上述知識...

很多由 PC 玩家投入到 MIS 管理職的朋友, 往往只依賴朋友同好之間, 口耳相傳的說法, 但卻缺乏完整的正規訓練或是自習, 聽到人家說甚麼, 自己就跟著相信或跟著做, 導致 20 年前的舊知識, 被使用在不同架構新系統上的這種謬誤, 每年都不斷重複發生......

(我不知道為何一個 20 年前已廢掉的技術, 可以被誤傳這麼久?....)
(如果您身邊還有朋友在誤傳的話, 請將此篇用力傳出去打他臉)
/images/emoticon/emoticon05.gif

看更多先前的回應...收起先前的回應...
tibandyli iT邦新手 2 級 ‧ 2019-11-25 01:27:46 檢舉

謝謝Ray大師的指導~
真的沒有想到是一個歷史悠久的認知誤解。
應該找時間好好學習MCITP/MCSA的內容了...

AD 並沒有自動備援的設計, FSMO 一旦故障或斷線, 只能由人工進行奪取作業, 奪取成功之後才能恢復正常運作....

所以...
DC 之間不能斷線! AD 沒有自動備援能力!!
DC 之間不能斷線! AD 沒有自動備援能力!!
DC 之間不能斷線! AD 沒有自動備援能力!!

今天已經默唸三次了...

對於異地的做法:

  1. 透過建立不同的Domain Level(例如:tw.abc.com, us.abc.com),並設定當地其中一部DC升級為PDC,才能避免異常斷線時,新增的使用者無法登入問題。(因本機未曾登入過, Cache 內沒有 Token, 所以必須向 PDC 驗證)

  2. 在斷線時強制人工進行奪取作業

能再請教您,當方法2在VPN回線時,會有什麼影響嗎?或是,應該做什麼行為才能維持AD的正常運作嗎?
再次感謝您如此詳細而用心的解答。

raytracy iT邦大神 1 級 ‧ 2019-11-25 09:54:06 檢舉

方法 2. 不適合用在臨時斷線的狀況, 她只適用在原本的 FSMO 角色已經永遠無法連線的情境, 因為一旦奪取 FSMO, 舊的 FSMO 將永遠下線, 而且舊的 DC 也必須銷毀不能再上線, 否則 AD 會大亂...

方法 1. 是比較合適的作法, 但規模太小的分公司可能投資太大; 最便宜的方式還是: 建一條不容易斷線的 VPN + 適當的線路備援機制 (通常我可以容忍斷線 5 分鐘....), 或者設法盡速恢復連線...

tibandyli iT邦新手 2 級 ‧ 2019-11-25 11:49:20 檢舉

瞭解,再次感謝Ray大師的指教。

froce iT邦大師 3 級 ‧ 2019-11-26 09:30:49 檢舉

想請問雷神,有什麼文件可以讓小白從5大角色是啥開始K的?
有空的話想來精進一下。

raytracy iT邦大神 1 級 ‧ 2019-11-26 09:48:56 檢舉

(你還自稱小白喔? 那別人不就白到透明了....)

微軟的文件都散落在各處角落內, 要自己去撈出來看, 建議可以先從這兩篇基礎開始:

Active Directory FSMO roles in Windows

FSMO placement and optimization on Active Directory domain controllers

剩下的, 通常要再用您想了解的關鍵字, 或是問題描述去查詢, 然後從搜尋結果中, 翻找出適合閱讀的資訊....

專業技術文

tibandyli iT邦新手 2 級 ‧ 2019-11-28 11:13:11 檢舉

Ray大大 我試著在測試環境裡重建與驗証,同樣2site內均有2部dc且為gc,當forward斷線(模擬vpn斷線),沒有fsmo site的新pc join domain跟新建帳戶的登入都正常。有fsmo site將fsmo關機後,剩下一部gc,也還是可以提供pc join domain以及新舊帳戶登入的服務。

這個跟上面的結論不一樣...思緒又打結了... = =

0
Neo Chen
iT邦新手 5 級 ‧ 2019-11-22 09:55:10

強制複寫試試
repadmin /syncall
可以找到有沒有複寫錯誤
也要確認五大腳色都活得好好的..

tibandyli iT邦新手 2 級 ‧ 2019-11-22 11:23:57 檢舉

謝謝Neo
確認過斷線前/後的同步都是正常的
repadmin /showrepl 或 repadmin /showrepl * 都能正常抄寫
repadmin /syncall 也沒有錯誤

我要發表回答

立即登入回答