NPS 拒絕不一定是密碼錯。要照事件裡的 Reason Code,依序查 RADIUS client IP/shared secret、Connection Request Policy、Network Policy、群組、EAP 類型與伺服器/用戶端憑證。
角色、服務與監聽
查看 NPS 角色系統管理員 PowerShell
Get-WindowsFeature NPASInstalled 應為 True。
安裝 NPS 管理工具系統管理員 PowerShell
Install-WindowsFeature NPAS -IncludeManagementTools正式安裝前確認 server role、維護與備份規劃。
查看 NPS service系統管理員 PowerShell
Get-Service IAS | Format-List Name,Status,StartTypeIAS 是 Network Policy Server service 名稱。
查看 UDP 1812/1813系統管理員 PowerShell
Get-NetUDPEndpoint | Where-Object LocalPort -in 1812,1813 | Format-Table LocalAddress,LocalPort,OwningProcessUDP 沒有 TCP listen 狀態,不能用 Test-NetConnection -Port 判斷。
開啟 NPS 主控台執行
nps.mscGUI 可查看 RADIUS Clients、Policies、Accounting 與 EAP。
備份 NPS,不含 PSK系統管理員 CMD
netsh nps export filename=C:\NPSBackup\nps.xml exportPSK=NO可安全保存架構,但復原時要另備 shared secret。
受控備份 NPS,包含 PSK系統管理員 CMD
netsh nps export filename=C:\NPSBackup\nps-with-secrets.xml exportPSK=YES檔案含 shared secret,必須加密、限制 ACL 並依秘密資料保存。
事件與拒絕原因
查看最近允許與拒絕系統管理員 PowerShell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=6272,6273} -MaxEvents 1006272 是允許、6273 是拒絕;重點看 Reason Code 與 Policy Name。
只找拒絕事件系統管理員 PowerShell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=6273; StartTime=(Get-Date).AddHours(-4)} | Select-Object TimeCreated,Id,Message以實際失敗時間縮小範圍。
查看 NPS Operational logPowerShell
Get-WinEvent -LogName 'Microsoft-Windows-NPS/Operational' -MaxEvents 100不同版本可用 channel 可能不同,先用 Get-WinEvent -ListLog *NPS*。
確認 NPS 稽核政策系統管理員 CMD
auditpol /get /subcategory:"Network Policy Server"非英文系統子類別名稱可能不同,可先 auditpol /list /subcategory:*。
依時間匯出拒絕事件PowerShell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=6273; StartTime=(Get-Date).Date} | Export-Csv .\nps-denied.csv -NoTypeInformation -Encoding utf8事件 Message 很長,CSV 要限制存取。
封包與憑證
新增 RADIUS 封包篩選系統管理員 CMD
pktmon filter add NPS-RADIUS -t UDP -p 1812Windows 版本語法先用 pktmon filter add help 確認。
開始短時間封包擷取系統管理員 CMD
pktmon start --etw -m real-time只在重現一次驗證時開啟,完成按 Ctrl+C 或 pktmon stop。
停止封包擷取系統管理員 CMD
pktmon stop停止後再轉 PCAPNG,避免長時間占用。
轉成 Wireshark 格式系統管理員 CMD
pktmon etl2pcap PktMon.etl --out nps-radius.pcapng封包可能含帳號識別與內網資料,要妥善保存。
列出本機電腦憑證系統管理員 PowerShell
Get-ChildItem Cert:\LocalMachine\My | Sort-Object NotAfter | Select-Object Subject,Thumbprint,NotBefore,NotAfter,EnhancedKeyUsageList確認 Server Authentication EKU、Subject/SAN、鏈與有效期。
用 certutil 查看電腦憑證系統管理員 CMD
certutil -store My同時看 private key 是否存在與 chain 狀態。
產生 Windows Wi-Fi 報告系統管理員 CMD(用戶端)
netsh wlan show wlanreport從用戶端對照 EAP 失敗時間、SSID、BSSID 與 reason。
怎麼確認有做對
- NPS 事件 6272 顯示命中預期 Connection Request/Network Policy。
- 從交換器/AP 到 NPS 的 request 與 response 都能在兩端 log 或封包對上。
- 測試使用者與測試裝置通過後,再驗證錯誤群組應被拒絕。
常見錯誤
- 用 Test-NetConnection -Port 1812 測 UDP RADIUS。
- 只看 NPS,忽略 AP/交換器送來的 source IP 與 shared secret。
- EAP-TLS 只查 server cert,不查用戶端 cert、CA chain 與時間。
- 直接匯入含 PSK 的 NPS XML 到正式機。
常見問題
事件 6273 就是密碼錯嗎?
不是。Reason Code 可能是 policy 不符、群組、EAP、憑證、時段、帳號狀態或 RADIUS client 設定;要讀完整事件。
為什麼 NPS 完全沒有事件?
先查封包是否真的到達 NPS:AP/交換器的 RADIUS server IP、來源介面、VLAN、route、UDP 1812 ACL、NAT,以及 RADIUS client IP 是否和 NPS 定義一致。
延伸閱讀
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。
常見問題
事件 6273 就是密碼錯嗎?
不是。Reason Code 可能是 policy 不符、群組、EAP、憑證、時段、帳號狀態或 RADIUS client 設定;要讀完整事件。
為什麼 NPS 完全沒有事件?
先查封包是否真的到達 NPS:AP/交換器的 RADIUS server IP、來源介面、VLAN、route、UDP 1812 ACL、NAT,以及 RADIUS client IP 是否和 NPS 定義一致。