8.2 使用 OpenSLP 或 hosts.nds 解析網路樹名稱

在安裝 Identity Vault 基礎架構之前,伺服器應該能夠透過某種方法 (服務或指定的檔案) 將 Identity Vault 中的網路樹名稱解析成伺服器轉介。NetIQ 建議使用服務位置通訊協定 (SLP) 服務來解析網路樹名稱。先前版本的 eDirectory 的安裝程式中包含了 OpenSLP。但從 eDirectory 8.8 起,安裝程式中不再包含 OpenSLP。您必須單獨安裝 SLP 服務,或使用 hosts.nds 檔案。如果您使用 SLP 服務,該服務的目錄代理程式 (SLPDA) 必須穩定。

這個單元將提供下列資訊:

8.2.1 使用 hosts.nds 檔案解析網路樹名稱

hosts.nds 檔案是一個靜態查閱表,Identity Vault 應用程式使用它來搜尋 Identity Vault 分割區和伺服器。當網路中沒有 SLP DA 時,它可以協助您避免 SLP 多路廣播延遲。對於每個網路樹或伺服器,您必須在 hosts.nds 檔案內單獨一行中指定以下資訊:

  • 伺服器名稱或網路樹名稱:網路樹名稱應以尾隨點 (.) 結尾。

  • 網際網路位址:可以是 DNS 名稱,也可以是 IP 位址。請不要使用 localhost

  • 伺服器連接埠:選填資訊,透過一個冒號 (:) 附加在網際網路位址的後面。

除非本地伺服器在監聽非預設 NCP 連接埠,否則不需要在該檔案中包含一個本地伺服器項目。

若要設定 hosts.nds 檔案:

  1. 建立新的 hosts.nds 檔案或開啟一個現有檔案。

  2. 新增以下資訊:

    partition_name.tree_name. host_name/ip-addr:port
    server_name dns-addr/ip-addr:port
    

    例如:

    # This is an example of a hosts.nds file:
    # Tree name Internet address/DNS Resolvable Name
      CORPORATE. myserver.mycompany.com
      novell.CORPORATE. 1.2.3.4:524
    
    # Server name Internet address
      CORPSERVER myserver.mycompany.com:524
    
  3. (選擇性) 如果您日後決定使用 SLP 來解析網路樹名稱,並確定 Identity Vault 網路樹在網路中可用,請將以下文字新增至 hosts.nds 檔案:

    /usr/bin/slptool findattrs services:ndap.novell///(svcname-ws==[treename or *])"
    

    例如,若要搜尋其 svcname-ws 屬性與 SAMPLE_TREE 值相符的服務,請輸入以下指令:

    /usr/bin/slptool findattrs services:ndap.novell///(svcname-ws==SAMPLE_TREE)"
    

    附註:請在安裝 SLP 和 Identity Vault 之後執行此動作。

    如果您的某個服務的 svcname-ws 屬性註冊為 SAMPLE_TREE,則輸出將類似於 service:ndap.novell:///SAMPLE_TREE。否則,您將不會收到輸出回應。

8.2.2 瞭解 OpenSLP

OpenSLP 是 IETF Request-For-Comments (RFC) 2608 中所述 IETF 服務位置通訊協定版本 2.0 標準的開放原始碼執行方式。

OpenSLP 原始碼提供的介面是 RFC 2614 中所述的、以程式設計方式存取 SLP 功能的另一種 IETF 標準執行方式。

若要全面瞭解 SLP 的工作原理,最好是閱讀這些文件並加以融會貫通。它們未必通俗易懂,但若要在內部網路中正確設定 SLP 組態,您必須瞭解這些知識。

如需 OpenSLP 專案的詳細資訊,請造訪 OpenSLPSourceForge 網站。OpenSLP 網站上的多個文件包含了實用組態秘訣。其中的許多文件在本文件發佈時並不完整。

本節包含關於 SLP 的用途,以及它與 Identity Vault 具有何種關聯的以下論述:

NetIQ 服務位置提供者

NetIQ 版本的 SLP 對 SLP 標準進行了一定的變動,以提供更穩健的服務通告環境,但這也在一定程度上降低了延展性。

