在开始配置 OpenSWAN Customer Gatewayy之前,我们需要向 OpenSWAN EC2 实例安全组添加入站规则,以允许 UDP 500 和 UDP 4500。
UDP 500 用于 IKE(Internet Key Exchange)协议协商,以建立初始 IPSec 隧道身份验证和密钥交换,而 UDP 4500 用于 NAT-T(NAT 穿越),当客户网关位于 NAT 后面时,用于封装 IPSec 流量,允许加密的 ESP 数据包穿越网络地址转换设备。


我们现在将 OpenSWAN EC2 实例配置为Customer Gateway以建立 VPN 隧道。我们将使用之前下载的配置文件来配置 VPN 连接。请注意,由于 OpenSWAN 缺乏内置故障转移功能,我们只配置一个tunnel。
在文本编辑器中打开已下载的 VPN 配置文件。我们将使用这些设置来配置 OpenSWAN 的隧道 1。
在 EC2 Dashboard 中导航到实例。
选择 OpenSWAN EC2 实例并点击”连接"。
选择”Session Manager“选项卡,点击”连接“以打开 shell。

/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 外部 IPleftsubnet=10.5.0.0/24rightsubnet=10.1.0.0/24conn 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
注意从上面直接复制,不要在下载的文件里更改,因为里面会多几行配置,后面运行的时候会报错
sudo vim /etc/ipsec.d/aws.secrets

sudo systemctl enable ipsec.service
sudo systemctl start ipsec.service
sudo ipsec status

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

在 Transit Gateway Attachment 就位且 AWS VPN 隧道启动后,下一步是配置 AWS 与on-prem网络之间的路由。通过向 Transit Gateway Route Table 和 EC2 路由表添加特定路由,我们将实现从 Bastion Host(位于 Central VPC 中)到 OnPrem-VPN-EC2 实例的安全流量传输。
在 VPC 控制台中导航到 “Transit Gateway Route Tables"。
打开默认的 Transit Gateway Route Table。
在 Associations 选项卡中,确认 VPN attachment association 存在。
选择 Routes 选项卡并选择添加静态路由:

10.5.0.0/24
在 VPC Dashboard 中导航到 Route Tables。
选择 Central-Private-RT,向下滚动到 Routes 选项卡,然后点击 “Edit routes"。
添加到 On-Prem VPC 的路由:
10.5.0.0.0/24点击 “Save changes”

在 VPC Dashboard 中导航到 Route Tables。
选择 OnpremVPN-Private-RT,向下滚动到 Routes 选项卡,然后点击 “Edit routes"。
添加到 Central-VPC 的路由:
10.1.0.0/24点击 “Save changes”

让我们通过从模拟本地环境中的 OnPrem-VPN-EC2 实例 ping Bastion Host(位于 Central VPC 的私有子网中)来验证连接。
使用 IKEv1 时,AWS VPN 连接只能从客户端发起,因此我们需要从模拟的 OnPrem 环境向我们的某个 AWS VPC 发送一些流量。
在 EC2 Dashboard 中导航到 Instances。
选择 OnPrem-VPN-EC2 EC2 实例。
选择 “Session Manager” 选项卡,然后点击 “Connect” 打开 shell。
测试连接:
ping <Bastion Host 的私有 IP>
隧道启动并开始看到 ping 响应可能需要最多 30 秒。

on-prem网络和AWS VPC成功建立了连接。(注意上面的两个IP可能不同,根据实际情况进行替换)
通过完成本次实验,我们构建了一个强大、可扩展的混合网络架构,将Direct Connect的可靠性与VPN备份的灵活性相结合,所有这些都通过Transit Gateway集中管理——使我们的组织能够自信地加速其混合云之旅,并遵循安全、性能和弹性的最佳实践。