我是 Ipsec 隧道的新手。我已使用供应商的预共享密钥成功创建了到 Cisco 异地路由器的隧道。
在端点 1 中:我有服务器的 IP 地址和我想要连接的远程服务器的 IP 地址。
在端点 2 中:我有与上面相同的 IP 地址
在 ipsec 隧道端点中我列出了服务器的 IP 地址,在端点 2 中我列出了思科路由器。
隧道建立。(在监控和主模式及快速模式下可见)此外,供应商确认他们可以看到我们的连接。
然而,当我们尝试连接其网络内的一台服务器(如上文端点 1 和 2 所列)时,却无法连接。
供应商声称他们有其他客户以这种方式连接,所以这对他们来说不是问题。
我曾尝试在 wireshark 中跟踪流量,但仅当我禁用 Ipsec 隧道时 wireshark 才能看到流量。
编辑:当我尝试通过 telnet 进入隧道端点后面的服务器时,我可以看到往返于隧道端点的流量。但是 telnet 会话在建立之前就超时了。
有任何想法吗?
答案1
我经历了这文章以更好地了解您的配置。您的本地计算机(或将启动隧道的服务器)应列在“端点 1”以及“本地隧道计算机”中。“远程隧道计算机”框应包含隧道终止处的路由器的 IP 地址。您想要在另一端连接的服务器应列在“端点 2”中。
由于您能够成功协商安全关联,我认为您的隧道配置不需要进行任何更改。但是,请交叉检查您的本地和远程 IP 地址。如果这些过滤器有错误,则不会生成任何流量。如果可能,请尝试启动到远程端点的流量并使用适当的过滤器运行 Wireshark。
编辑:我在此附上 Wireshark 中捕获的 IPsec 流量的屏幕截图。您可以清楚地看到首先建立主模式安全关联,并且只要有流量流过隧道,就会建立快速模式。我有意删除了源和目标列。
答案2
我也有这个问题(Windows Server 2012R2 评估版),我用以下方法解决了这个解决方法。当您在面向互联网的接口上启用 NAT 以访问本地 LAN 的互联网时,就会出现此问题。在本地 LAN 中生成的以远程 LAN 为目的地的流量在加密之前已进行 NAT。Cisco 收到此加密数据包,对其进行解密,但解密数据包的源 IP 是 Windows Server 的公共 IP 地址。由于这是一个错误,Cisco 路由器会丢弃该数据包并增加错误计数。您可以使用命令在 Cisco 路由器中查看此计数器,show crypto ipsec sa detail
计数器显示在中pkts decaps failed (rcv)
。此外,您还可以在 Windows Server 中的 NAT 统计信息中查看计数器。
解决方案:在 Windows Server 中通过环回接口(从 DOS 命令行)为远程 LAN 创建静态路由。使用选项-P
使路由永久存在(持续到重新启动)。例如,如果远程 LAN 是 10.245.0.0/16,则命令为:
route -P add 10.245.0.0 mask 255.255.0.0 0.0.0.0 if 1
不幸的是,我找不到其他方法来避免通过 ipsec 隧道发往远程 LAN 的流量进行 NAT。