这一节的Samba4 AD DC 架构系列文章,我们将会讨论如何把 Windows 10 系统的电脑添加到 Samba4 域环境中,以及如何在 Windows 10 系统下管理域环境。
一旦 Windows 10 系统加入到 Samba4 AD DC ,我们就可以在 Windows 10 系统中创建、删除或者禁用域用户和组了,可以创建新的组织单元,创建、编辑和管理域策略,还可以管理 Samba4 域 DNS 服务。
上面所有的功能和其它一些复杂的与域管理相关的工作都可以通过 Windows 环境下的 RSAT 工具来完成—— Microsoft 远程服务器管理工具。
要求
1、 在 Ubuntu 系统上使用 Samba4 来创建活动目录架构(一)
2、 在 Linux 命令行下管理 Samba4 AD 架构(二)
***步:配置域时间同步
1、在使用 Windows 10 系统的 RSAT 工具来管理 Samba4 ADDC 之前,我们需要了解与活动目录相关的一个很重要的服务,该服务要求精确的时间同步。
在大多数的 Linux 发行版中,都由 NTP 进程提供时间同步机制。AD 环境默认允许***的时间差距是 5 分钟。
如果时间差距超过 5 分钟,你将会遇到各种各样的异常报错,最严重的会影响到 AD 用户、域成员服务器或共享访问等。
为了在 Ubuntu 系统中安装网络时间协议进程和 NTP 客户端工具,可执行以下命令:
- $ sudo apt-get install ntp ntpdate
在 Ubuntu 系统下安装 NTP 服务
2、下一步,修改 NTP 配置文件,使用一个离你最近的 NTP 服务地址列表替换默认的 NTP 池服务列表。
NTP 服务器地址列表可以从 NTP 地址库项目官方网站获取:http://www.pool.ntp.org/en/。
- $ sudo nano /etc/ntp.conf
在每一行 pool 前添加一个 # 符号以注释默认的服务器列表,并替换为适合你的 NTP 服务器地址,如下图所示:
- pool 0.ro.pool.ntp.org iburst
- pool 1.ro.pool.ntp.org iburst
- pool 2.ro.pool.ntp.org iburst
- # Use Ubuntu's ntp server as a fallback.
- pool 3.ro.pool.ntp.org
在 Ubuntu 系统下配置 NTP 服务
3、此时,先不要关闭该文件。移动光标到文件顶部,在 driftfile 参数后面添加下面一行内容。该设置是为了让客户端查询该服务时使用 AD 的 NTP 签署请求。
- ntpsigndsocket /var/lib/samba/ntp_signd/
使用 NTP 来同步 AD
4、***,移动光标到文件底部并添加如下一行内容,如截图所示,仅允许网络客户端查询该服务器上的时间。
- restrict default kod nomodify notrap nopeer mssntp
限制 NTP 服务的查询客户端
5、设置完成之后,保存并关闭 NTP 配置文件,为了让 NTP 服务读取 ntp_signed 目录,需要授予 NTP 服务合适的权限。
以下是 Samba NTP socket 的系统路径。之后,重启 NTP 服务以应用更改,并使用 netstat 命令与grep 过滤相接合来检查 NTP 服务是否正常。
- $ sudo chown root:ntp /var/lib/samba/ntp_signd/
- $ sudo chmod 750 /var/lib/samba/ntp_signd/
- $ sudo systemctl restart ntp
- $ sudo netstat –tulpn | grep ntp
给 NTP 服务授权
使用 ntpq 命令行工具来监控 NTP 进程,加上 -p 参数来显示摘要信息。
- $ ntpq -p
监控 NTP 服务器池
第二步:处理 NTP 时间同步异常问题
6、有时候 NTP 进程在尝试与上游 ntp 服务端同步时间的计算过程中会卡住,导致客户端使用 ntpdate 工具手动强制同步时间时报如下错误:
- # ntpdate -qu adc1
- ntpdate[4472]: no server suitable for synchronization found
NTP 时间同步异常
ntpdate 命令加上 -d 调试选项:
- # ntpdate -d adc1.tecmint.lan
- Server dropped: Leap not in sync
NTP Server Dropped Leap Not in Sync
7、为了避免出现该问题,使用下面的方法来解决这个问题:在服务器上停止 NTP 服务,使用 ntpdate 客户端工具加上 -b 参数指定外部 peer 地址来手动强制同步时间,如下图所示:
- # systemctl stop ntp.service
- # ntpdate -b 2.ro.pool.ntp.org [你的 ntp peer]
- # systemctl start ntp.service
- # systemctl status ntp.service
强制 NTP 时间同步
8、当时间正确同步之后,启动服务器上的 NTP 服务,并且在客户端服务器上执行如下命令来验证 NTP 时间同步服务是否可用:
- # ntpdate -du adc1.tecmint.lan [你的 AD DC 服务器]
验证 NTP 时间同步
至此, NTP 服务应该已经工作正常了。