挨踢茶馆

  • 首页
  • AWS
  • 网络技术
    • 思科语音
    • 路由交换
  • 给我留言
  • 关于我
挨踢茶馆
专注于网络技术、云计算的技术博客
  1. 首页
  2. AWS
  3. 正文

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

2017 年 12 月 18 日 23328点热度 0人点赞 5条评论

如之前使用软件VPN,硬件VPN或AWS DirectConnect连接客户网络与AWS所说,要连接AWS VPC网络和客户端网络的方式有3种。之前一篇文章亚马逊云AWS搭建软件VPN(Client VPN)教程已经介绍了如何使用软件VPN的方法,下面介绍下如何使用硬件VPN。这种方式的VPN实际上是通过客户网络的硬件与亚马逊AWS VPC的VGW(Virtual Private Gateway)建立一条IPSec VPN隧道,因此也可以叫做Site to Site VPN。

因为挨踢小茶手头上没有找到可用的可以充当硬件CGW(Customer Gateway)的设备,因此先是尝试使用家里闲置的树莓派(Ubuntu内核)来做这个实验,但是以失败告终,可能是因为Ubuntu版本和配置文件不匹配造成的。然后又尝试了OpenVPN Access Server EC2实例,也以失败告终……最后没有办法,找到了著名的防火墙软件pfSense来做才成功。pfSense有很丰富的GUI界面,因此对于Linux CLI不太熟悉的朋友,使用这个软件也比较省心一些。

大致上拓扑是这样的,我在日本东京区域建立了一个VPC(192.168.0.0/16)以及一个公共网段192.168.1.0/24,模拟客户网络(图右侧)。这个VPC里面创建了一个装有pfSense的EC2实例,这个实例通过公网的Internet Gateway访问外网,同时这个EC2实例充当了CGW的角色。然后在悉尼区域建立了一个VPC(10.0.0.0/8)以及一个私有网段10.0.0.0/24(图左侧),在这个VPC内创建CGW,VGW和VPN连接,建立与客户端网络的IPsec VPN隧道。另外还在这个私有网络中创建了一台普通的Linux EC2主机,用来最后测试连通性。

Topology - site to site vpn from customer network to aws vpc

这次的VPN两边的网络使用静态路由的方式进行通信,并没有使用动态路由协议BGP,挨踢小茶在亚马逊云AWS搭建基于BGP动态路由的硬件VPN(Site to Site VPN)教程中使用了BGP协议来做这个实验。

东京区域(模拟客户网络)创建VPC和EC2实例

  1. 创建一个新的VPC,命名为VPC1,网络地址为192.168.0.0/16
    AWS VPC
  2. 创建一个子网(公共网络),网络地址为192.168.1.0/24
    AWS Public Subnet in VPC
  3. 创建Internet Gateway,因为创建新的VPC是不会自动创建Internet Gateway的,因此默认情况下你不能访问任何互联网上的资源。所以这里需要手动创建一个Internet Gateway
  4. 编辑路由表,添加一条目的地址为0.0.0.0/0的路由,下一跳指向刚刚创建的Internet Gateway。这样子子网内的主机才知道,如果访问非本地的内容,要先去Internet Gateway,然后出去因特网。
    Route Table of VPC Public Subnet
  5. 编辑子网,启用“Modify auto-assign IP settings",这样新创建的主机才会自动分配公网地址。也可以不启用,在创建主机的时候手动更改IP配置选项。
  6. 创建一个EC2实例,在AWS市场中搜索“pfsense”,Netgate公司出的就是官方版本
    pfSense AMI
  7. 根据指引创建EC2实例,需要注意的是网络选择的时候要选择刚才创建的VPC VPC1。过大概5分钟,实例就会正常运行,并且分配公网IP地址。

悉尼区域(模拟数据中心)创建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中
    VGW and attach to VPC
  5. 更改子网的路由,这里选择开启Route Propagation功能,这样的话,在VGW中学到的路由(比如去往192.168.1.0/24的路由),会自动下发到子网的路由器上。因此任何这个子网的主机,都知道如果要访问192.168.1.0/24的网络,要先去VGW,然后VGW会通过VPN连接去到客户网络。如果不开启这个功能,也可以在这个网段中的路由表写一条静态路由,所有目的地址为192.168.1.0/24的下一跳地址为VGW。
    Route Propagation
  6. 创建客户端网关CGW(Customer Gateway),这里输入的IP地址为在东京区域创建的EC2的公网地址,本次实验选择的是静态路由的方式
    Create CGW
  7. 创建一个VPN连接,自定义一个名字,然后选择刚才创建的VGW和CGW。路由方式选择静态路由,并且手动添加对端的网络,此处为192.168.1.0/24
    Create VPN Connection
  8. 下载VPN配置文件,在这里可以选择不同的厂家和平台,这里我们选择厂家是pfSense,平台也是pfSense,软件版本默认即可
    Download VPN connection configuration
  9. 这个配置文件是一个txt文档,里面详细介绍了如何一步一步地配置你的pfsense防火墙,里面还包含了配置所需要的所有信息。

