Domain-Name-System

在 Windows DNS 上註冊 linux 主機名

  • December 12, 2018

如何在 Windows 伺服器 DNS 中註冊 DHCP linux 客戶端的主機名?

我有一個小型企業混合網路:

  • DCHP Windows 工作站(主機名範例win1:)

    • 約10台機器
    • 機器在域上,沒有特殊配置。
  • DHCP Linux (Debian stretch) 工作站(主機名範例lin1:)

    • 約20台機器
    • sssd使用連接到域realm join
    • 可以在任何機器上使用 AD 憑據
    • /etc/nsswitch.conf包含hosts: files dns我認為意味著 linux 客戶端可以從 DNS 導入主機名
  • 以靜態 IP 執行 Windows Server 的 DHCP/DNS 伺服器

從任何機器我可以ping win1,但不能ping lin1告訴我們:

  • 所有機器都使用 DNS 正常(可以 ping win1
  • windows主機名自動註冊
  • linux主機名不會自動註冊

被拒絕的解決方案:

  • hosts:我們沒有靜態 IP,因此我不會手動維護hosts文件的主副本並在發布新的 DHCP 租約時分發它。
  • A向DNS添加記錄:同樣,我不想在發布新的 DHCP 租約時手動更新記錄。
  • avahi: windows 客戶端看不到 linux 客戶端。

我沒有嘗試過的事情:

  • likewise: 我寧願不要sssd像這樣從頭開始放棄和重新配置所有 20 台機器。但是,如果lw-register-dns可以解決問題並且不會與 衝突sssd,那麼這可能是一個解決方案。仍然覺得客戶端需要創建一個 cron-job 來修改 DNS 很奇怪,我最好限制 DNS 寫訪問。
  • winbind,似乎也sssd完全取代了。我嘗試了連結的建議,但在重新啟動客戶端的網路服務後沒有發現任何差異。
  • nmbd. 已經使用的工作站smbclient,他們真的需要成為成熟的 samba 伺服器嗎?
  • net ads dns register -P. 我需要訪問 DNS 以啟用不安全的更新。

所以最終的答案根本不在 linux-client 端,而是在 DHCP 配置上。

在“Windows Server 2016 Standard”上,我必須執行以下操作才能使其正常工作。

  1. 打開“DHCP”桌面應用程序

  2. 選擇 DNS 選項卡

  3. 展開代表您的域的節點

  4. 右鍵點擊“IPv4”

  5. 從上下文菜單中選擇“屬性”

  6. 勾選“根據以下設置啟用 DNS 動態更新:”

  7. 選擇“始終動態更新 DNS 記錄”

  8. 勾選“動態更新不請求更新的 DHCP 客戶端的 DNS 記錄”

結果不是立竿見影的。重新啟動機器並沒有強制更新。我在周五進行了更改,到週三所有 Linux 客戶端似乎都列在了 DNS 中。

我可以通過查看同一台伺服器上的“DNS 管理器”來確認添加內容。

/etc/nsswitch.conf包含hosts: files dns我認為意味著 linux 客戶端可以從 DNS 導入主機名

你所做的假設是不正確的。該行指示系統將如何嘗試查找您輸入的主機名或域名。例如,在 ping 域名時,或在瀏覽器中輸入 url 時。files指的/etc/hosts是您可以手動指定域到 ip 綁定的地方。dns指的是您的系統正在使用的 DNS 伺服器。因此,使用您的配置,如果您要輸入ping google.com系統將首先在 (/etc/hosts) 中查找 google.com 和關聯的 ip files,然後如果在/etc/hosts.

當 Windows 機器加入域時,它們成為受信任的資源。如果該服務安裝在域上並由 AD 管理,則在加入域時會為他們創建 DNS 記錄。要允許非 Windows 機器在 DNS 中註冊其主機名,必須將區域配置為允許更新。非 Windows 機器還需要在/etc/hostname文件中配置正確的域,以便它與您的 AD 環境的域名匹配。

引用自:https://serverfault.com/questions/943308