最近公司的電腦一直遇到靈異現象,常常發生加入 AD 的電腦出現信任問題,查了 EventLog 也去 Google 了網路相關資料,為了產生新的 SID,sysprep 也跑了,這靈異事件還是會不定時發生。索性提早進行遷移 AD 到 Samba 的計劃,至少在除錯上,環境會比較熟悉… 以下操作皆在 Debian Stretch 下進行,用 Ubuntu 應該也是差不多的步驟…

安裝相關套件

先安裝相關套件,並把相關的服務停止並關閉:

$ sudo apt install samba krb5-config winbind smbclient -y
$ sudo systemctl stop smbd nmbd winbind
$ sudo systemctl disable smbd nmbd winbind
$ sudo systemctl mask smbd nmbd winbind

smbd.service 是 standalone 的 samba 服務,取而代之的是 unmask samba-ad-dc 的 service,等做完後面的 domain provisioning 之後就可以啟動:

$ sudo systemctl unmask samba-ad-dc
$ sudo systemctl enable samba-ad-dc

設定

在開始往下跑前要做兩件事:

  1. 要確認 /etc/hosts 可以正確的解析這台機器的 FQDN 與 hostname 。
  2. 先把 smb.conf 搬走,讓後面的指令重新產生。如果不搬走會報錯:
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

上述兩點確認沒問題之後,接下來就是使用 samba-tool 來進行後續的操作。先看有哪些參數可以用:

$ sudo samba-tool domain provision --help

阿斯… 參數好多阿,還是使用互動介面建立 domain controller 吧:

$ sudo samba-tool domain provision

在互動介面下,有幾個問題要填:

  1. realm:通常就是你的完整 domain name,比方 PYLABS.ORG)
  2. domain:這個好像是為了相容 NT4 的設定,我會填入 PYLABS)
  3. dns forwarder:如果你跟我一樣選擇用預設值 SAMBA_INTERNAL 作為預設的 DNS Backend,那要額外指定一個 fowarder 作為對外查詢或是 recursive query(不知道這啥?去補一下 DNS 基礎知識吧),讓它轉送。我喜歡這樣的設定,因為可以讓我的 Samba AD 功能單純化,然後我可以弄一台 BIND DNS 搭配 views 來做內外的查詢分離。如果你不知道這要設啥… 欸,你就填入 “8.8.8.8 8.8.4.4” 吧(不含引號)

其他的用預設值,跑完之後,將新產生的 kerberos 設定檔做個 soft link 至 /etc 下:

$ sudo mv /etc/krb5.conf /etc/krb5.conf.orig
$ sudo ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf

然後設定 /etc/resolv.conf 指向到自己的 ip 後,就可以啟動相關服務測試一下了:

$ sudo systemctl start samba-ad-dc

測試一下,沒有報錯的話就是 ok 惹:

$ sudo smbclient -L localhost -U%
$ sudo samba-tool domain level show

建立使用者帳號吧,比方建立一個 user1 帳號:

$ sudo samba-tool user create user1

到這個階段,就可以隨便找一台 Windows,把 DNS 指向到這台 Samba 機器上,然後加入網域。如果可以使用 user1 帳號登入,那就代表基本功能都正常了。

起手式大概是這樣… 這是個巨大的坑阿 XD

參考資料

4 comments on “安裝設定 Samba 4 作為 AD Domain Controller

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *