NAS接入AD域.md

QNAP NAS 命令行加入 Windows AD 域完整流程


📋 环境信息

项目
NAS IP10.240.30.222
域控 IP192.168.99.190
域名suitbim.com
NetBIOS 名称SUITBIM
域控主机名WIN-QAG6G63NI1O
域管理员administrator
域管理员密码act1veP@ss
域功能级别Windows2008R2Domain
域控操作系统Windows Server 2012 R2

第一阶段:基础环境准备

1. 启用 SSH 并登录 NAS

Web 界面操作:

  • 控制台 → 网络 & 文件服务 → Telnet/SSH
  • ✅ 允许 SSH 连接
  • 点击“应用”

SSH 登录:

ssh admin@10.240.30.222

2. 配置 DNS 指向域控

cat > /etc/resolv.conf << 'EOF'
nameserver 192.168.99.190
nameserver 114.114.114.114
search suitbim.com
EOF

验证 DNS 解析:

nslookup suitbim.com
nslookup WIN-QAG6G63NI1O.suitbim.com
nslookup _ldap._tcp.suitbim.com

3. 时间同步

# 查看当前时间
date

# 与域控时间同步(Kerberos 要求时间差 < 5分钟)
ntpdate 192.168.99.190

# 再次确认时间
date

第二阶段:配置 Kerberos

4. 创建 Kerberos 配置文件

cat > /etc/krb5.conf << 'EOF'
[libdefaults]
  default_realm = SUITBIM.COM
  dns_lookup_realm = false
  dns_lookup_kdc = false
  ticket_lifetime = 24h
  renew_lifetime = 7d
  forwardable = true
  allow_weak_crypto = yes
  default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
  default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
  permitted_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5

[realms]
  SUITBIM.COM = {
      kdc = WIN-QAG6G63NI1O.suitbim.com
      kdc = 192.168.99.190
      admin_server = WIN-QAG6G63NI1O.suitbim.com
      default_domain = suitbim.com
  }

[domain_realm]
  .suitbim.com = SUITBIM.COM
  suitbim.com = SUITBIM.COM
EOF

5. 测试 Kerberos 认证

# 获取 Kerberos 票据
kinit administrator@SUITBIM.COM
# 输入密码:act1veP@ss

# 验证票据
klist

预期输出:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SUITBIM.COM

Valid starting       Expires             Service principal
12/30/2025 17:11:49 12/31/2025 03:11:49 krbtgt/SUITBIM.COM@SUITBIM.COM

第三阶段:配置 Samba

6. 备份原始配置

cp /etc/config/smb.conf /etc/config/smb.conf.backup.$(date +%Y%m%d)

7. 编辑 Samba 配置

vim /etc/config/smb.conf

找到 [global] 区段,确保包含以下配置:

[global]
  workgroup = SUITBIM
  realm = SUITBIM.COM
  netbios name = NAS4E4A88
  security = ADS
   
  # Kerberos 设置
  kerberos method = system keytab
   
  # Winbind 设置
  winbind use default domain = yes
  winbind enum users = yes
  winbind enum groups = yes
   
  # ID 映射配置(修正 idmap range)
  idmap config * : backend = tdb
  idmap config * : range = 10000-999999
  idmap config SUITBIM : backend = rid
  idmap config SUITBIM : range = 1000000-19999999

⚠️ 关键修正: 修复了之前的 idmap range 错误

保存并退出: :wq


8. 验证 Samba 配置

/usr/local/samba/bin/testparm -s /etc/config/smb.conf | grep -E "realm|workgroup|security|idmap"

预期输出(无错误):

Server role: ROLE_DOMAIN_MEMBER
  realm = SUITBIM.COM
  security = ADS
  workgroup = SUITBIM
  idmap config * : backend = tdb
  idmap config * : range = 10000-999999
  idmap config suitbim : backend = rid
  idmap config suitbim : range = 1000000-19999999

9. 重启 Samba 服务

/etc/init.d/smb.sh restart

验证服务状态:

/etc/init.d/smb.sh status

第四阶段:加入域

10. 执行域加入命令

/usr/local/samba/bin/net ads join -U administrator createcomputer=Computers osName=QTS osVer=5.0

输入密码: act1veP@ss

成功输出示例:

Using short domain name -- SUITBIM
Joined 'NAS4E4A88' to dns domain 'suitbim.com'

⚠️ 注意: 如果提示 DNS 更新失败不影响域加入,可以手动添加 DNS 记录。


