三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Ubuntu+Samba4搭建企业级AD域控实战指南

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-dc

4. 客户端加入域实操

4.1 Windows客户端加入

  1. 确保客户端DNS指向Samba服务器
  2. 计算机属性 → 更改设置 → 域 → 输入域名(如example)
  3. 用域管理员账号(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 ntp

5.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/sysvol

6. 生产环境优化建议

  1. 备份策略:定期备份/var/lib/samba/private/etc/samba目录
  2. 监控指标
    sudo samba-tool dbcheck sudo samba-tool ntacl get /var/lib/samba/sysvol
  3. 密码策略调整
    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权限漂移问题。

← 返回列表