配置pfSense防火墙的IPSec VPN

  1. 使用公网地址登陆pfSense防火墙(注意,要先在Security Group中允许入方向的TCP 443的端口访问。同时VPC中的NACL也需要打开相应的许可)
  2. 默认的账号是admin,初始密码可以从AWS管理界面中的EC2->Actions->Instance Settings->Get System Log找到
  3. 第一次登陆会让你更改密码
  4. 进入VPN ->IPSec,点击添加一个Phase 1连接

    a. Disabled : uncheck
    b. Key Exchange version :V1
    c. Internet Protocol : IPv4
    d. Interface : WAN
    e. Remote Gateway: <VGW Tunnel 1的公网地址>
    f. Description: <连接的描述>

    Phase 1 proposal (Authentication)
    a. Authentication Method: Mutual PSK
    b. Negotiation mode : Main
    c. My identifier : My IP address
    d. Peer identifier : Peer IP address
    e. Pre-Shared Key: <AWS 提供的PSK>

    Phase 1 proposal (Algorithms)
    a. Encryption algorithm : aes128
    b. Hash algorithm : sha1
    c. DH key group : 2
    d. Lifetime : 28800 seconds

    Advanced Options
    a. Disable Rekey : uncheck
    b. Responder Only : uncheck
    c. NAT Traversal : Auto
    d. Deed Peer Detection : Enable DPD
    Delay between requesting peer acknowledgement : 10 seconds
    Number of consecutive failures allowed before disconnect : 3 retries

  5. 保存后退出
  6. 点击创建好的P1连接,点击+按钮,创建一个Phase2连接

    a. Disabled :uncheck
    b. Mode : Tunnel
    c. Local Network : Type: LAN subnet
    Address : 192.168.1.0/24
    d. Remote Network : Type : Network
    Address : 10.0.0.0/24
    e. Description : <AWS的描述>

    Phase 2 proposal (SA/Key Exchange)
    a. Protocol : ESP
    b. Encryption algorigthms :aes128
    c. Hash algorithms : sha1
    d. PFS key group : 2
    e. Lifetime : 3600 seconds

  7. 保存并退出,重复以上步骤创建第二个VPN连接

验证IPSec VPN连接

点击Status->IPsec可以查看IPSec VPN的状态,可以看到这个时候,VPN连接已经成功建立了。

VPN Connection Status on pfSense

打开AWS Console,可以看到在VPN Connection->Tunnel Details上看到,2个Tunnel的状态已经变成了UP。

VPN Connection Status

这个时候,在悉尼区域创建了一个新的EC2主机,私有地址是10.0.0.120。从pfSense(192.168.1.88)ping 10.0.0.120已经可以通了,证明客户网络和AWS的网络成功打通。

Ping from PFSense to EC2 server

总结

pfSense防火墙可以通过插件支持BGP路由,因此也可以通过类似的方法建立基于BGP的IPSec VPN连接,或者是CloudHub架构下的多条IPSec VPN连接。如果有条件的话,还是建议使用硬件的防火墙/路由器来建立IPSec VPN连接。另外,pfSense还有一种更方便的方法配置IPSec VPN,它可以直接通过AWS Access Key ID和Secret Key调用AWS的资源,并且直接启用BGP。具体操作步骤可以参照一下AWS VPC Wizard User Guide。

标签: AWS IPSec pfSense VPN
最后更新:2019 年 1 月 22 日

挨踢小茶

网络工程师/云计算架构师/云步道师/摄影爱好者

点赞
< 上一篇
下一篇 >

文章评论

  • casoul

    可以将pfsense做成东京region的网关吗?如果有其他的ec2 实例想访问 sydney region的机器。

    2018 年 8 月 13 日
    回复
    • 挨踢小茶

      @casoul 当然也是可以的,但是需要改动VPC默认路由,将默认路由指到pfsense上。并且需要考虑带宽瓶颈喔~

      2018 年 10 月 24 日
      回复
  • 中青看点是真的吗

    文章大有看点,支持!

    2017 年 12 月 19 日
    回复
  • 挨踢小茶

    欢迎各位大侠留言讨论

    2017 年 12 月 19 日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    挨踢小茶

    网络工程师/云计算架构师/云步道师/摄影爱好者

    最新 热点 随机
    最新 热点 随机
    李飞飞自传《我看见的世界》读后感 Web3 Social 2023 @深圳 AIGC Prompt 的艺术和模型调优 UWA Day 2022 - 如何通过云计算构架高性能、高可靠、智能化的游戏 一文看懂 Amazon EKS 中的网络规划 利用 Direct Connect Gateway 和 Transit Gateway 打造跨国企业网络环境 SD-WAN 和专线混合组网中的高可用设计 为了加速Wordpress网站我踩过了哪些坑?含泪告诉你 利用 SD-WAN 和专线混合组网,加速境内外企业 IDC 和多云数据中心 运行7年之后博客更新主题
    我应该使用哪种无线标准? BPDU Guard, BPDU Filter, Root Guard, Loop Guard & UDLD 最新测试版Chrome采用网页预加载技术,更快更安全! 互联网行业“漏斗定律”:30/10/10 现场影院技术Augmented Reality Cinema 思科交换机根据MAC/IP地址查找对应端口 [译]用术语带你了解SDDC规划 网络设备命令在线查询器-tldr CUCM8 BUG: 登录Disaster Recovery System无反映 GNS3上模拟HSRP时出现的BUG
    链接表
    • FROYO's Blog
    • Pop's blog
    • TC的博客
    • 今天毕业
    • 挨踢茶馆在线教程
    • 月与灯依旧
    • 月小升博客
    • 泪雪博客
    • 海纳百川
    • 筑楼
    • 网络茶馆
    • 蓝卡
    • 郑晓个人博客
    • 陆鉴鑫的博客

    COPYRIGHT © 2012-2023

    Theme Kratos Made By Seaton Jiang

    粤ICP备12007665号-1