11. 验证域加入状态

# 测试域加入
/usr/local/samba/bin/net ads testjoin

预期输出:

Join is OK
# 测试信任关系
/usr/local/samba/bin/wbinfo -t

预期输出:

checking the trust secret for domain SUITBIM via RPC calls succeeded
# 列出域用户(前10个)
/usr/local/samba/bin/wbinfo -u | head -10

预期输出:

SUITBIM\administrator
SUITBIM\krbtgt
SUITBIM\guest
...

域加入如果报错,按照上面的步骤修改好配置文件重新加入

[~] # killall -9 smbd nmbd winbindd
killall: winbindd: no process killed
[~] # sleep 2
[~] # ps | grep -E "smbd|nmbd|winbind"
 463 admin      1000 S   grep -E smbd|nmbd|winbind
[~] # # 删除旧的计算机账户信息
[~] # rm -f /usr/local/samba/private/secrets.tdb
[~] # rm -f /usr/local/samba/private/secrets.tdb.bak
[~] # rm -f /usr/local/samba/private/secrets.keytab
[~] # rm -f /var/lock/samba/gencache.tdb
[~] # rm -f /var/cache/samba/*.tdb
[~] # rm -f /var/cache/samba/*.dat
[~] #
[~] # # 验证删除
[~] # ls -la /usr/local/samba/private/secrets.*
-rw------- 1 admin administrators 1286144 2025-12-29 14:08 /usr/local/samba/private/secrets.ldb
[~] # kinit administrator@SUITBIM.COM
Password for administrator@SUITBIM.COM:
[~] # klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SUITBIM.COM

Valid starting       Expires             Service principal
12/30/2025 17:38:10  12/31/2025 03:38:10 krbtgt/SUITBIM.COM@SUITBIM.COM
renew until 01/06/2026 17:37:59
[~] # /usr/local/samba/bin/net ads join -U administrator createcomputer=Computers osName=QTS osVer=5.0
Enter administrator's password:
Using short domain name -- SUITBIM
Joined 'NAS4E4A88' to dns domain 'suitbim.com'
DNS Update for nas4e4a88.suitbim.com failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL
[~] # # 检查是否成功
[~] # /usr/local/samba/bin/net ads testjoin
Join is OK
[~] # /usr/local/samba/bin/wbinfo -u | head -10
krbtgt
guest
administrator
wangyang
gongxiaobiao
wangyuyuan
__hskddns_user__
zhaolulu
a
zs
[~] #

image-20251230173955571

命令行配置的AD域过段时间会自动出现在域安全认证中

12. 启动 Winbind 服务

/usr/local/samba/sbin/winbindd

验证 Winbind 进程:

ps | grep winbindd
[~] # ps aux | grep -E "smbd|nmbd|winbindd" | grep -v grep
11332 admin      8380 S   /usr/local/samba/sbin/nmbd -l /var/log -D -s /etc/config/smb.conf
11340 admin      9028 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11347 admin     19312 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11351 admin     19604 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11354 admin     10608 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11355 admin     10608 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11360 admin     14148 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11364 admin      6164 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11365 admin     12544 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11375 admin      8276 S   /usr/local/samba/sbin/winbindd -s /etc/config/smb.conf
11377 admin     11668 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11378 admin     11692 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11379 admin     10720 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11380 admin     10720 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11381 admin     10720 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11382 admin     10720 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
11383 admin     10720 S   /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf
[~] #

13. 测试域用户认证

/usr/local/samba/bin/wbinfo -a administrator%act1veP@ss

预期输出:

plaintext password authentication succeeded
challenge/response password authentication succeeded

第五阶段:域控端配置(AD域服务器192.168.99.190)(图形化界面)

14. 添加 DNS A 记录

在域控服务器上操作:

  1. 打开 DNS 管理器
    • 开始菜单 → 服务器管理器 → 工具 → DNS
  2. 展开 DNS 树
    • 展开服务器名称 WIN-QAG6G63NI1O
    • 展开“正向查找区域”
    • 点击 suitbim.com
  3. 创建新的 A 记录
    • 右键点击 suitbim.com → 新建主机 (A 或 AAAA)…
    • 名称: nas4e4a88
    • IP 地址: 10.240.30.222
    • ✅ 勾选“创建相关的指针(PTR)记录”
    • 点击“添加主机”
    • 点击“完成”
  4. 验证 DNS 记录
    • 在域控打开 PowerShell
    • 执行:
    nslookup nas4e4a88.suitbim.com
    • 应该返回 10.240.30.222

