Ubuntu+Samba4搭建企业级AD域控实战指南
1. 项目概述
在混合操作系统环境中,Windows Active Directory(AD)域控服务一直是企业IT基础设施的核心组件。但你知道吗?其实完全可以用Ubuntu Server+Samba4的组合来搭建一个功能完整的AD域控制器。我最近就在生产环境部署了一套,实测支持Windows 10/11客户端无缝加入域,组策略、DNS、Kerberos认证等企业级功能全部可用。
这个方案特别适合:
- 预算有限但需要AD服务的中小企业
- 需要与Windows域集成的Linux运维环境
- 想摆脱Windows Server授权费用的技术团队
2. 环境准备与依赖安装
2.1 系统要求建议
我选用的是Ubuntu Server 22.04 LTS,长期支持版本更稳定。硬件配置根据用户量决定:
- 50人以下:2核CPU/4GB内存/50GB存储
- 50-200人:4核CPU/8GB内存/100GB存储
- 务必使用静态IP,DNS指向自己(后面会配置)
重要提示:虚拟机部署时,务必关闭"时间同步"功能,让域控自己管理时间,否则会导致Kerberos认证失败。
2.2 基础软件安装
先更新系统并安装必要组件:
sudo apt update && sudo apt upgrade -y sudo apt install samba winbind krb5-user krb5-config libpam-winbind libnss-winbind acl attr -y安装过程中会提示配置Kerberos:
- 默认realm建议写成大写域名(如EXAMPLE.COM)
- KDC和admin server填写本机FQDN
- 其他保持默认即可
3. Samba AD域控配置实战
3.1 初始化域控配置
关键命令就这一条:
sudo samba-tool domain provision \ --use-rfc2307 \ --realm=EXAMPLE.COM \ --domain=EXAMPLE \ --adminpass='YourComplexP@ssw0rd' \ --server-role=dc \ --dns-backend=SAMBA_INTERNAL参数说明:
--use-rfc2307:启用Unix属性扩展realm/domain:必须与Kerberos配置一致adminpass:至少包含大小写字母、数字、特殊字符dns-backend:用Samba内置DNS服务
3.2 关键配置文件调整
编辑/etc/samba/smb.conf确认包含:
[global] dns forwarder = 8.8.8.8 idmap_ldb:use rfc2307 = yes template shell = /bin/bash template homedir = /home/%U然后启动服务:
sudo systemctl unmask samba-ad-dc sudo systemctl start samba-ad-dc sudo systemctl enable samba-ad-dc4. 客户端加入域实操
4.1 Windows客户端加入
- 确保客户端DNS指向Samba服务器
- 计算机属性 → 更改设置 → 域 → 输入域名(如example)
- 用域管理员账号(administrator@example.com)验证
加入成功后建议重启两次,确保组策略完全应用。
4.2 Linux客户端配置
安装必要软件:
sudo apt install samba-client krb5-user libpam-krb5 -y然后执行:
sudo realm join --user=administrator EXAMPLE.COM验证是否成功:
kinit administrator@EXAMPLE.COM klist # 应显示获取的TGT票据5. 高频问题排错指南
5.1 时间同步问题
症状:客户端无法认证,日志出现"Clock skew too great" 解决:
sudo apt install ntp sudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd sudo systemctl enable ntp sudo systemctl start ntp5.2 DNS解析失败
检查工具:
host -t SRV _ldap._tcp.example.com host -t SRV _kerberos._udp.example.com若无返回,检查samba_dnsupdate服务是否运行。
5.3 组策略应用异常
在Windows客户端执行:
gpupdate /force rsop.msc # 查看实际应用的策略Samba侧需确保/var/lib/samba/sysvol权限正确:
sudo chmod 0755 /var/lib/samba/sysvol sudo chown -R root:root /var/lib/samba/sysvol6. 生产环境优化建议
- 备份策略:定期备份
/var/lib/samba/private和/etc/samba目录 - 监控指标:
sudo samba-tool dbcheck sudo samba-tool ntacl get /var/lib/samba/sysvol - 密码策略调整:
sudo samba-tool domain passwordsettings set \ --complexity=on \ --min-pwd-length=8 \ --min-pwd-age=1 \ --max-pwd-age=90
我在实际部署中发现,当用户超过100人时,建议将/var/lib/samba挂载到独立SSD分区,能显著提升认证速度。另外,每月执行一次samba-tool ntacl sysvolcheck可以预防ACL权限漂移问题。
