必须双向对称配置IPSec策略,确保密钥、协议、地址方向完全一致;先ping通再配置,否则协商失败;ESP加密需勾选完整性与加密,预共享密钥大小写敏感;抓包验证协议号50即生效。

要在Windows系统中配置IPSec加密策略来保护两台主机间通信不被窃听或篡改,必须在双方机器上分别创建匹配的策略、筛选器和筛选器操作,并确保密钥、协议与地址方向完全一致,否则协商失败导致通信中断。
准备前提与验证连通性
确认两台目标主机处于同一局域网且能双向ping通——【若无法ping通,后续所有IPSec配置均无效】。打开命令提示符,执行 ping -4 对方IP,确保返回“来自 X.X.X.X 的回复”。不要跳过这步,很多用户在未通联状态下直接配策略,最终抓包看到全是ICMP超时而误判为IPSec生效。
以Client A(192.168.1.10)向Client B(192.168.1.20)发起安全通信为例,所有配置均需双向对称设置。
使用本地安全策略图形界面配置ESP加密策略
方法一:图形化方式(推荐初学者)
按 Win + R 输入 secpol.msc → 回车打开“本地安全策略” → 展开左侧“IP安全策略,在本地计算机” → 右键空白处 → “创建IP安全策略…” → 下一步 → 输入名称如“ClientA-to-ClientB-ESP”,取消勾选“激活默认响应规则” → 下一步 → 完成。
右键刚建好的策略 → “属性” → 切换到“规则”选项卡 → 点击“添加…” → 下一步 → 选择“此规则不指定隧道” → 下一步 → 选择“所有网络连接” → 下一步。
点击“添加…”进入IP筛选器列表 → 新建筛选器 → 源地址选“任何IP地址”,目的地址填【Client B的IP,即192.168.1.20】 → 协议类型选“ICMP”(若需保护TCP流量则选TCP并填端口)→ 下一步 → 完成 → 返回后勾选该筛选器 → 下一步。
筛选器操作选“要求安全” → 下一步 → 点击“编辑…” → 切换到“常规”选项卡 → 勾选“完整性”和“加密” → “认证方法”选“预共享密钥”,输入双方约定的密钥(如
用netsh命令行快速部署相同策略
方法二:命令行方式(适合批量或脚本部署)
以管理员身份运行CMD,逐条执行:
netsh ipsec static add policy name="ESP-Protect-B"
netsh ipsec static add filterlist name="To-B-ICMP"
netsh ipsec static add filter filterlist="To-B-ICMP" srcaddr=any dstaddr=192.168.1.20 protocol=icmp mirrored=yes
netsh ipsec static add filteraction name="Encrypt-Integrity" action=negotiate securitymethod=esp[3des,md5] qmpfs=yes
netsh ipsec static add rule name="Rule-To-B" policy="ESP-Protect-B" filterlist="To-B-ICMP" filteraction="Encrypt-Integrity" authmethod=presharedkey key="MySecretKey123"
netsh ipsec static set policy name="ESP-Protect-B" assign=y
注意:命令中esp[3des,md5]表示使用3DES加密+MD5校验,这是兼容性最强的组合;若对方是Windows Server 2016+,可改用esp[aes128,sha1]提升强度。密钥必须完全一致,大小写敏感,且不能含空格或特殊字符。
验证策略是否生效
在Client A上执行 ping 192.168.1.20,同时在Client B上用Wireshark抓包 → 过滤条件输入 ip.proto == 50 → 若看到大量ESP协议包(协议号50),说明加密已启用;若仍见明文ICMP,则检查两端策略是否都已“指派”,以及预共享密钥是否拼写一致。
执行 netsh ipsec dynamic show mmsa 查看主模式安全关联状态,输出中应包含“Active”和“Negotiated”字样;若显示“Failed”,说明IKE协商失败,大概率是密钥不匹配或防火墙拦截了UDP 500/4500端口。


















