亚马逊云AWS搭建基于BGP动态路由的硬件VPN(Site to Site VPN)教程

  在挨踢小茶之前的文章亚马逊云AWS搭建基于静态路由的硬件VPN(Site to Site VPN)教程中讲解了如何使用pfsense来与VPC VGW (Virtual Private Gateway)建立基于静态路由的IPSec VPN,这次我将会讲解如何使用Cisco CSRv1000与VGW建立基于动态路由协议BGP的IPSec VPN

  其实也可以用任何支持VPC VGW的硬件设备来完成这个实验(支持的设备列表看这里),但是鉴于手上并没有空闲的硬件,因此在韩国区域建立了一个Cisco CSRv1000的EC2实例来模拟实际的硬件路由器。刚开始的时候,挨踢小茶尝试多次在东京区域创建Cisco CSR路由器都会出现一些莫名其妙的问题,实例启动后可以ping得通,但是ssh (TCP 22)端口就是无法访问。Security Group和NACL都已经允许了相关流量,而且同一个配置的其他新实例(比如说普通的Amazon Linux AMI)均没有这个问题。不知道是否是Cisco CSR在某些区域的AMI有问题?这就不得而知了。

  可从下图看出,左边是韩国区域,建立了一个模拟路由器的实例,并且在区域中创建了一个VPC (172.31.0.0/16)以及相应的Public Subnet,连接Internet Gateway,保证能连接互联网。右边是悉尼区域,创建了一个VPC (10.0.0.0/16)以及相应的Private Subnet,不需要连接因特网。两端的VPC建立Site to Site VPN隧道,并且使用动态路由协议BGP进行路由交换。

Site to Site VPN using BGP

  如果站点很少,并且网段数量少的情况下,可以使用静态路由。但是如果站点比较多,或者要使用Cloudhub等架构的时候,动态路由协议会更灵活,方便。同时,如果有双线需要负载均衡或者热备的时候则最好使用带动路由协议。

韩国区域(模拟客户网络)创建VPC和实例

其实这次在韩国区域使用的是默认的VPC,但是还是稍微过一下创建VPC的流程吧

  1. 创建一个新的VPC,并且定义地址范围为172.31.0.0/16
  2. 创建一个新的网段,并且定义地址范围为172.31.0.0/20
  3. 创建Internet Gateway,因为创建新的VPC是不会自动创建Internet Gateway的,因此默认情况下你不能访问任何互联网上的资源。所以这里需要手动创建一个Internet Gateway
  4. 编辑路由表,添加一条目的地址为0.0.0.0/0的路由,下一跳指向刚刚创建的Internet Gateway。这样子子网内的主机才知道,如果访问非本地的内容,要先去Internet Gateway,然后出去因特网。
  5. 编辑子网,启用“Modify auto-assign IP settings”,这样新创建的主机才会自动分配公网地址。也可以不启用,在创建主机的时候手动更改IP配置选项。
  6. 创建一个EC2实例,在AWS市场中搜索“cisco byol”
    Cisco CSR from AWS Marketplace
  7. 按照指引完成EC2的创建,过程中需要选择网络为刚刚创建的VPC,并且保证Security Group允许了ICMP和SSH流量。

悉尼区域创建VPC,VGW和VPN连接

  1. 创建一个新的VPC,地址为10.0.0.0/16
  2. 创建这个VPC内的一个子网(私有网络),地址为10.0.0.0/24
  3. 创建一个VGW(Virtual Private Gateway),作为AWS VPC的VPN连接节点,这个VGW默认会包含两个公网地址作为Tunnel的连接节点
  4. 将这个VGW绑定到刚才创建的VPC中
  5. 启用子网的Route Propagation,这样子子网才会继承VGW上的所有动态/静态路由,因此才能从这个子网访问到VPC外的资源
    Enable Route Propagation on Route Tables
  6. 创建客户端网关CGW(Customer Gateway),这里输入的IP地址为在韩国区域创建的EC2的公网地址,本次实验选择的是动态路由的方式,BGP ASN可以用默认给的也可以使用自己的ASN
    Create CGW
  7. 创建一个VPN连接,自定义一个名字,然后选择刚才创建的VGW和CGW。路由方式选择动态
    Create VPN Connection
  8. 下载VPN配置文件,在这里可以选择不同的厂家和平台,这里我们选择厂家是Cisco,平台是Cisco CSRv AMI,软件版本默认即可
    Download VPN Configuration
  9. 基本上按照配置文件的内容(需要做一点点小更改),粘贴到之前创建的Cisco CSRv1000的实例里面,就可以很容易完成VPN的配置

验证VPN连接

  登陆到路由器上,可以看到已经建立了两个BGP的邻居,证明已经成功和VGW建立Tunnel并且成功交换路由条目。show ip bgp summary on Cisco CSR

  并且可以通过BGP从邻居学到了悉尼区域VPC的子网信息。

BGP Recvied Routes

  从AWS Console上可以看到VPN连接的状态,此时也可以看到两个Tunnel的状态都是UP,并且都已经能收到BGP的路由(条目数为1)。

Tunnel Details of VPN Connection

  这个时候,在悉尼区域创建了一台主机(地址为10.0.0.47),并且从路由器上ping这个主机发现已经可以通了。证明这个Site to Site的连接建立成功。

Ping from Cisco CSR to test server

总结

  在大部分情况下,能用动态路由协议的时候不要使用静态路由协议,并且在混合架构环境下(比如说双VPN或者VPN+DX线路)只有动态路由协议能控制线路的动态切换和负载均衡。AWS只能支持BGP这种动态路由协议,但是功能蛮强大的。如果存在多个用户站点和同一个VGW建立VPN连接,那么这两个用户站点之间是可以通过VGW做路由中转互访,这个也是AWS VPN CloudHub的特性,这个可以在以后的文章中详细介绍一下。


扫描下面二维码添加公众号【挨踢茶馆】,并回复微信群。您将被邀请进入AWS群,走向人生巅峰,迎娶白富美!  
 
 » 除非注明,本博客文章均为挨踢小茶原创,转载请以链接形式标明本文地址
该日志由 挨踢小茶 于2017年12月27日发表在 AWS, 云计算 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 亚马逊云AWS搭建基于BGP动态路由的硬件VPN(Site to Site VPN)教程 | 挨踢茶馆
关键字: , , ,

亚马逊云AWS搭建基于BGP动态路由的硬件VPN(Site to Site VPN)教程:目前有5 条留言

  1. 沙发
    筑楼:

    成本怎么样? 没有列个成本费用表?

    2017-12-27 下午 10:33 [回复]
    • AWS的计费非常复杂哈,大致上有VPN链接的0.5 USD/小时以及EC2实例的不到0.1 USD/小时,还有流量的费用等等……

      2017-12-27 下午 11:07 [回复]
      • 一直没敢用,总觉得有坑,博主用起来比阿里云便宜么

        2017-12-28 下午 12:49 [回复]
        • 阿里云会便宜一些哈,AWS最麻烦的就是收费条款很复杂,而且相对贵一些。不过AWS功能是在太强大了,阿里云在这点上还落后很多年吧。

          2017-12-28 下午 3:13 [回复]

发表评论



快捷键:Ctrl+Enter

使用以下社交账号登陆: