【问题标题】:AWS site-to-site VPN high availabilityAWS 站点到站点 VPN 高可用性
【发布时间】:2019-11-08 10:38:48
【问题描述】:

我有两台 FreeBSD 服务器作为防火墙,配置了 carp IP 地址,可以在两台服务器之间浮动以实现高可用性。

现在我已经使用racoonipsec-tools 在AWS 上设置了到我的VPC 的ipsec 隧道。 我必须在我的公共网络接口上配置两个 169.254.x.x IP 地址才能使隧道正常工作。

问题在于,如果我的防火墙故障转移,我将不得不在另一个防火墙上添加两个 169.254.x.x ip 地址。

我尝试在环回接口上添加 169.254.x.x ip 地址,但没有成功。

我目前的解决方案是在我的第一台服务器上添加一个 IP 地址(169.254.33.120),在第二台服务器上添加另一个 IP 地址(169.254.35.140)。 但是使用这个解决方案,我失去了冗余,因为只有一个隧道在运行。

有人有更好的解决方案吗?

【问题讨论】:

  • 其实我可以在其他接口上添加169.254.x.x地址,隧道还是可以的;它只是在环回接口上不起作用

标签: amazon-web-services vpn freebsd vpc ipsec


【解决方案1】:

您可以拥有自己的私有范围10.x.x.x/16,不一定使用Link-local 范围169.254.0.0/16

为了设置 VPN,AWS 为每个 VPN 提供 2 个端点,您必须配置这些端点并确保它们都正常工作,两条隧道应在 AWS GUI 中显示为 UP(绿色),但只有一个将激活路由流量https://docs.aws.amazon.com/vpc/latest/adminguide/Introduction.html

现在棘手的部分(HA/failover IPSEC_NAT_T)是如何在隧道发生故障时在隧道之间路由流量。如果使用 raccon,来自https://docs.netgate.com/pfsense/en/latest/solutions/aws-vpn-appliance/vpc-wizard-faq.html:

Amazon 提供了两个隧道端点,允许在您的网络和您连接的远程 VPC 之间发送流量。 pfSense 中的 racoon 守护程序只能为单个隧道上的特定源/目标对建立活动的阶段 2 关联。本地子网和远程 VPC 子网之间的第 2 阶段关联在 pfSense GUI 中为两条隧道配置,但 racoon 实际上只会为第一个隧道建立关联。这意味着 racoon 只会尝试通过第一条隧道发送去往远程 VPC 子网的流量。如果该隧道出现故障,第二个隧道可能会启动,并且来自远程 VPC 的入站流量可能会通过该隧道自动发送到您的本地网络。但是到您的远程 VPC 的出站流量不会自动故障转移到第二个隧道。为了让您通过第二个隧道发送出站流量,您需要禁用第一个隧道的阶段 2 关联并应用更改。

您可以同时开通两条隧道,但需要找到一种使用方式(路由流量)

strongswan 是另一种选择,我认为可以简化隧道关闭时的处理。

作为参考并更好地了解这些概念,以下是使用 paloalto 设备的方法:https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClFiCAK

因此,您几乎需要一个 VR(虚拟路由器)、推广您的路线等。如果可能的话,发回您的解决方案。

【讨论】:

  • 感谢您的信息。如果我不添加链路本地地址,则无法建立隧道。我的配置与 blog.heptanalytics.com/2018/03/19/… 类似,只是我运行的是 FreeBSD。
  • 可能这个nbari.com/post/terraform-full-vpc 可以让您了解如何使用10.13.0.0/16 使用不同的范围,FreeBSD 工作得非常好和干净,请尝试使用 AWS 提供的 generic 配置进行首次测试隧道并到达您的所有网络,稍后尝试使其冗余