在 Windows 中,似乎有两种设置 IPsec 的方法:
- IP 安全策略管理MMC 管理单元(Windows 2000 中引入的一部分)
secpol.msc
。 - 具有高级安全性 MMC 管理单元的Windows 防火墙
wf.msc
(在 Windows 2008/Vista 中引入)。
我的问题涉及#2——我已经弄清楚#1 我需要知道什么。(但我想使用“新”管理单元来改进加密功能。)
我在同一个域(域成员)中有两台 Windows Server 2008 R2 计算机,在同一个子网上:
server2 172.16.11.20
server3 172.16.11.30
我的目标是在隧道模式下使用 IPsec 加密这两台机器之间的所有通信,因此协议栈是:
- 知识产权
- ESP
- 知识产权
- …ETC。
首先,在每台计算机上,我创建了一个连接安全规则:
- 端点 1:(本地 IP 地址),
172.16.11.20
例如server2
- 端点 2:(远程 IP 地址),例如
172.16.11.30
- 协议:任何
- 身份验证:需要入站和出站,计算机(Kerberos V5)
- IPsec 隧道:
- 免除 IPsec 保护的连接
- 本地隧道端点:任意
- 远程隧道端点:(远程IP地址),例如
172.16.11.30
此时,我可以ping
每台机器,Wireshark向我展示协议栈;但是,没有任何内容是加密的(此时这是预期的)。我知道它是未加密的,因为 Wireshark 可以对其进行解码(使用设置Attempt to detect/decode NULL encrypted ESP payloads)并且Monitor > Security Associations > Quick Mode显示显示 ESP Encryption: None。
然后在每台服务器上,我创建了入站和出站规则:
- 协议:任何
- 本地 IP 地址:(本地 IP 地址),例如
172.16.11.20
- 远程IP地址:(远程IP地址),例如
172.16.11.30
- 行动:如果连接安全,则允许连接
- 要求对连接进行加密
问题:虽然我在每台服务器上创建了入站和出站规则以启用加密,但数据仍然通过 NULL 加密的线路(包裹在 ESP 中)。(您可以在 Wireshark 中看到这一点。)
当到达接收端时,它被拒绝(可能是因为它未加密)。[而且,在接收端禁用入站规则会导致它锁定和/或蓝屏 - 有趣!] Windows 防火墙日志显示,例如:
2014-05-30 22:26:28 DROP ICMP 172.16.11.20 172.16.11.30 - - 60 - - - - 8 0 - RECEIVE
我尝试过改变一些事情:
- 在规则中,将本地 IP 地址设置为Any
- 切换豁免 IPsec 保护连接设置
- 禁用规则(例如禁用一组或两组入站或出站规则)
- 更改协议(例如仅更改为 TCP)
但实际上没有那么多旋钮可以转动。
有没有人有任何想法?有没有人尝试使用 Windows 防火墙在两台主机之间设置隧道模式?
我已经使用完全相同的规则集成功地将它设置为传输模式(即无隧道),所以我有点惊讶它没有添加隧道的 Just Work™。