注意:我们这种nas与AD域不同网段连接需要在域控中添加nas地址的反向查找区域

具体步骤:

打开 DNS 管理器 (dnsmgmt.msc)
展开域控服务器
右键 "反向查找区域" → "新建区域"
选择 "主要区域" → 下一步
"到 Active Directory 中的所有 DNS 服务器" → 下一步
选择 "IPv4 反向查找区域" → 下一步
输入网络 ID:10.240.30 → 下一步
"允许安全动态更新" → 下一步 → 完成
添加 PTR 记录:

右键新建的反向区域 → "新建指针 (PTR)"
主机 IP:10.240.30.222
主机名:NAS4E4A88.suitbim.com
确定
image-20251231101743761

15. 验证计算机账户

在域控服务器上操作:

  1. 打开 Active Directory 用户和计算机
    • 开始菜单 → 服务器管理器 → 工具 → Active Directory 用户和计算机
  2. 查看计算机对象
    • 展开域 suitbim.com
    • 点击“Computers”容器
    • 查找 NAS4E4A88
    • image-20251231101946716
  3. 查看计算机属性
    • 右键点击 NAS4E4A88 → 属性
    • 切换到“操作系统”选项卡
    • 应该显示:
      • 名称: QTS
      • 版本: 5.0
      • image-20251231102015602

第六阶段:验证与测试

16. 完整功能测试

# 查看域信息
/usr/local/samba/bin/net ads info

# 查看域用户列表
/usr/local/samba/bin/wbinfo -u | wc -l

# 查看域组列表
/usr/local/samba/bin/wbinfo -g | head -5

# 测试用户名到 SID 的映射
/usr/local/samba/bin/wbinfo --name-to-sid=administrator
image-20251231132723809

17. Windows 客户端访问测试

在域内 Windows 机器上操作:

  1. 按 Win + R 打开运行对话框
  2. 输入以下任一路径:\\10.240.30.222或\\nas4e4a88.suitbim.com
  3. 输入域凭据登录:
    • 用户名: SUITBIM\administratoradministrator@suitbim.com
    • 密码: act1veP@ss
    • 使用域用户测试:切换用户需要将这里的凭据删除后重启电脑重启共享文件夹
    • image-20251231133817996
  4. 测试文件访问
    • 应该能看到共享文件夹列表
    • 尝试创建/删除文件测试权限

第八阶段:Web 界面同步

QNAP Web 管理界面检查

访问: http://10.240.30.222:8080https://10.240.30.222:443

路径: 控制台 → 域安全 → 域安全

检查状态:

  • ✅ 如果显示“已加入域:suitbim.com”:配置已自动同步
  • image-20251231134000625
  • ❌ 如果显示“未加入域”:执行以下操作

同步方法 A – 重启服务:

/etc/init.d/services.sh restart

同步方法 B – 重启系统(推荐):

reboot

重启后再次检查 Web 界面,应该显示已加入域。


配置共享文件夹权限

在 QNAP Web 管理界面:

  1. 控制台 → 共享文件夹
  2. 选择要配置的文件夹(如 Public)→ 点击“编辑共享文件夹权限”
  3. 切换到“域用户/群组”选项卡
  4. 点击“新增” → 搜索用户
    • 在搜索框输入:administrator
    • 选择 SUITBIM\administrator
  5. 设置权限
    • ✅ 读取/写入
    • image-20251231134128024
  6. 点击“应用”保存设置

故障排查命令

# 查看 Samba 日志
tail -f /var/log/samba/log.smbd

# 查看 Winbind 日志
tail -f /var/log/samba/log.winbindd

# 查看域控连接状态
/usr/local/samba/bin/net ads info

# 重新获取 Kerberos 票据
kdestroy
kinit administrator@SUITBIM.COM

# 检查网络连通性
ping 192.168.99.190
telnet 192.168.99.190 389
telnet 192.168.99.190 88

# 查看当前域会话
/usr/local/samba/bin/smbstatus

常用维护命令

# 退出域
/usr/local/samba/bin/net ads leave -U administrator

# 重新加入域
/usr/local/samba/bin/net ads join -U administrator

# 查看域信任关系
/usr/local/samba/bin/wbinfo -t

# 刷新缓存
/usr/local/samba/bin/net cache flush

# 测试用户认证
/usr/local/samba/bin/wbinfo -a username%password

关键注意事项