例如,為了改進服務通告架構的延展性,您可以限制子網路上廣播或多路廣播的封包數。SLP 規格透過對服務代理程式和使用者代理程式施加目錄代理程式查詢方面的限制來管理此問題。第一個探查到的為所需範圍提供服務的目錄代理程式,就是服務代理程式 (因而也就是本地使用者代理程式) 要為將來對該範圍發出之所有要求使用的代理程式。

實際上,NetIQ SLP 執行方式會掃描它所知道的所有目錄代理程式以取得查詢資訊。它認為來回一次花費 300 毫秒時間太長,如果這樣,它可以在 3 到 5 秒內掃描 10 個伺服器。如果在網路中正確設定了 SLP,並且 OpenSLP 認為事實上針對 SLP 流量正確設定了網路,則不需要進行此掃描。OpenSLP 的回應逾時值大於 NetIQ SLP 服務提供者的逾時值,並且它會將目錄代理程式的數量限制為做出回應的第一個代理程式,不管該代理程式的資訊是否完整準確。

使用者代理程式

使用者代理程式 (UA) 以與某個應用程式連結之靜態或動態文件庫的實體形式存在。它允許該應用程式查詢 SLP 服務。使用者代理程式的任務是提供一個程式設計介面,供用戶端查詢服務,以及供服務通告自身。使用者代理程式將聯絡目錄代理程式,以查詢位於指定範圍內、屬於指定服務類別的已註冊服務。

使用者代理程式遵循某種演算法,來取得將要向其傳送查詢的目錄代理程式位址。在取得指定範圍的目錄代理程式 (DA) 位址後,對於該範圍,它們將會一直使用該位址,直到該目錄代理程式不再做出回應,到那時,使用者代理程式將取得該範圍的另一個 DA 位址。使用者代理程式透過以下方式查找指定範圍的目錄代理程式位址:

  1. 檢查以確定目前要求的通訊端識別指標是否已連接到指定範圍的 DA。如果該要求正好是一個多部分要求,則表示可能已存在該要求的快取連接。

  2. 檢查它的本地已知 DA 快取中有無與指定範圍相符的 DA。

  3. 向本地服務代理程式 (SA) 確認有無屬於指定範圍的 DA (並將新位址新增至快取中)。

  4. 向 DHCP 查詢透過網路設定且與指定範圍相符的 DA 位址 (並將新位址新增至快取中)。

  5. 在已知的連接埠上多路廣播 DA 探查要求 (並將新位址新增至快取中)。

指定的範圍為「default」(如果未指定)。也就是說,如果未在 SLP 組態檔案中靜態定義任何範圍,並且未在查詢中指定任何範圍,那麼,使用的範圍將是「default」一字。此外,還應注意,Identity Vault 永遠不會在其註冊中指定範圍。如果存在靜態設定的範圍,在指定範圍不存在的情況下,該靜態設定的範圍將是所有本地 UA 要求和 SA 註冊的預設範圍。

服務代理程式

服務代理程式在主機機器上以某個獨立程序的實體形式存在。對於 Windows,slpd.exe 將做為本地機器上的服務執行。使用者代理程式透過向已知連接埠上的迴路位址傳送訊息來查詢本地服務代理程式。

服務代理程式的任務是為已將自身註冊到 SLP 的本地服務提供永久的儲存和維護點。服務代理程式本質上所做的工作是維護已註冊本地服務的記憶體內部資料庫。事實上,除非存在本地 SA,否則服務無法註冊到 SLP。用戶端可以探查僅包含 UA 文件庫的服務,但註冊時需要 SA,主要原因是 SA 必須定期重新宣示已註冊服務的存在,以確保將其註冊到監聽目錄代理程式。

