使用Libreswan和Ubiquiti EdgeRouter为Google Cloud设置IPsec VPN

文章目录

 

资料来源 https://medium.com/@earlg3/setting-up-an-ipsec-vpn-to-google-cloud-with-libreswan-ubiquiti-edgerouter-39f064559fcb

使用Libreswan和Ubiquiti EdgeRouter为Google Cloud设置IPsec VPN

使用Google Cloud设置Site-to-Site IPsec VPN 最佳做法是使用Cloud VPN服务。GCP中的云端VPN服务提供了99.9%的SLA,由Google进行管理。但是,它每个隧道的费用平均为每小时0.05美元,加上定期交通费,因此如果使用24/7将花费36.50美元,这对于生产环境来说当然是合理的。为了测试或实验目的,Google Compute Engine(GCE)实例也可以以较低的成本执行VPN功能。

对于不需要大量吞吐量的实验室用途,作为GCP免费套件一部分Always Free f1-micro实例可以做到这一点。F1-微已经1共享的vCPU和.6GB的RAM,但将用于测试和实验室使用工作。在这种情况下,由于f1-micro是免费的,成本将是常规流量费率以及超出Always Free层限制的任何费用。


GCP互联网出口率

因此,理论上讲,如果脚本设置为监视VPN并管理故障转移以及所有爵士乐,则可以使用多个功率更高的实例配置此GCE设置。然而,这将是乏味的,因此生产只需使用Google Cloud VPN。

以下指南将详细介绍将运行Libreswan的Google Compute Engine(GCE)实例连接到具有Ubiquiti EdgeRouter的单独网络的步骤另一端没有任何需要Ubiquiti设备的东西,但它是一种流行的实验室路由器,避免了在另一端管理虚拟机。如果在另一端有其他更喜欢的东西,则交换它应该是微不足道的。该示例与AWS’“ 将多个VPC与EC2实例连接 ”教程中描述的行为相似,以供参考。

毫不费力,让我们开始吧。我们将通读以下内容:

  1. 为Libreswan创建GCE实例
  2. 为Libreswan配置GCE实例
  3. 配置Ubiquiti EdgeOS
  4. 确认直接连接
  5. 创建要连接的网络的GCP路由
  6. 确认网络连接

以下是此示例设置中使用的参数,但应更改以符合实际环境:

GCE实例名称: gcp-vpn-01 
GCE实例IP(内部): 10.1.2.2 
GCE实例IP(外部): 35.185.42.90 
GCP XPN网络范围: 10.1.0.0/16
Lab External IP: 104.139.101.201 
实验室网络范围: 192.168.1.0/24

为Libreswan创建GCE实例

概观

如果使用跨项目网络,请在您的XPN主机项目中创建实例如果只是为了创建单个项目的VPN,只需在该项目中创建它即可。

在这个例子中选择CentOS 7作为发行版,所以如果使用Debian或Ubuntu,那么所显示的命令将会在所使用的软件包管理器,以及可能的文件位置等方面略有变化。

GCP VPN实例概述

联网

如果您已经设置了跨项目网络(XPN),将GCE VPN实例放入XPN网络中将使服务项目能够使用连接,而不仅仅是在单个项目中可用。

创建GCE实例时,请确保选择静态IP而不是短暂的,以便实例重新启动时不需要更改IP。记下在设置过程中使用的静态IP(例如35.185.42.90)。另外,请记下我们将在GCP端连接的子网范围(例如10.1.0.0/16)。

您还需要确保“ IP转发 ”已打开。这相当于AWS中的“禁用源/目标检查”,并允许实例路由流量。

GCP VPN实例的网络设置

理想情况下,一定要创建适当的防火墙规则,只允许GCE VPN实例只与其他已批准的网络通信。不建议将VPN实例保持开放。

为Libreswan配置GCE实例

实例配置完成后,继续通过SSH登录。

创建GCP VPN实例

安装libreswan

根据您的发行版本,安装“openswan”将安装openswan或libreswan,但两者看起来大多是兼容的。在GCP实例中运行以下命令来安装openswan:sudo yum install openswan -y

Libreswan安装

配置Openswan

默认情况下,libreswan包含任何配置文件/etc/ipsec.d/*.conf我们将gcp-to-lab.conf在这里创建并放置我们的配置。

conn gcp-to-lab 
    type = tunnel 
    authby = secret 
    left =%defaultroute 
    leftid = 35.185.42.90 
    leftnexthop =%defaultroute 
    leftsubnet = 10.1.0.0 / 16 
    right = 104.139.101.201 
    rightsubnet = 192.168.1.0 / 24 
    pfs = yes 
    auto = start

我们还需要一个.secrets文件,其中将包含我们的预共享密钥。gcp-to-lab.secrets在里面创建/etc/ipsec.d/

35.185.42.90 104.139.101.201:PSK“PRESHARED_KEY_HERE”

在创建这两个文件后,您应该在里面看到它们以及一些默认文件/etc/ipsec.d/

配置Openswan /etc/ipsec.d/文件夹

启动Openswan

执行以下命令启动openswan: sudo systemctl start ipsec.service

如果你运行ps ax|grep ipsec,你现在应该看到它正在运行:

Openswan跑步

使用以下命令启用Openswan启动: sudo systemctl enable ipsec.service

将以下内容添加到/etc/sysctl.conf中:

net.ipv4.ip_forward = 1
 net.ipv4.conf.all.accept_redirects = 0
 net.ipv4.conf.all.send_redirects = 0

重新启动网络: sudo /etc/initd.network restart

此时,GCP实例已配置,因此我们转到Ubiquiti确认。

配置Ubiquiti EdgeOS

通过GUI登录到EdgeMAX; 这也可以通过CLI进行配置,但GUI非常简单。

导航到EdgeRouter的VPN部分:

VPN标签截图

选择“IPsec站点到站点”选项卡,配置对等设置,然后选择“应用”。

VPN配置设置示例(* PSK临时用于演示目的)

确认直接连接

重新启动GCP实例以确保Libreswan在启动时启动并正确连接。

重新启动后,登录并运行以下命令:service ipsec status显示“IPsec SA建立隧道模式”的状态。

成功Openswan状态

尝试从GCP VPN实例ping实验室网络(例如192.168.1.100):

从GCP成功Pinging实验室

尝试从实验室网络ping通GCP VPN:

成功从实验室Ping GCP

创建要连接的网络的GCP路由

直到此时,在GCP实例(即gcp-vpn-01)和实验室网络(192.168.1.0/24)之间创建了一个VPN,但其余的GCP网络尚未配置为可以到达实验室网络。为了解决这个问题,我们需要在GCP网络中创建一个路由。

导航到主机项目中的网络 – >路由。选择“创建路线”。配置类似于以下的路由:

通过VPN实例路由到实验室网络的示例

确认网络连接

从不相关的Google Compute Engine实例中,尝试ping到实验室网络。它应该是成功的:

从GCP网络到实验室网络的成功VPN连接

反之亦然:

从实验室网络到GCP网络的成功VPN连接

最后的想法

实验室网络和GCP网络之间的连接已经建立。没有冗余,并且如果EdgeRouter或GCE实例发生故障,则VPN网络连接断开。配置的GCE实例很小,所以性能不是目标。也就是说,如果测试或要求允许这些注意事项,那么实验室和GCP网络之间的连接是一个很好且相对便宜的连接。

要进行制作,请使用Google Cloud VPN

 

 

原文链接:,转发请注明来源!

发表评论