我们的办公室和客户站点之间有数十个 IPSec 连接。我们在客户网络中使用额外的路由器(因此在 NAT 之后)来启动与我们办公室的连接,其中 PFSense 路由器是“网络入口”(因此不在 NAT 之后)。这工作得很好!
在一种特定情况下,我们还需要 2 个客户站点之间的直接 IPSec 连接。在这两个站点上,我们已经在他们的网络中安装了一个路由器(Linux 无处不在)。我被允许在 2 个客户位置之一打开端口以使其正常工作。
经过一段时间的努力并尝试在 Google 上找到解决方案后,我仍然无法在这两个位置之间建立有效的 IPSec 连接。
为了使其更具体,我概述了我们的情况:
Customer A | Customer B
our router --- NAT --- internet --- NAT --- our router
10.130.1.0/24 10.130.2.0/24
在客户 A,我将所有端口(出于测试目的)转发到我们的路由器,并尝试从客户 B 的站点启动 IPSec 连接。我尝试通过从 10.130.2.0/24 ping 10.130.1.1 来启动连接,但在任一站点上的 charon (ipsec) 日志文件中都看不到任何日志条目...
是否有可能让 IPSec 完全像上面所描绘的那样工作?那么端口转发呢?
==================更新1 =================
我检查了是否在两个站点都启用了 NAT 遍历,并且确实如此。我使用 IKEv2 以防万一。
我还可以通过设置一些日志来获取一些日志log-modes并获得:
Oct 26 10:09:48 12[MGR] checkout IKEv2 SA with SPIs 6680fde47ccc3276_i d590c97607b14938_r
Oct 26 10:09:48 12[MGR] IKE_SA checkout not successful
IPSec 配置(来自一个站点,因为它们相互代表):
allow-access-to-local-interface enable
auto-firewall-nat-exclude enable
esp-group FOO0 {
compression disable
lifetime 3600
mode tunnel
pfs enable
proposal 1 {
encryption aes128
hash sha256
}
proposal 2 {
encryption aes128
hash sha256
}
}
ike-group FOO0 {
ikev2-reauth no
key-exchange ikev2
lifetime 28800
proposal 1 {
dh-group 14
encryption aes128
hash sha256
}
proposal 2 {
dh-group 14
encryption aes128
hash sha256
}
}
nat-traversal enable
site-to-site {
peer some_entry_A.zapto.org {
authentication {
id some_entry_B.zapto.org
mode pre-shared-secret
pre-shared-secret SomePSK
remote-id any
}
connection-type initiate
default-esp-group FOO0
description internal_IPSec
ike-group FOO0
ikev2-reauth inherit
local-address any
tunnel 1 {
allow-nat-networks disable
allow-public-networks enable
esp-group FOO0
local {
prefix 10.130.8.0/24
}
remote {
prefix 10.130.22.0/24
}
}
}