Windows Server 中的网络策略服务器(NPS)是微软实现 RADIUS 协议的核心角色,常被用作无线网络、VPN 和交换机 802.1X 认证的统一认证中心。要让 NPS 正常完成 RADIUS 认证,需要理解请求从接入设备到域控制器的完整路径,并正确配置客户端、策略和身份验证方法。

一、NPS与RADIUS协议的工作机制
RADIUS(Remote Authentication Dial-In User Service)是一种客户端/服务器协议,专门用于在网络接入设备和认证服务器之间传递认证、授权和计费信息。接入设备,例如无线控制器、VPN 网关或支持 802.1X 的交换机,被称为 RADIUS 客户端或网络接入服务器(NAS)。当用户尝试连接网络时,接入设备将用户名和密码封装在 Access-Request 报文中发送给 NPS,NPS 校验凭据后返回 Access-Accept 或 Access-Reject。RADIUS 认证默认使用 UDP 端口 1812,计费使用 1813;一些旧设备可能使用 1645 和 1646,需要根据实际情况调整。
NPS 在角色上既可以作为 RADIUS 服务器直接处理请求,也可以作为 RADIUS 代理将请求转发给其他 RADIUS 服务器。作为 RADIUS 服务器时,NPS 需要读取 Active Directory 中的用户账号、组成员关系和拨入属性,也可以使用本地用户数据库或 Windows 账户。在域环境中,NPS 服务器通常需要注册到 Active Directory,以便获取读取用户对象所需的权限。如果未注册,认证过程可能因权限不足而失败,并返回 Access-Reject。
从部署模型来看,小型企业可以将 NPS 部署在域控制器上或独立成员服务器上,集中处理所有接入认证;中大型企业或者多林环境则适合采用 NPS 代理模式,由前端 NPS 接收请求并根据用户后缀转发到不同林中的 NPS 服务器。这种代理机制能够实现跨组织或跨域的集中认证,同时保留各域的自治性。
二、安装NPS角色与注册服务器
安装 NPS 角色可以通过图形界面完成:打开服务器管理器,点击添加角色和功能,在角色选择页面勾选网络策略和访问服务,然后勾选网络策略服务器角色服务。安装完成后,在管理工具中会出现网络策略服务器控制台。安装过程不会自动配置任何策略,因此首次使用时需要手动完成服务器注册和客户端添加。
如果习惯使用命令行,可以在提升权限的 PowerShell 中执行以下命令快速安装:
Install-WindowsFeature NPAS -IncludeManagementTools
安装完成后,必须将 NPS 服务器注册到 Active Directory。这一步的目的是让 NPS 服务账号获得读取用户拨入属性和组成员关系的权限。在 NPS 控制台中,右键点击服务器节点,选择在 Active Directory 中注册服务器,然后确认即可。也可以使用 PowerShell 命令完成注册:
Register-NpsServer -DomainName contoso.com -ServerName nps01
注册操作通常需要域管理员权限。注册完成后,可以使用以下命令查看注册状态:
netsh nps show registeredserver
如果输出内容包含服务器名称且没有错误提示,说明注册成功。如果无法注册,需要检查服务器是否已加入域、DNS 解析是否正常,以及当前登录账号是否有权限。
三、添加RADIUS客户端与连接请求策略
RADIUS 客户端指的是发起认证请求的网络接入设备,而不是最终用户使用的电脑或手机。添加 RADIUS 客户端时需要指定设备的 IP 地址或 DNS 名称、共享机密以及客户端友好名称。共享机密用于验证 RADIUS 消息的完整性和来源,必须与接入设备上配置的机密完全一致。建议使用足够长且包含大小写字母、数字和符号的强机密,并定期更换。
在 NPS 控制台中,展开 RADIUS 客户端和服务器,右键点击 RADIUS 客户端并选择新建。填写友好名称后,输入设备 IP 地址或解析名称,然后输入共享机密并确认。如果接入设备较多,可以使用 PowerShell 批量添加。下面是一条新建 RADIUS 客户端的命令示例:
New-NpsRadiusClient -Name "WirelessController" -Address "10.0.0.10" -SharedSecret "P@ssw0rd!2025"
连接请求策略决定哪些请求由本地 NPS 处理,哪些转发到其他 RADIUS 服务器。默认的连接请求策略会处理所有请求,这对简单部署足够。但在需要按客户端 IP、用户后缀或隧道类型分流的环境中,可以创建多条连接请求策略。例如,将来自特定子网的无线请求交给本地 NPS,而将其他请求转发到远程 NPS。创建策略时设置条件表达式,匹配后指定处理方式为本地认证或转发。
PowerShell 中可以使用 New-NpsConnectionRequestPolicy 命令创建连接请求策略,但参数较为复杂。一个典型示例是只允许来自 10.0.0.0/24 网段的客户端请求由本地处理:
New-NpsConnectionRequestPolicy -Name "Local-Wireless" -ProcessingOrder 1 -PolicyState Enabled -Condition "ClientIPv4Address == 10.0.0.0/24" -ActionType Local
实际使用时应根据现有网络规划调整条件表达式,并通过 NPS 控制台验证策略生效情况。
四、创建网络策略实现访问控制
网络策略是 NPS 中真正决定用户能否接入的核心配置。每条网络策略包含条件、约束和设置三部分。条件用于筛选请求,例如用户属于某个 AD 组、客户端操作系统类型或接入设备标识。约束用于限定认证方式和会话参数,例如必须使用 PEAP 或 EAP-TLS。设置部分则包含访问权限是授予还是拒绝,以及空闲超时、弹性会话等高级选项。
创建网络策略时,先指定策略名称和访问权限。如果要让无线用户接入,可以选择授予访问权限。然后添加条件,典型做法是加入一个安全组,例如 Wireless-Users,以便集中管理用户范围。接着配置身份验证方法,常用的是 Microsoft: Protected EAP (PEAP) 配合 MS-CHAPv2,或者使用 EAP-TLS 证书认证。PEAP 方式只需服务器端证书,用户仍然使用域账号密码,适合大多数企业;EAP-TLS 要求客户端也持有证书,安全性更高,但证书分发和管理成本较大。
使用 PowerShell 创建网络策略可以避免重复操作,下面是一个创建基本无线策略的示例:
New-NpsNetworkPolicy -Name "Wireless-Users-Policy" -ProcessingOrder 1 -PolicyState Enabled -AccessPermission Grant -Condition "UserGroups == CONTOSO\\Wireless-Users" -AuthenticationMethod "Microsoft: Protected EAP (PEAP)"
上述命令中的条件需要根据实际域名和安全组名称调整。创建完成后,还需要在策略的约束中指定 PEAP 证书。证书可以通过 NPS 控制台选择,也可以使用组策略将服务器根证书自动分发到客户端。如果证书不受信任,PEAP 隧道建立失败,用户将无法完成认证。
五、测试RADIUS认证与故障排查
完成配置后,可以从客户端尝试连接无线网络或 VPN,输入域凭据。如果认证通过,表示 NPS 已正确响应接入设备的 Access-Request。如果失败,需要从 NPS 服务器的事件日志中查找原因。打开事件查看器,定位到自定义视图下的服务器角色,再展开网络策略和访问服务。常见事件 ID 包括 6272 表示请求被授权,6273 表示请求被拒绝。
命令行工具也可以帮助检查 NPS 状态。下面两条命令分别用于查看注册状态和已配置的 RADIUS 客户端:
netsh nps show registeredserver netsh nps show client
排错时首先确认共享机密是否完全一致,这通常是认证失败的常见原因。其次检查用户账号是否被允许远程访问。在 Active Directory 用户属性中,拨入选项卡下的网络访问权限如果设置为拒绝访问,NPS 会直接拒绝该用户。另外,确认 NPS 服务器的计算机账号已正确注册 AD,以及连接请求策略和网络策略的处理顺序没有冲突。
如果使用了 PEAP,还需要检查服务器证书是否有效、是否由客户端信任的根 CA 签发。可以在客户端查看无线网络属性,确认证书链是否完整。必要时在 NPS 上启用详细日志,记录认证请求的响应代码,方便进一步定位。
六、高可用与安全加固建议
生产环境建议至少部署两台 NPS 服务器,形成冗余。RADIUS 客户端可以在配置中指定主备服务器地址,当主服务器不可用时自动切换到备用服务器。也可以使用网络负载均衡(NLB)或第三方负载均衡器实现高可用,同时共享相同的 RADIUS 配置。NPS 配置可以通过导出和导入功能在多台服务器之间同步,使用 netsh 命令即可完成:
netsh nps export filename="C:\\NPS\\config.xml" exportPSK=yes netsh nps import filename="C:\\NPS\\config.xml"
导出时建议携带共享机密,否则导入后需要重新设置所有 RADIUS 客户端的共享机密。导出的配置文件包含 XML 内容,备份后可用于快速恢复。
安全方面,应为不同 RADIUS 客户端设置不同的强共享机密,避免使用同一个机密导致单点泄露影响全部设备。在防火墙层面,仅允许授权接入设备的 IP 访问 NPS 服务器的 UDP 1812 和 1813 端口。对于管理接口,限制远程管理来源。定期更新 PEAP 证书,并结合组策略向客户端推送新的根证书。最后,定期审计 NPS 事件日志,关注异常频繁的拒绝记录,及时发现暴力猜测或配置错误。