配置VPN连接 - II

配置 OpenSWAN 并建立隧道

在开始配置 OpenSWAN Customer Gatewayy之前,我们需要向 OpenSWAN EC2 实例安全组添加入站规则,以允许 UDP 500 和 UDP 4500

UDP 500 用于 IKE(Internet Key Exchange)协议协商,以建立初始 IPSec 隧道身份验证和密钥交换,而 UDP 4500 用于 NAT-T(NAT 穿越),当客户网关位于 NAT 后面时,用于封装 IPSec 流量,允许加密的 ESP 数据包穿越网络地址转换设备。

  1. 在 EC2 Dashboard 中,导航到安全组
  2. 选择与 OpenSWAN-Customer-Gateway 实例关联的安全组,名为”OnpremVPN-SG
  3. 点击入站规则,然后点击编辑规则

  1. 点击添加规则两次。添加tunnel 1的500和4500 UDP端口:

image-20260315222545390

将 OpenSWAN EC2 配置为Customer Gateway

我们现在将 OpenSWAN EC2 实例配置为Customer Gateway以建立 VPN 隧道。我们将使用之前下载的配置文件来配置 VPN 连接。请注意,由于 OpenSWAN 缺乏内置故障转移功能,我们只配置一个tunnel。

  1. 在文本编辑器中打开已下载的 VPN 配置文件。我们将使用这些设置来配置 OpenSWAN 的隧道 1

  2. 在 EC2 Dashboard 中导航到实例

  3. 选择 OpenSWAN EC2 实例并点击”连接"。

  4. 选择”Session Manager“选项卡,点击”连接“以打开 shell。

  1. /etc/ipsec.d 中创建 aws.conf 文件:
sudo vim /etc/ipsec.d/aws.conf

从下载的文件中复制配置,替换以下内容:

  • X.X.X.X 替换为我们的Customer Gateway IP(OpenSwan EC2)
  • Y.Y.Y.Y 替换为隧道 1 外部 IP
  • leftsubnet=10.5.0.0/24
  • rightsubnet=10.1.0.0/24
conn Tunnel1
    authby=secret
    auto=start
    left=%defaultroute
    leftid=X.X.X.X
    right=Y.Y.Y.Y
    type=tunnel
    ikelifetime=8h
    keylife=1h
    phase2alg=aes_gcm
    ike=aes256-sha2_256;dh14
    keyingtries=%forever
    keyexchange=ike
    leftsubnet=10.5.0.0/24
    rightsubnet=10.1.0.0/24
    dpddelay=10
    dpdtimeout=30
    dpdaction=restart_by_peer

注意从上面直接复制,不要在下载的文件里更改,因为里面会多几行配置,后面运行的时候会报错

  1. 创建并配置 aws.secrets:
sudo vim /etc/ipsec.d/aws.secrets
  1. 将第 5 步中的预共享密钥行复制并粘贴到 secrets 文件中。

image-20260315223051634

  1. 启用并启动 OpenSWAN:
sudo systemctl enable ipsec.service

sudo systemctl start ipsec.service

sudo ipsec status
  1. 成功的状态输出应显示:
    • 已认证的 IPsec 安全关联(SA)
    • 三行显示隧道连接详情
    • 返回 AWS Site-to-Site VPN 连接,隧道 1 的状态应显示为 UP

注意这个状态的显示可能会延迟一分钟:

image-20260315223753027

测试 VPN 连接

在 Transit Gateway Attachment 就位且 AWS VPN 隧道启动后,下一步是配置 AWS 与on-prem网络之间的路由。通过向 Transit Gateway Route Table 和 EC2 路由表添加特定路由,我们将实现从 Bastion Host(位于 Central VPC 中)到 OnPrem-VPN-EC2 实例的安全流量传输。

VPN 的 Transit Gateway Route Table

  1. 在 VPC 控制台中导航到 “Transit Gateway Route Tables"。

  2. 打开默认的 Transit Gateway Route Table

  3. Associations 选项卡中,确认 VPN attachment association 存在。

  4. 选择 Routes 选项卡并选择添加静态路由

image-20260315224043554

  • 输入本地 CIDR 块:10.5.0.0/24
  • Attachment:选择新的 VPN attachment “VPN-TGW-Attachment”
  • 点击 “Create Static Route

image-20260315224139736

Central-VPC 路由表

  1. 在 VPC Dashboard 中导航到 Route Tables

  2. 选择 Central-Private-RT,向下滚动到 Routes 选项卡,然后点击 “Edit routes"。

  3. 添加到 On-Prem VPC 的路由:

    • 目标地址:10.5.0.0.0/24
    • Target:从下拉菜单中选择 Transit gateway,然后选择 Central-VPC-TGW-Attachment
  4. 点击 “Save changes

  1. Central-VPC 中的 Bastion Host 现在将能够路由到模拟的on-prem环境

On-Prem-VPC 路由表

  1. VPC Dashboard 中导航到 Route Tables

  2. 选择 OnpremVPN-Private-RT,向下滚动到 Routes 选项卡,然后点击 “Edit routes"。

  3. 添加到 Central-VPC 的路由:

    • 目标地址:10.1.0.0/24
    • Target:从下拉菜单中选择 EC2 Instance,然后选择 OpenSWAN-Customer-Gateway EC2 实例
  4. 点击 “Save changes

image-20260315224349066

  1. OnPrem-VPC-VPN 中的服务器现在将能够路由到 Central-VPC。

验证连接

让我们通过从模拟本地环境中的 OnPrem-VPN-EC2 实例 ping Bastion Host(位于 Central VPC 的私有子网中)来验证连接。

使用 IKEv1 时,AWS VPN 连接只能从客户端发起,因此我们需要从模拟的 OnPrem 环境向我们的某个 AWS VPC 发送一些流量。

  1. 在 EC2 Dashboard 中导航到 Instances。

  2. 选择 OnPrem-VPN-EC2 EC2 实例。

  3. 选择 “Session Manager” 选项卡,然后点击 “Connect” 打开 shell。

  4. 测试连接:

ping <Bastion Host 的私有 IP>

隧道启动并开始看到 ping 响应可能需要最多 30 秒。

on-prem网络和AWS VPC成功建立了连接。(注意上面的两个IP可能不同,根据实际情况进行替换)

总结

通过完成本次实验,我们构建了一个强大、可扩展的混合网络架构,将Direct Connect的可靠性与VPN备份的灵活性相结合,所有这些都通过Transit Gateway集中管理——使我们的组织能够自信地加速其混合云之旅,并遵循安全、性能和弹性的最佳实践。