注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于您的云环境的值。
使用带有 Hub 和 Spoke VCN 路由架构的 IPSec VPN 将内部部署连接到 OCI
简介
借助 Oracle Cloud Infrastructure (OCI),您可以轻松配置本地环境与 OCI 环境之间的 VPN 连接,但是在 OCI 中使用集线器和分支拓扑时,它们可能会在路由方面产生一些复杂性。在本教程中,我们将设置到 OCI 的 Internet 协议安全 (IPSec) VPN 连接,并配置路由以确保在连接到 OCI 中的资源之前,防火墙策略会评估来自内部部署环境的流量。
以下图像说明了通信流。
-
本地部署以发出连接
-
Spoke B 与内部部署连接
目标
- 使用 IPSec VPN 隧道将内部部署位置连接到 OCI 环境。鉴于我们的 OCI 环境使用集线器和分支路由架构,我们还将配置必要的路由,以确保流量正确流动,并通过基本的 ping 测试验证连接。
先决条件
完成以下教程:
任务 1:准备内部部署环境
-
OCI 拓扑
在本教程中,OCI 拓扑是中心路由和分支 VCN 路由拓扑。有关详细信息,请参阅在 Hub VCN 中使用 pfSense 防火墙发送 Hub 和 Spoke VCN 。
下图展示了起点的可视化表示。
-
内部部署拓扑
为了模拟本地环境,我构建了一个示例设置,创建了两个 VPS 实例,并在每个实例上安装了 pfSense。
一个 pfSense 实例将用作 IPSec 客户终端设备 (customer-premises equipment,CPE) 终止点,而另一个 pfSense 实例将用作内部客户机。
此环境的设置不在本教程的范围内。
-
OCI 和内部部署最终拓扑
将内部部署环境与 OCI 环境连接时,拓扑如下所示:
任务 2:在 OCI 中创建 CPE
在创建 IPSec VPN 连接之前,需要先在 OCI 中创建 CPE 对象。
-
转到 OCI 控制台。
- 单击左上角的汉堡菜单(≡)。
- 单击网络。
- 单击 Site-to-Site VPN 。
- 单击客户终端设备。
- 单击创建 CPE 。
-
在创建 CPE 中,输入以下信息。
- 输入 CPE 的名称。
- 输入 IP 地址,此 IP 地址是将用于在内部部署中设置 VPN 的设备的公共 IP 地址。
- 单击创建 CPE 。
- 请注意,OCI 中已创建新的 CPE 对象。
- 单击客户连接以返回到客户连接页。
任务 3:在 OCI 中创建站点到站点 VPN
要配置 OCI 站点到站点 VPN,我们需要在 OCI 端和内部部署端两端执行配置。
-
让我们配置 OCI 端。
- 单击 Site-to-Site VPN 。
- 单击创建 IPSec 连接。
- 输入 IPSec 连接的名称。
- 选择在任务 2 中创建的 CPE。
- 选择将用于终止此 IPSec 连接的 DRG。
- 在要将流量从 OCI 网络路由到的内部部署位置选择路由到内部部署网络 (LAN)。
- 向下滚动。
- 在 IKE 版本中,选择
IKEv1
。 - 在工艺路线类型中,选择静态工艺路线。
- 向下滚动。
- 单击 Show advanced options 。
- 向下滚动。
-
在 OCI 中,我们默认需要创建和配置两个隧道。让我们配置第一个隧道。
- 单击 Phase One (ISAKMP).configuration 的右括号 (>)。
- 向下滚动。
-
在 Phase One (ISAKMP) configuration(第一阶段 (ISAKMP) 配置)部分中,输入以下信息。
- 选择设置定制配置。
- 在定制加密算法中,选择
AES_256_CBC
。 - 在定制验证算法中,选择
SHA_256
。 - 在定制 Diffie-Hellman 组中,选择
GROUP 2
。 - 将 IKE 会话密钥生命周期(秒)默认为
288500
秒。 - 单击第二阶段 (IPSec) 配置的右括号 (>)。
- 向下滚动。
-
在第二阶段 (IPSec) 配置部分中,输入以下信息。
- 选择设置定制配置。
- 在定制加密算法中,选择
AES_256_CBC
。 - 在定制验证算法中,选择
HMAC_SHA2_256_128
。 - 将 IPSec 会话密钥生存期(秒)保持为
3600
秒。 - 选择 Enable perfect forward secrecy 。
- 在 Perfect forward secrecy Diffie-Hellman Group 中,选择
GROUP 5
。
-
配置第二个隧道。
- 使用与第一个隧道相同的配置详细信息。
- 向下滚动。
-
单击创建 IPSec 连接。
-
请注意,IPSec 隧道的生命周期状态均为 PROVISIONING 。
- 请注意,状态已更改为 AVAILABLE 。
- 请注意需要保存的 Oracle VPN IP 地址。配置内部部署隧道需要这些 IP 地址。
注:我们只使用两个 IPSec 隧道之一,因此,我们只关注第一个隧道配置,因此仅收集和保存第一个 IPSec 隧道的第一个 IP 地址。
-
单击 CPE & Tunnels information 。
-
单击显示。
- 请注意,共享密钥是自动生成的。保存此密钥,这是配置隧道另一端(内部部署)所必需的。
- 单击关闭。
任务 4:为内部部署子网配置 Hub 和 Spoke VCN 路由
要在 Hub 和 Spoke 网络体系结构内路由来自内部部署网络的网络流量,我们需要对动态路由网关 (DRG) 和 VCN 路由表进行一些更改。
下图说明了路由表,因此这是我们的起点。
任务 4.1:更新路线导入
-
更新 DRG 中的路由分配组 (
DRG_RDG_IMPORT
)。添加 IPSec 隧道连接类型(优先级 4)。优先级 匹配类型 匹配标准 操作 1 附件 SPOKE_VCN-A_ATTACHMENT ACCEPT 2 附件 SPOKE_VCN-B_ 附件 ACCEPT 3 附件 SPOKE_VCN-C_ATTACHMENT ACCEPT 4 附件类型 IPSec 隧道 ACCEPT -
转到 OCI 控制台。
- 单击左上角的汉堡菜单(≡)。
- 单击网络。
- 单击动态路由网关。
- 单击动态路由网关。
- 单击要用于 VCN 路由环境的 DRG。
- 单击导入路由分配。
- 单击导入路由分配 (
DRG_RDG_IMPORT
)。
-
确保添加新的路由分配语句。
- 请注意,路由分配语句已成功添加。
- 单击动态路由网关详细信息可返回到 DRG 详细信息页。
-
下图展示了到目前为止我们创建的内容的可视化表示。
-
我们已在 DRG 路由表中导入该路由
DRG_RT_HUB_VCN_3
。注:此 DRG 路由表 (
DRG_RT_HUB_VCN_3
) 和路由表附加将确保来自发言人和内部部署 (IPSec) 的所有网络在 DRG 上都已知并了解这些网络,以便 DRG 知道发言人可用的网络以及将请求网络路由到的位置。- 单击 DRG 路由表进行验证。
- 单击
DRG_RT_HUB_VCN_3
路由表。
-
单击获取所有路由规则。
- 请注意,来自内部部署 (
10.222.10.0/24
) 的路由在表中可见。这意味着 DRG 知道如何通过 IPSec 隧道访问内部部署网络 (10.222.10.0/24
)。 - 单击关闭。
- 请注意,来自内部部署 (
-
单击 DRG 返回到 DRG 详细信息页。
任务 4.2:创建新的中心 VCN 路由表并与 IPSec DRG 附加关联
-
在 DRG 中创建新路由表 (
DRG_RT_IPSEC_VC_1
)。目的地 CIDR 下一个跃点附加类型 下一个跃点附加名称 172.16.0.0/24 虚拟云网络 HUB_VCN_ATTACHMENT 172.16.1.0/24 虚拟云网络 HUB_VCN_ATTACHMENT 172.16.2.0/24 虚拟云网络 HUB_VCN_ATTACHMENT 172.16.3.0/24 虚拟云网络 HUB_VCN_ATTACHMENT -
转到 OCI 控制台。
- 单击 DRG 路由表。
- 单击创建 DRG 路由表。
- 输入 DRG 路由表的名称。
- 在静态路由规则中,输入以下信息以添加新的静态规则。
- 目标 CIDR 块:输入
172.16.0.0/24
。 - 下一个跃点连接类型:选择虚拟云网络。
- 下一跃点连接:选择中心 VCN。
- 目标 CIDR 块:输入
- 单击 + 其他规则。
- 添加新的静态规则。
- 目标 CIDR 块:输入
172.16.1.0/24
。 - 下一个跃点连接类型:选择虚拟云网络。
- 下一跃点连接:选择中心 VCN。
- 目标 CIDR 块:输入
- 单击 + 其他规则。
- 添加新的静态规则。
- 目标 CIDR 块:输入
172.16.2.0/24
。 - 下一个跃点连接类型:选择虚拟云网络。
- 下一跃点连接:选择中心 VCN。
- 目标 CIDR 块:输入
- 单击 + 其他规则。
- 添加新的静态规则。
- 目标 CIDR 块:输入
172.16.3.0/24
。 - 下一个跃点连接类型:选择虚拟云网络。
- 下一跃点连接:选择中心 VCN。
- 目标 CIDR 块:输入
- 单击创建 DRG 路由表。
-
几分钟后,将创建路由表。
- 请注意,已创建新的 DRG 路由表 (
DRG_RT_IPSEC_VC_1
)。
- 请注意,已创建新的 DRG 路由表 (
-
下图展示了到目前为止我们创建的内容的可视化表示。
-
我们需要将路由表关联/附加/绑定到 DRG IPSec 隧道附加。
注:此 DRG 路由表 (
DRG_RT_IPSEC_VC_1
) 和路由表附加将确保可从内部部署访问来自发言人的所有网络。这也是控制路由的一种方式,仅允许路由到您希望能够路由到的发言人。- 单击 IPSec 隧道附加。
- 单击第一个附件。
- 请注意,IPSec 附加正在使用自动生成的默认 DRG 路由表。
- 单击编辑。
- 选择上面创建的 DRG 路由表 (
DRG_RT_IPSEC_VC_1
)。 - 单击 Save changes 。
- 请注意,新的 DRG 路由表在第一个 IPSec 隧道的 IPSec 附加上处于活动状态。
- 单击 DRG 返回到 DRG 详细信息页。
-
下图展示了到目前为止我们创建的内容的可视化表示。
注:我们不会更新第二个 IPSec 隧道附加上的 DRG 路由表,因为我们不会在本教程中使用第二个隧道。
任务 4.3:更新中心 VCN 专用子网路由表
最后更新的路由表是与中心 VCN 中的专用子网关联的 VCN 路由表。
-
更新中心 VCN 中的路由表 (
VCN_RT_HUB_PRIVATE_SUBNET
)。将内部部署网络添加到 (
VCN_RT_HUB_PRIVATE_SUBNET
) 表中。目的地 目标类型 目标 路由类型 0.0.0.0/0 NAT 网关 集线器 -nat-gw 静态 172.16.1.0/24 动态路由网关 DRG 静态 172.16.2.0/24 动态路由网关 DRG 静态 172.16.3.0/24 动态路由网关 DRG 静态 10.222.10.0/24 动态路由网关 DRG 静态 注:此 VCN 路由表 (
VCN_RT_HUB_PRIVATE_SUBNET
) 将流量路由到防火墙,以供发言人和内部部署 IPSec 网络使用。传输到 Internet 的流量(非分支网络的所有流量)到 NAT 网关的流量也将由此路由表进行路由。 -
转到 OCI 控制台。
- 单击左上角的汉堡菜单(≡)。
- 单击网络。
- 单击虚拟云网络。
-
单击中心 VCN。
- 单击路由表。
- 单击
VCN_RT_HUB_PRIVATE_SUBNET
路由表。
-
我已经添加了新的路由规则,因此请确保添加它。在路由规则中成功添加后,应如下所示。
-
下图展示了到目前为止我们创建的内容的可视化表示。
任务 5:使用 pfSense 在内部部署中创建站点到站点 VPN
我们已经配置了 IPSec 隧道的 OCI 端。我们来配置内部部署端。我们使用 pfSense 防火墙作为 IPSec 终止端点。
任务 5.1:创建 IPSec 隧道(第 1 阶段 ISAKMP)
-
转至 pfSense 门户。
- 单击 VPN 下拉菜单。
- 单击 IPSec 。
- 单击隧道。
- 单击 + 添加 P1 。
- 输入说明。
- 在密钥交换版本中,选择 IKEv1 。
- 在 Internet Protocol 中,选择 IPv4 。
- 在 Interface(接口)中,选择 WAN 。
- 在远程网关中,输入可以从 OCI 控制台检索的公共 IP 地址。转至网络、客户连接、站点到站点 VPN ,然后单击 VPN。
- 向下滚动。
-
在阶段 1 建议部分中,输入以下信息。
- 在 Authentication Method(验证方法)中,选择 Mutual PSK(互连 PSK)。
- 在 Negotiation mode(协商模式)中,选择 Main(主)。
- 在我的标识符中,选择 IP 地址,然后输入在任务 3 中检索到的内部部署端的本地公共 IP 地址。
- 在对等标识符中,选择 IP 地址,然后输入 OCI 端的远程公共 IP 地址。
- 输入在任务 3 中检索的(预)共享密钥。
- 配置加密算法:
- 演算法:选择 AES 。
- 密钥长度:选择 256 位。
- 散列:选择 SHA256 。
- DH 组:选择 2(1024 位)。- 向下滚动。
- 在使用时间中,输入
28800
秒。 - 在子服务协议关闭操作中,选择重新启动/重新连接。
- 向下滚动。
-
单击保存。
- 请注意,已配置阶段 1 IPSec 配置。
- 单击应用更改提交更改。
- 请注意,更改已成功应用。
- 单击显示阶段 2 条目。
任务 5.2:创建 IPSec 隧道(第 2 阶段 IPSec)
-
单击 + 添加 P2 。
- 输入说明。
- 在模式中,选择路由 (VTI) 。
- 选择本地(内部部署)网络。
- 选择远程 (OCI) 网络。
- 向下滚动。
- 在 Protocol(协议)中,选择 ESP 。
- 在加密算法中,选择 AES 256 位。
- 在散列算法中,选择 SHA256 。
- 在 PFS 密钥组中,选择 5 (1536 bit) 。
- 在使用时间中,输入 3600 秒。
- 向下滚动。
-
单击保存。
- 请注意,已配置阶段 1 IPSec 配置。
- 单击统计信息。
-
请注意,状态为已建立。
-
让我们验证 OCI 端的隧道状态。转到 OCI 控制台,导航到网络、客户连接、站点到站点 VPN ,然后单击 VPN。请注意,第一个隧道的 IPSec 状态为 Up 。
任务 5.3:启用隧道接口
-
我们需要在内部部署端启用隧道接口。转至 pfSense 门户。
- 单击 Interfaces(接口)下拉菜单。
- 单击分配。
- 请注意,有一个新的 VTI 接口可用。
- 单击 + 添加可添加接口。
- 请注意,已添加接口。
- 单击添加的隧道接口 (
OPT1
)。
- 选择 Enable interface(启用接口)以启用接口。
- 单击保存。
任务 5.4:打开 IPSec 的防火墙规则
-
要允许 IPSec 流量通过隧道,我们需要添加一些防火墙规则。
- 单击 Firewall(防火墙)下拉菜单。
- 单击规则。
- 单击 IPSec 。
- 请注意,没有与 IPSec 相关的防火墙规则。
- 单击添加。
-
输入以下信息。
- 操作:选择通过。
- 接口:选择 IPSec 。
- Address Family(地址系列):选择 IPv4 。
- Protocol(协议):选择 Any(任何)。
- 来源:选择任何。
- 目标:选择任何。
- 向下滚动。
-
单击保存。
- 请注意,新规则已到位。
- 单击应用更改提交更改。
-
请注意,更改已成功应用。
任务 5.5:配置 IPSec 路由
在本任务中,我们将配置路由,以便 pfSense 防火墙知道如何通过 IPSec 隧道和 OPT1
接口访问 OCI 网络。
-
转至 pfSense 门户。
- 单击 System(系统)下拉菜单。
- 单击路由。
- 在默认网关 IPv4 中,选择要用作第一个优先级的
WAN_DHCP
或默认网关。 - 单击 + 添加以添加新网关。
- 在 Interface(接口)中,选择
OPT1
(隧道接口)。 - 在地址系列中,选择
IPv4
。 - 输入名称。
- 在 Gateway(网关)中,不指定任何 IP 地址,请留空。
- 向下滚动。
-
单击保存。
- 请注意,已为 IPSec 隧道添加了新网关。
- 单击 Static Routes 。
-
单击 + Add 以添加新的静态路由。
- 输入 OCI 网络的目标网络。
- 选择 OCI 网络的目标子网。
- 选择上面创建的网关。
- 单击保存。
-
请注意,将添加新的静态路由,该路由将使用隧道接口路由发往 OCI 网络的流量。
任务 6:配置内部部署路由
我们使用 pfSense(即 IPSec VPN 端点)进行路由。我们需要确保本地部署网络的其余部分知道如何访问 OCI 网络。因此,我们需要将发往 OCI 的所有流量路由到 pfSense VPN 端点。
在测试内部部署计算客户端上配置路由
我们使用 pfSense 实例来模拟内部部署网络。
注:此实例与我们刚才用来配置 IPSec 隧道的实例不同!
-
转至 PfSense 门户。
- 单击 System(系统)下拉菜单。
- 单击工艺路线。
- 选择
WAN_DHCP
或将用作第一个优先级的默认网关。 - 单击 + 添加以添加新网关。
- 在接口中,选择
LAN
。 - 在地址系列中,选择
IPv4
。 - 输入名称。
- 输入其他 pfSense 实例的 LAN IP 地址,即终止 IPSec 隧道的 LAN IP 地址。
- 向下滚动。
-
单击保存。
- 请注意,为我们的其他 pfSense 实例添加了一个新网关。
- 单击 Static Routes 。
-
单击 + Add 以添加新的静态路由。
- 选择 OCI 网络的目标网络。
- 选择 OCI 网络的目标子网。
- 选择上面创建的网关。
- 单击保存。
-
请注意,将添加新的静态路由,该路由将使用其他 pfSense 实例路由到 OCI 网络的流量。
任务 7:验证连接
我们已经配置了 VPN,添加了正确的防火墙规则,并配置了路由,现在可以测试连接。
任务 7.1:从内部部署到 Spoke VCN A 的试通
-
由于路由配置:
- 流量将发送到(内部部署)pfSense VPN 实例。
- 流量通过 IPSec VPN 隧道发送到 DRG。
- 然后,DRG 将流量路由到 OCI pfSense 防火墙。
- OCI pfSense 防火墙将根据配置的防火墙规则允许或拒绝流量。
- 接受 ICMP 流量时,它将流量路由到 Spoke 实例。
-
从 VPN pfSense 内部部署实例执行 ping 测试。
- 单击 Diagnostics 下拉菜单。
- 单击 Ping 。
- 输入主机名,该主机名是 Spoke VCN A 实例的 IP 地址。
- 在 IP Protocol 中,选择
IPv4
。 - 在源地址中,选择
LAN
接口。 - 在最大 ping 数中,选择
3
。 - 单击 Ping 。
- 请注意,我们存在 0% 数据包丢失。
-
我们还可以从其他 pfSense 实例(客户机)执行测试。从客户端 pfSense 内部部署实例执行 ping 测试。
- 单击 Diagnostics 下拉菜单。
- 单击 Ping 。
- 输入主机名,该主机名是 Spoke VCN A 实例的 IP 地址。
- 在 IP Protocol 中,选择
IPv4
。 - 在源地址中,选择
LAN
接口。 - 在最大 ping 数中,选择
3
。 - 单击 Ping 。
- 请注意,包丢失率为 0% 。
任务 7.2:从 Spoke VCN B 到内部部署的试通
-
由于路由配置:
- 流量将发送到 DRG。
- 然后,DRG 将流量路由到 OCI pfSense 防火墙。
- OCI pfSense 防火墙将根据配置的防火墙规则允许或拒绝流量。
- 接受 ICMP 流量时,它将流量路由回 DRG。
- 流量通过 IPSec VPN 隧道发送到内部部署 pfSense 实例。
- 连接到分支 B VCN 实例。
- 对内部部署 pfSense VPN 实例 (
10.222.10.1
) 的 LAN IP 地址执行 ping 操作。 - 请注意,包丢失率为 0%,因此 ping 成功。
- 对内部部署 pfSense 客户端实例 (
10.222.10.100
) 的 LAN IP 地址执行 ping 操作。 - 请注意,包丢失率为 0%,因此 ping 成功。
任务 7.3:检查 OCI 上的 IPSec VPN 网络统计信息
-
转到 OCI 控制台。
- 单击左上角的汉堡菜单(≡)。
- 单击网络。
- 单击 Site-to-Site VPN 。
-
单击 VPN。
-
单击第一个隧道。
- 请注意,隧道状态以二进制状态显示常量
1
,指示隧道不断启动。 - 向下滚动。
- 请注意,已接收数据包和已发送数据包的图形达到峰值,这是由于我们在任务 7.1 中执行的 ping。
- 请注意,已接收数据包和已发送数据包的图形达到峰值,这是由于我们在任务 7.2 中执行的 ping。
- 请注意,隧道状态以二进制状态显示常量
任务 7.4:检查 pfSense VPN 实例(内部部署)上的 IPSec VPN 网络统计信息
-
转至 PfSense 门户。
- 单击状态下拉菜单。
- 单击 IPSec 。
-
单击显示子服务协议条目(1 个连接)。
-
请注意,数据包和字节进入并退出。
Network Visualizer
添加 VPN 后,我们可以使用 OCI 控制台上的网络可视化工具来获得网络概述。
-
转到 OCI 控制台。
- 单击左上角的汉堡菜单(≡)。
- 单击 Network 。
- 单击网络可视化工具。
-
您可以看到四个 VCN(一个 Hub 和三个 Spokes)以及与 VPN 连接的内部部署。
确认
- 作者 - Iwan Hoogendoorn(OCI 网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Connect On-premises to OCI using an IPSec VPN with Hub and Spoke VCN Routing Architecture
G10335-01
June 2024