服務代理程式透過以下方式將 DA 探查要求直接傳送至潛在的 DA 位址,來查找和快取目錄代理程式及其支援的範圍清單:

  1. 檢查所有靜態設定的 DA 位址 (並將新位址新增至 SA 的已知 DA 快取中)。

  2. 要求獲取來自 DHCP 的 DA 和範圍清單 (並將新位址新增至 SA 的已知 DA 快取中)。

  3. 在已知的連接埠上多路廣播 DA 探查要求 (並將新位址新增至 SA 的已知 DA 快取中)。

  4. 接收 DA 定期廣播的 DA 通告封包 (並將新位址新增至 SA 的已知 DA 快取中)。

使用者代理程式永遠會先查詢本地服務代理程式,這一點非常重要,因為本地服務代理程式的回應將決定使用者代理程式是否要繼續執行下一個探查階段 (在本案例中為 DHCP,請參閱使用者代理程式 中的步驟 3步驟 4)。

目錄代理程式

目錄代理程式的任務是提供所通告服務長期持久的快取,以及為使用者代理程式提供一個存取點來查閱服務。做為快取,DA 將會監聽 SA 以通告新服務,並會快取相應通知。不久後,DA 的快取就會變得更充實完整。目錄代理程式使用過期演算法來使快取項目過期。一個目錄代理程式啟動時,會從永久儲存 (通常是硬碟) 中讀取其快取,然後開始根據演算法使項目過期。當有新的 DA 啟動或某個快取已被刪除時,之前的 DA 會偵測到此狀況,並向所有監聽 SA 發出傾印其本地資料庫的特殊通知,以使該 DA 能夠快速建立其快取。

在不存在任何目錄代理程式的情況下,UA 將會採用 SA 可以回應的一般多路廣播查詢,以與 DA 建立快取時所用的大致相同的方式,構建所要求服務的清單。此類查詢傳回的服務清單並不完整,與 DA 提供的服務清單相比,該清單的當地化程度要高得多,當網路中設定了多路廣播過濾 (許多網路管理員為了將廣播和多路廣播局限於本地子網路會進行此設定) 時尤其如此。

總而言之,一切都取決於使用者代理程式要在其中尋找給定範圍的目錄代理程式。

8.2.3 為 Identity Vault 設定 SLP

%systemroot%/slp.conf 檔案中的以下參數用於控制目錄代理程式探查:

net.slp.useScopes = comma-delimited scope list
net.slp.DAAddresses = comma-delimited address list
net.slp.passiveDADetection = <"true" or "false">
net.slp.activeDADetection = <"true" or "false">
net.slp.DAActiveDiscoveryInterval = <0, 1, or a number of seconds>
useScopes

指示 SA 將通告的範圍,以及當服務或用戶端應用程式執行的註冊或查詢中不存在特定範圍時,要對其執行查詢的範圍。由於 Identity Vault 一律會通告到預設範圍並從預設範圍查詢,此清單將會成為所有 Identity Vault 註冊和查詢的預設範圍清單。

DAAddresses

代表 DA 點分式十進位 IP 位址的逗號分隔清單,這些位址應優先於所有其他位址。如果這個包含已設定 DA 的清單不支援某個註冊或查詢的範圍,則 SA 和 UA 將採用多路廣播 DA 探查,除非此類探查被停用。

passiveDADetection

依預設,其值為 True。如果進行了相應的設定,目錄代理程式將定期透過已知連接埠在子網路上廣播其存在性。這些封包稱為 DAAdvert 封包。如果將此選項設定為 False,SA 將會忽略所有廣播 DAAdvert 封包。

activeDADetection

依預設,其值為 True。此參數允許 SA 定期廣播要求,以便所有 DA 都可使用導向 DAAdvert 封包做出回應。導向的封包不會廣播,而是做為這些要求的回應直接傳送給 SA。如果將此選項設定為 False,SA 將不會定期廣播 DA 探查要求。

DAActiveDirectoryInterval

代表一個 tri-state 參數。預設值為 1,該特殊值表示 SA 在啟始化時只應發出一個 DA 探查要求。將此選項設定為 0 相當於將 activeDADetection 選項設定為 false。任何其他值則為兩次探查廣播間隔的秒數。

正確使用這些選項可確保合理使用網路頻寬來進行服務通告。事實上,預設設定就能最佳化平均水準之網路的延展性。