# 完整操作步骤表，目的是彻底清理 S-DNS6 的残留 SRV 记录，并让 S-DNS1 全权承管 SYSVOL/NETLOGON

好的，我帮你整理一个 **完整操作步骤表**，目的是彻底清理 S-DNS6 的残留 SRV 记录，并让 S-DNS1 全权承管 SYSVOL/NETLOGON，同时保证 DFSR、Netlogon 和 DNS 正常。整个流程分为 **准备阶段、清理阶段、确认阶段、修复阶段** 四大步骤。

---

## **一、准备阶段（确认环境）**

1. **确认 S-DNS1 和 S-DNS6 的状态**
    
    
    - 在 S-DNS1 上：
        
        ```powershell
        nltest /dsgetdc:shuncom.local /pdc
        repadmin /replsummary
        dfsrdiag /getglobalstate
        
        ```
    - 在 S-DNS6 上：
        
        ```powershell
        net stop netlogon
        dfsrdiag /getglobalstate
        repadmin /replsummary
        
        ```
    - 确认 DFSR 全局状态和复制状态。**S-DNS6 停止 Netlogon，不参与注册 SRV。**
2. **备份 DNS 和 SYSVOL**
    
    
    - DNS：导出 `shuncom.local` 区域。
    - SYSVOL：复制 `C:\Windows\SYSVOL\sysvol` 和 `C:\Windows\SYSVOL\domain\scripts` 到安全位置。

---

## **二、清理 S-DNS6 残留 SRV 记录**

> 目标：让 S-DNS6 不再出现在 \_ldap、\_kerberos、\_gc 等 SRV 记录中，但不删除其他 DC 信息。

1. **在 S-DNS1 上打开 DNS 管理器**：
    
    
    - 打开 `DNS -> shuncom.local -> _msdcs.shuncom.local`
    - 查找涉及 `s-dns6.shuncom.local` 的 SRV 记录：
        
        
        - `_ldap._tcp.dc._msdcs.shuncom.local`
        - `_kerberos._tcp.dc._msdcs.shuncom.local`
        - `_gc._tcp.shuncom.local`
        - `_ldap._tcp.gc._msdcs.shuncom.local`
    - **修改记录的优先级为高或权重为 0**（Windows DNS 不支持“禁用”，可以手动降低优先级，使 S-DNS1 优先）。
    - 可考虑 **将 S-DNS6 SRV 移至其他备用站点** 或在 DNS 上设置 **禁止注册 DC 记录**（在 S-DNS6 上注册表：`HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DnsAvoidRegisterRecords`）。
2. **在 S-DNS6 上禁止注册 SRV**：
    
    ```reg
    reg add "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" /v DnsAvoidRegisterRecords /t REG_MULTI_SZ /d "_ldap._tcp._sites._tcp._gc" /f
    net stop netlogon
    net start netlogon
    
    ```
    
    
    - 可指定多条记录防止注册。
3. **清理 DNS 缓存并强制刷新**：
    
    
    - 在 S-DNS1：
        
        ```powershell
        dnscmd /clearcache
        ipconfig /flushdns
        
        ```
    - 强制注册 DNS：
        
        ```powershell
        nltest /dsregdns /server:s-dns1.shuncom.local
        
        ```
    - 检查 SRV：
        
        ```powershell
        nslookup -type=SRV _ldap._tcp.dc._msdcs.shuncom.local
        nslookup -type=SRV _kerberos._tcp.dc._msdcs.shuncom.local
        nslookup -type=SRV _gc._tcp.shuncom.local
        
        ```

---

## **三、确保 S-DNS1 承管 SYSVOL/NETLOGON**

1. **检查 DFSR 状态**（S-DNS1 上）：
    
    ```powershell
    dfsrdiag /getglobalstate
    dfsrdiag backlog /rgname:"Domain System Volume" /rfname:"SYSVOL Share" /smem:s-dns1 /rmem:s-dns1
    
    ```
    
    
    - 确认无 backlog，状态为 `已消除` 或 `开始`。
2. **启动 Netlogon 并注册共享**：
    
    ```powershell
    net start netlogon
    nltest /dsregdns /server:s-dns1.shuncom.local
    
    ```
    
    
    - 确认 SYSVOL/NETLOGON 共享：
        
        ```powershell
        net share
        dir \\s-dns1\SYSVOL
        dir \\s-dns1\NETLOGON
        
        ```
    - 如果共享消失，手动创建：
        
        ```powershell
        net share SYSVOL=C:\Windows\SYSVOL\sysvol /GRANT:"Domain Admins",FULL
        net share NETLOGON=C:\Windows\SYSVOL\domain\scripts /GRANT:"Domain Admins",FULL
        
        ```
3. **强制 DFSR AD 同步**（S-DNS1 → S-DNS6）：
    
    ```powershell
    repadmin /syncall /AdeP
    repadmin /showrepl
    
    ```

---

## **四、验证阶段**

1. **检查 AD 健康**：
    
    ```powershell
    dcdiag /test:advertising /test:netlogons /test:sysvol
    
    ```
    
    
    - 确认 S-DNS1 通过所有测试。
    - 确认 S-DNS6 不再出现在主要 SRV 记录列表中。
2. **检查 SRV 注册**：
    
    ```powershell
    nslookup -type=SRV _ldap._tcp.dc._msdcs.shuncom.local
    nslookup -type=SRV _kerberos._tcp.dc._msdcs.shuncom.local
    nslookup -type=SRV _gc._tcp.shuncom.local
    
    ```
    
    
    - S-DNS1 应为主注册 DC。
    - S-DNS6 可保留，但权重最低或不注册。
