作者:獨筆孤行
官網: http://anyamaze.com
公眾號:雲實戰
前言
AD域(Active Directory)是Windows伺服器的活動目錄,在目錄中可以收錄公司的電腦賬號,使用者賬號,組等資訊,以提供更好的安全性和更便捷的管理能力。域的最大好處之一就是其安全性 – 所有賬號不會在本地計算機認證,而是連線到域控制器尋求認證。
CentOS7加入AD域的方法很多,常用的有winbind和realm兩種。winbind是一種成熟的方案,相容多種作業系統版本,但配置步驟繁瑣複雜,且易出錯。realm是一種非常簡便的配置方案,在新版本系統中使用較多,在centos6和更低版本系統使用較少。
一、環境資訊
AD域資訊
域名:anyamaze.com
主機名:myad
IP : 192.168.111.137
系統版本:windows server 2016
linux客戶端資訊
主機名:mynode1.anyamaze.com
IP: 192.168.111.141
二、安裝過程
(一)AD域伺服器部署
1.部署windows Server2016作業系統
2.選擇“伺服器管理器—管理—新增角色和功能—基於角色或基於功能的安裝—Active Directory域服務”根據提示依次安裝
3.修改主機名,將伺服器提示為域控伺服器
(二)CentOS7加入域配置
1.安裝相關包
yum install -y samba samba-common samba-client samba-winbind* krb5-workstation ntp bind-utils
2.設定服務開機自啟動
systemctl enable smb
systemctl enable winbind
3.設定主機名
hostnamectl set-hostname mynode1.anyamaze.com
4.配置域名解析
192.168.111.137 myad myad.anyamaze.com
192.168.111.141 mynode1 mynode1.anyamaze.com
5.配置DNS解析
配置網路卡DNS解析,解析地址為AD域伺服器IP,如需其它DNS,可放在AD域伺服器IP之後
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
...
DNS1=192.168.111.137
#重啟網路卡,使配置生效
systemctl restart network
檢查/etc/resolv.conf檔案內容
vim /etc/resolv.conf
search anyamaze.com
nameserver 192.168.111.137
需確保resolve.conf檔案DNS解析內容為AD域伺服器,如果需要其它DNS,可向後追加。
檢測解析是否生效
ping anyamaze.com
nslookup anyamaze.com
注意:確保ping的返回ip為AD域伺服器ip,確保nslookup解析域名的伺服器IP是AD域伺服器IP。如果ping不通域名或解析的地址不是AD域伺服器IP,需要檢查DNS是否正確,檢查AD域伺服器防火牆是否關閉。
6.修改配置檔案
vi /etc/nsswitch.conf
...
passwd: files winbind sss
shadow: files winbind sss
group: files winbind sss
配置內容加入winbind,且winbind在sss之前
7.修改/etc/krb5.conf
[libdefaults]
......
default_realm = ANYAMAZE.COM
......
[realms]
ANYAMAZE.COM = {
kdc = 192.168.111.137
}
[domain_realm]
anyamaze.com = ANYAMAZE.COM
.anyamaze.com = ANYAMAZE.COM
8.修改/etc/samba/smb.conf
[global]
workgroup = ANYAMAZE
password server = myad.anyamaze.com
realm = ANYAMAZE.COM
security = ads
idmap config * : range = 16777216-33554431
template shell = /bin/bash
kerberos method = secrets only
winbind use default domain = false
winbind offline logon = false
encrypt passwords = yes
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
global中必須保證以上引數內容配置正確,其它引數可保持預設配置。如果linux系統有圖形化介面,也可透過setup命令,完成步驟7和步驟8的配置內容,效果一樣。
檢查配置是否正確
testparm /etc/samba/smb.conf
9.編輯檔案/etc/pam.d/system-auth和/etc/pam.d/password-auth,尾部追加session required pam_mkhomedir.so 內容
vi /etc/pam.d/system-auth
......
session required pam_mkhomedir.so
vi /etc/pam.d/password-auth
......
session required pam_mkhomedir.so
10.加入AD域
net ads join -U administrator
輸入正確的administrator使用者密碼
11.重啟服務
systemctl restart smb
systemctl restart winbind
12.檢視是否加入域成功
wbinfo -t
返回結果為checking the trust secret for domain ANYAMAZE via RPC calls succeeded說明加入域成功
加入成功後,去AD域伺服器可查到到剛剛加入域的機器
13.常規域指令
# 檢視域資訊
net ads info
# 檢視域連線狀態
wbinfo -t
# 檢視域組
wbinfo -g
# 檢視域使用者
wbinfo -u
#檢視域使用者屬性id
id user1@anyamaze.com
(三)常見報錯:
報錯內容1:
[root@mynode1 ~]# id user1
id: user1: no such user
[root@mynode1 ~]# id user1@anyamaze.com
id: user1@anyamaze.com: no such user
原因:1.透過wbinfo -t檢查是否加入域成功;2.AD域使用者沒有配置uid和gid,主組沒有配置gid,需要去AD域上進行配置
報錯內容2:
[root@mynode1 ~]# net ads join -U administrator
Enter administrator's password:
Using short domain name -- ANYAMAZE
Joined 'MYNODE1' to dns domain 'anyamaze.com'
No DNS domain configured for mynode1. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
原因:DNS更新失敗,但不影響使用,可以加--no-dns-updates遮蔽,如:net ads join -U administrator --no-dns-updates。
關於原因官網 https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member 有詳細解釋,但是按照官網的資訊調整hosts後,依然沒有達到效果。
報錯內容3:
[root@mynode1 ~]# wbinfo -t
could not obtain winbind interface details: WBC_ERR_WINBIND_NOT_AVAILABLE
could not obtain winbind domain name!
checking the trust secret for domain (null) via RPC calls failed
failed to call wbcCheckTrustCredentials: WBC_ERR_WINBIND_NOT_AVAILABLE
Could not check secret
原因:加入域失敗,按照操作步驟檢查dns解析以及相關配置過程
報錯內容4:
[root@mynode1 ~]# net ads leave -U administrator
Enter administrator's password:
kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) failed for ldap/myad.anyamaze.com with user[administrator] realm[ANYAMAZE.COM]: An invalid parameter was passed to a service or function.
Deleted account for 'MYNODE1' in realm 'ANYAMAZE.COM'
原因:linux和AD域伺服器時間相差較大,必須保證linux客戶端和AD域時間一致
參考連線:
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member
https://www.freesion.com/article/44621398696/
https://www.server-world.info/en/