[已經解決]一個關於MS AD + Bind DNS的棘手問題--SRV記錄
SRV 記錄本是一個域名系統 (DNS) 資源記錄,用於標識承載特定服務的計算機。SRV 資源記錄用於定位 Active Directory 的域控制器。要驗證域控制器的 SRV 定位器資源記錄。在這個記錄中,很多是用「下劃線(_)組成」。
在運行 Microsoft DNS 服務的伺服器上安裝 Active Directory 后,可以使用 DNS 管理控制台來驗證是否為每個 DNS 區域都創建了適當的區域和資源記錄。
Active Directory 在以下文件夾中創建自己的 SRV 記錄,其中 Domain_Name 為域名:
Forward Lookup Zones/Domain_Name/_msdcs/dc/_sites/Default-First-Site-Name/_tcp Forward Lookup Zones/Domain_Name/_msdcs/dc/_tcp
在這些位置,將顯示以下服務的 SRV 記錄:
_kerberos
_ldap
我們可以看到,這些記錄都有不少的「下劃線」,同時Microsoft DNS也都認可這種格式。
但在使用非 Microsoft DNS (如Linux Bind 9.3.2) 的伺服器來支持 Active Directory,麻煩卻來了。因為在這個版本中,所有記錄中不得含有「下劃線(_)」,如有記錄有下劃線時,都識為非法記錄,導致連Named服務都啟動不了,出現提示" Bad ower name (check-name)"。在named.conf中加上"check-name master ignore"后,Named服務倒是啟動了,可是忽略所有記錄中的錯誤,也包括帶有"下劃線"的這些記錄。這樣一台,AD 的 SRV記錄根本沒有註冊到DNS中,客戶端PC也根本找不到「域/域控制器」。怎麼辦?難道要放棄LINUX BIND DNS而改用Microsoft DNS? 那位大蝦有什麼解決方案啊?
註:BIND 9.2.2 可能識別帶有「下劃線」的記錄。總不可以升級后的版本不可以與Microsoft AD一起用,沒這個道理啊,如果這樣的話。那Linux以後如何混得下去哦!一定不可能。
BIND 9.2.2 中與AD有關的一些SRV記錄(所有域名為例子,請誤對照).
$ORIGIN dc._msdcs.bel-wx.wuxi.suntech.com.
$ORIGIN _tcp.Default-First-Site-Name._sites.dc._msdcs.bel-wx.wuxi.suntech.com.
_kerberos SRV 0 100 88 bdc-belwx.bel-wx.wuxi.suntech.com.
SRV 0 100 88 pdc-belwx.bel-wx.wuxi.suntech.com.
_ldap SRV 0 100 389 bdc-belwx.bel-wx.wuxi.suntech.com.
SRV 0 100 389 pdc-belwx.bel-wx.wuxi.suntech.com.
$ORIGIN dc._msdcs.bel-wx.wuxi.suntech.com.
$ORIGIN _tcp.dc._msdcs.bel-wx.wuxi.suntech.com.
_kerberos SRV 0 100 88 bdc-belwx.bel-wx.wuxi.suntech.com.
SRV 0 100 88 pdc-belwx.bel-wx.wuxi.suntech.com.
_ldap SRV 0 100 389 bdc-belwx.bel-wx.wuxi.suntech.com.
SRV 0 100 389 pdc-belwx.bel-wx.wuxi.suntech.com.
$ORIGIN _msdcs.bel-wx.wuxi.suntech.com.
_ldap._tcp.d03682fd-a1b0-4612-a2ff-ae435596d995.domains SRV 0 100 389 bdc-belwx.bel-wx.wuxi.suntech.com.
SRV 0 100 389 pdc-belwx.bel-wx.wuxi.suntech.com.
gc A 192.168.140.75
A 192.168.140.217
$ORIGIN gc._msdcs.bel-wx.wuxi.suntech.com.
_ldap._tcp.Default-First-Site-Name._sites SRV 0 100 3268 bdc-belwx.bel-wx.wuxi.suntech.com.
_ldap._tcp SRV 0 100 3268 bdc-belwx.bel-wx.wuxi.suntech.com.
$ORIGIN _msdcs.bel-wx.wuxi.suntech.com.
_ldap._tcp.pdc SRV 0 100 389 bdc-belwx.bel-wx.wuxi.suntech.com.
......
解決方法見5樓,改天整一個完整的,與大家分享.
[ 本帖最後由 windychan 於 2008-7-14 22:04 編輯 ]
《解決方案》
BIND9是支持SRV記錄的,起碼9.4.2是可以的。SRV記錄是在RFC2782中定義。name欄位帶下劃線「_」是符合定義的。
《解決方案》
原帖由 diancn 於 2008-6-19 13:57 發表 http://bbs.chinaunix.net/images/common/back.gif
BIND9是支持SRV記錄的,起碼9.4.2是可以的。SRV記錄是在RFC2782中定義。name欄位帶下劃線「_」是符合定義的。
---->SRV記錄是在RFC2782中定義。name欄位帶下劃線「_」是符合定義的。這點我上知道,但MS AD有的SRV 記錄中有「下劃線」,這是不可改變的事實啊。
我試試9.4.2吧!
《解決方案》
看來ms的ad創建的SRV 記錄 並不完全遵從RFC, 不知在使用時是否可以嚴格遵從RFC來使用下劃線,這樣來保證互通。 呵呵,對ms ad不太了解。
《解決方案》
網上這樣講的。回上班再試試
Microsoft Windows 2000使用一個稱為"_msdcs"來存放動態目錄數據。儘管這種子域不會與合法的主機名產生不一致,
但是也使得在子域中存放非法的主機名成為可能。這種主機名的使用默認是被BIND拒絕的。
動態目錄希望在_msdcs中有"全局目錄(global catalog)"(例如,gc._msdcs.example.com),這默認是拒絕的。為了解
決此問題,我們推薦動態目錄設為獨立的域(例如,"_msdcs.example.com")並配置成不檢查非法的主機名。這應該是合理
的,因為Window 2000伺服器創建這些數據,而且不應該會與其它希望訪問這些數據的Windows 2000機器產生不一致問
題。
例如,
zone "_msdcs.example.com" {
type master;
file "_msdcs.example.db";
check-names ignore;
allow-update { localnets; };
};
《解決方案》
確認5樓的這種方案
終於解決了BIND+ MS AD的問題.改天整出來與大家共享.
《解決方案》
原帖由 windychan 於 2008-7-14 22:02 發表 http://bbs.chinaunix.net/images/common/back.gif
終於解決了BIND+ MS AD的問題.改天整出來與大家共享.
收藏此貼,等待樓主整理更新
《解決方案》
收藏了
《解決方案》
我看了半天,貌似5樓沒什麼意義。
樓主想要實現什麼?用bind替換 ms域dns?
那麼 file "_msdcs.example.db" 的內容從何而來?
另外 一個ms域dns 的 master zone "_msdcs.example.com" 如何才能同步到bind9以上的dns 的 slave zone 中?
從ms的zone同步數據需要key,樓主如何通過認證的?