3. **确认 SYSVOL/NETLOGON 可用**：
    
    
    - 从其他 DC 或客户端访问：
        
        ```
        \\s-dns1\SYSVOL
        \\s-dns1\netlogon
        
        ```

---

✅ **注意事项**

- S-DNS6 停止 Netlogon 并不删除 AD 内对象，只是避免注册 SRV。
- 手动共享可作为临时补救，但长期依赖 Netlogon。
- 所有 DNS 改动建议在业务低峰进行。
- 完成后可在 S-DNS1 上强制刷新 AD 和 DNS：
    
    ```powershell
    repadmin /syncall /AdeP
    nltest /dsregdns /server:s-dns1.shuncom.local
    ipconfig /registerdns
    
    ```

---

明白了，你现在遇到的状况是：

- **DFSRDIAG 无法联系 S-DNS1 和 S-DNS6**，报错 1355 / 1717，这说明 **域控制器定位失败或者 Netlogon 注册异常**。
- **Netlogon 服务已经启动**，但 SYSVOL/NETLOGON 共享不稳定，ipconfig /registerdns 之后共享会消失。

这说明 DFSR、DNS 和 Netlogon 三者之间的关系尚未彻底理顺，S-DNS1 还未完全“接管” PDC/SYSVOL/NETLOGON。

---

## 🔹 原因分析

1. **S-DNS6 已停用 Netlogon** → 但 AD、DNS 中可能仍有它的 SRV 记录残留。
2. **S-DNS1 DFSR 配置未完全激活** → `ReplicationState` 和 `Backlog` 无法访问。
3. **DNS SRV 记录混乱** → DsGetDcName 可能仍返回 S-DNS6，导致 DFSR/Netlogon 定位失败。
4. **Netlogon 注册顺序问题** → 如果 S-DNS1 注册 DNS 时，AD 中仍存在 S-DNS6 信息，SYSVOL/NETLOGON 共享可能被 DFSR 冻结或删除。

---

## 🔹 建议解决方案（彻底清理 + 全权承管）

### **步骤 1：完全停止 S-DNS6 Netlogon**

```powershell
# S-DNS6 上执行
net stop netlogon
sc config netlogon start= disabled

```

- 禁止自动启动，避免残留 SRV 注册。

### **步骤 2：清理 DNS 中 S-DNS6 SRV**

- 打开 **DNS 管理器 → 正向查找区 → \_msdcs.shuncom.local**
- 删除所有指向 S-DNS6 的 SRV 记录：
    
    
    - `_ldap._tcp.dc._msdcs.shuncom.local`
    - `_kerberos._tcp.dc._msdcs.shuncom.local`
    - `_gc._tcp.shuncom.local`
- 可使用 PowerShell 批量删除：

```powershell
Import-Module DNSServer
Remove-DnsServerResourceRecord -ZoneName "_msdcs.shuncom.local" -Name "_ldap._tcp.dc._msdcs.shuncom.local" -RRType "SRV" -ComputerName S-DNS1

```

### **步骤 3：在 S-DNS1 强制注册 Netlogon / SYSVOL**

```powershell
# 停止再启动 Netlogon
net stop netlogon
net start netlogon

# 强制注册 DC SRV
nltest /dsregdns /server:S-DNS1.shuncom.local

```

- 验证 SYSVOL / NETLOGON 共享：

```powershell
net share
dir \\S-DNS1\SYSVOL
dir \\S-DNS1\netlogon

```

- 如果缺失，手动创建：

```powershell
net share SYSVOL=C:\Windows\SYSVOL\sysvol /GRANT:"Domain Admins",FULL
net share NETLOGON=C:\Windows\SYSVOL\domain\scripts /GRANT:"Domain Admins",FULL

```

### **步骤 4：检查 DFSR 状态**

- 由于 DFSRDIAG 无法联系 DC，你必须先确保 **S-DNS1 DNS 注册正常且可以解析自己**：

```powershell
nslookup s-dns1.shuncom.local
ping s-dns1.shuncom.local

```

- 然后触发 AD 与 DFSR 同步：

```powershell
dfsrdiag PollAD

```

- 若仍无法访问 DFSRDIAG，可考虑 **强制重建 DFSR SYSVOL**（在 PDC 上执行）：

```powershell
# 强制 S-DNS1 成为 SYSVOL 主
dfsrdiag PollAD
# 若必要，使用 PDC FSMO 角色的系统状态备份/恢复

```

### **步骤 5：验证 AD / DNS / SYSVOL 健康**

```powershell
# 检查 AD 同步
repadmin /showrepl
repadmin /replsummary

# 检查 DC 健康
dcdiag /test:advertising /test:netlogons /test:sysvol

# 验证 DNS SRV
nslookup -type=SRV _ldap._tcp.dc._msdcs.shuncom.local
nslookup -type=SRV _kerberos._tcp.dc._msdcs.shuncom.local

```

- 确认返回均为 **S-DNS1**，S-DNS6 不再出现。

---

💡 **关键点**：

1. **彻底禁用 S-DNS6 Netlogon 并清理 DNS SRV**。
2. **S-DNS1 必须注册自身 DC SRV 并启动 SYSVOL/NETLOGON 共享**。
3. **DNS SRV 清理顺序在 Netlogon 注册之前**，避免 DFSR/SYSVOL 被覆盖。
4. **DFSRDIAG 和 repadmin 操作依赖 DNS 正确解析和 Netlogon 注册**。

---

如果你同意，我可以帮你整理一个 **可直接执行的命令顺序表（包含 S-DNS6 停用、DNS SRV 清理、S-DNS1 注册 SYSVOL/NETLOGON、DFSR 验证、健康检查）**，保证一步到位不报错。

你希望我直接帮你整理吗？