项目说明
时间同步必须与域控时间差 < 5 分钟
DNS 配置主 DNS 必须指向域控 192.168.99.190
域名大小写Realm 必须全大写(SUITBIM.COM)
idmap range确保范围不重叠且有效
密码复杂度域密码:act1veP@ss(包含大小写+特殊字符)
配置备份修改前备份配置文件

配置文件快速检查清单

✅ /etc/resolv.conf

cat /etc/resolv.conf

应包含:nameserver 192.168.99.190

✅ /etc/krb5.conf

grep -E "default_realm|kdc" /etc/krb5.conf

应包含:default_realm = SUITBIM.COMkdc = 192.168.99.190

✅ /etc/config/smb.conf

/usr/local/samba/bin/testparm -s | grep -E "realm|workgroup|idmap"

应无 ERROR 提示

故障案例:域用户登陆失败,提示错误信息

输入域账户:SUITBIM\zhangpeng 密码:Suit@2025,提示您输入的登录信息不正确,或您的账号已经失效。联系管理员。

3025c1f6d6c85b1507f98a126e449a65

故障原因:

Winbind 的内部操作需要直接查询域控 DNS,但是/etc/resolv.conf中默认为nameserver 127.0.0.1:所以Winbind服务没起来,无法完成完整的PAM认证登陆域账户

image-20251231103312641
  • 虽然 127.0.1.1 可以转发查询到域控
  • 但某些 Samba/Winbind 的内部操作需要直接查询域控 DNS
  • 特别是:
    • 动态 DNS 更新(DDNS)
    • SRV 记录查询
    • Kerberos KDC 定位
    • 域控健康检查

排查流程:

阶段 1:前期准备

✅ 1. 编译安装 Samba 4.10.18(带 ADS 支持) ✅ 2. 配置 Kerberos (/etc/krb5.conf) ✅ 3. 配置 Samba (/etc/config/smb.conf) ✅ 4. 配置 NSS (/etc/nsswitch.conf)

阶段 2:DNS 测试(发现能解析)

✅ nslookup suitbim.com
# 能解析到 192.168.99.190 和 192.168.99.193
✅ nslookup WIN-QAG6G63NI1O.suitbim.com
# 能解析到 192.168.99.190
✅ nslookup -type=SRV _ldap._tcp.dc._msdcs.suitbim.com
# 能查到 SRV 记录
✅ nslookup -type=SRV _kerberos._tcp.suitbim.com
# 能查到 Kerberos KDC

此时 DNS 解析看起来正常,但是使用的是 127.0.1.1 转发

阶段 3:Kerberos 认证

✅ kinit administrator@SUITBIM.COM
# 获取 Kerberos ticket 成功
✅ klist
# 显示 ticket 正常

阶段 4:域连接测试

✅ /usr/local/samba/bin/net ads info
# 能连接到域控,获取域信息

阶段 5:加入域(卡住)

❌ /usr/local/samba/bin/net ads join -U administrator
Using short domain name -- SUITBIM
Joined 'NAS4E4A88' to dns domain 'suitbim.com'

卡住不动... # ← 问题出现

为什么卡住?

  • 加入域的最后一步是:向域控 DNS 注册机器账户的 A 记录和 PTR 记录
  • Samba 使用 nsupdate 或类似机制直接与域控 DNS 通信
  • 如果 /etc/resolv.conf 中没有域控 DNS,这个注册请求会超时或失败

阶段 6:修改 DNS 配置(✅解决方案)

✅ vim /etc/resolv.conf
在首行添加:nameserver 192.168.99.190

阶段 7:中断并验证(发现已成功)

Ctrl + C    # 中断卡住的 net ads join

✅ /usr/local/samba/bin/net ads testjoin
Join is OK # ← 实际上已经加入成功了!

说明:

  • 加入域的主要步骤(机器账户创建、密钥交换)已完成
  • 只是卡在了 DNS 注册步骤
  • 虽然卡住了,但域加入已经成功

阶段 8:启动服务

✅ killall -9 smbd nmbd winbindd
✅ /usr/local/samba/sbin/smbd -D -s /etc/config/smb.conf
✅ /usr/local/samba/sbin/nmbd -D -s /etc/config/smb.conf
✅ /usr/local/samba/sbin/winbindd -D -s /etc/config/smb.conf

✅ 所有测试通过:
- wbinfo -t ✅
- wbinfo -u ✅
- wbinfo -a ✅
- getent passwd administrator ✅

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部