Windows中查看RRAS NAT动态连接需用Get-NetNatSession(Server 2016+),传统RRAS则依赖日志、netstat或第三方工具;netsh portproxy仅显示静态端口映射,与动态NAT无关。
在 windows 运维中,rras(routing and remote access service)启用 nat 功能后,系统会动态维护一个 nat 映射表(也称“nat 转换表”或“连接跟踪表”),记录当前活跃的入站/出站连接映射关系。但 windows 并未提供图形化界面直接查看该表,需借助命令行工具或注册表路径间接获取。
使用 netsh interface portproxy 查看端口映射(静态规则)
该命令仅显示手动配置的端口代理(如 netsh interface portproxy add v4tov4 添加的静态端口转发),不反映动态 NAT 连接。适用于排查是否误配了冲突的静态转发规则:
- 运行
netsh interface portproxy show all - 注意:此命令与 RRAS NAT 的动态连接无关,勿混淆
通过 rrasmgmt.msc 或 PowerShell 获取 NAT 接口与状态
RRAS 控制台(rrasmgmt.msc)可确认 NAT 是否启用、内外网接口绑定是否正确,但不显示实时连接条目。PowerShell 可辅助验证服务状态和组件启用情况:
-
Get-Service RemoteAccess确认服务运行中 -
Get-RemoteAccessHealth(需 RemoteAccess 模块)检查 NAT 功能健康度 -
Get-NetNat列出已配置的 NAT 实例(Windows Server 2016+,对应NetNat模块)
真正查看活跃 NAT 连接:使用 Get-NetNatSession(推荐)
Get-NetNatSession 是 Windows Server 2016 及更新版本中专用于查询当前 NAT 映射会话的 PowerShell 命令,可实时显示源/目标 IP、端口、协议、空闲时间等关键字段:
- 执行前确保已启用 NetNat 功能:
Install-WindowsFeature RemoteAccess -IncludeAllSubFeature - 常用筛选示例:
Get-NetNatSession | Where-Object {$_.InternalIP -eq '192.168.1.100'} - 导出为 CSV 方便分析:
Get-NetNatSession | Export-Csv nat-sessions.csv -NoTypeInformation - 注意:该命令依赖于
NetNat组件,传统 RRAS NAT(非 “Windows NAT” 角色)不支持此 cmdlet
传统 RRAS NAT 下的替代监控方式
若使用的是经典 RRAS(如 Windows Server 2012 R2 或启用了“网络地址转换 (NAT)”路由协议的老配置),Get-NetNatSession 不可用。此时可采用以下方法间接监控:
- 启用 RRAS 日志:在 RRAS 控制台 → 右键服务器 → 属性 → 常规 → 勾选“启用日志记录”,选择“NAT”并设置日志路径;日志含连接建立/终止事件(Event ID 257/258),但非实时连接快照
- 结合
netstat -an与内部接口 IP 分析:虽不能区分 NAT 映射,但可观察外网接口(如 192.168.0.1:50001)上大量 ESTABLISHED 连接,佐证 NAT 正常工作 - 使用第三方工具如 CPort 或 Microsoft Message Analyzer(已停更,但存档可用)捕获并解析 TCP/IP 流量,还原地址转换行为










