QNAP NAS 命令行加入 Windows AD 域完整流程
📋 环境信息
| 项目 | 值 |
|---|---|
| NAS IP | 10.240.30.222 |
| 域控 IP | 192.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
[~] #

命令行配置的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 记录
在域控服务器上操作:
- 打开 DNS 管理器
- 开始菜单 → 服务器管理器 → 工具 → DNS
- 展开 DNS 树
- 展开服务器名称
WIN-QAG6G63NI1O - 展开“正向查找区域”
- 点击
suitbim.com
- 展开服务器名称
- 创建新的 A 记录
- 右键点击
suitbim.com→ 新建主机 (A 或 AAAA)… - 名称:
nas4e4a88 - IP 地址:
10.240.30.222 - ✅ 勾选“创建相关的指针(PTR)记录”
- 点击“添加主机”
- 点击“完成”
- 右键点击
- 验证 DNS 记录
- 在域控打开 PowerShell
- 执行:
- 应该返回
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
确定

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

- 右键点击
第六阶段:验证与测试
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

17. Windows 客户端访问测试
在域内 Windows 机器上操作:
- 按 Win + R 打开运行对话框
- 输入以下任一路径:\\10.240.30.222或\\nas4e4a88.suitbim.com
- 输入域凭据登录:
- 用户名:
SUITBIM\administrator或administrator@suitbim.com - 密码:
act1veP@ss - 使用域用户测试:切换用户需要将这里的凭据删除后重启电脑重启共享文件夹

- 用户名:
- 测试文件访问
- 应该能看到共享文件夹列表
- 尝试创建/删除文件测试权限
第八阶段:Web 界面同步
QNAP Web 管理界面检查
访问: http://10.240.30.222:8080 或 https://10.240.30.222:443
路径: 控制台 → 域安全 → 域安全
检查状态:
- ✅ 如果显示“已加入域:suitbim.com”:配置已自动同步

- ❌ 如果显示“未加入域”:执行以下操作
同步方法 A – 重启服务:
/etc/init.d/services.sh restart
同步方法 B – 重启系统(推荐):
reboot
重启后再次检查 Web 界面,应该显示已加入域。
配置共享文件夹权限
在 QNAP Web 管理界面:
- 控制台 → 共享文件夹
- 选择要配置的文件夹(如 Public)→ 点击“编辑共享文件夹权限”
- 切换到“域用户/群组”选项卡
- 点击“新增” → 搜索用户
- 在搜索框输入:
administrator - 选择
SUITBIM\administrator
- 在搜索框输入:
- 设置权限
- ✅ 读取/写入

- 点击“应用”保存设置
故障排查命令
# 查看 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.COM 和 kdc = 192.168.99.190
✅ /etc/config/smb.conf
/usr/local/samba/bin/testparm -s | grep -E "realm|workgroup|idmap"
应无 ERROR 提示
故障案例:域用户登陆失败,提示错误信息
输入域账户:SUITBIM\zhangpeng 密码:Suit@2025,提示您输入的登录信息不正确,或您的账号已经失效。联系管理员。

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

- 虽然 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 ✅