虚拟私有云网络VPC

虚拟私有云网络VPC

  • 1 VPC基础
  • 2 AWS默认VPC
  • 3 用户创建的VPC
  • 4 NAT实例
  • 5 NAT网关
  • 6 NACL网络访问控制列表
  • 7 在VPC中使用DNS域名解析
  • 8 对等互联peering
  • 9 终端节点(Endpoint)
  • 10 site-to-site VPN(站点到站点的VPN服务)
  • 11 其他类型的VPN连接
  • 12 Flowlog流量日志监控

1 VPC基础

  • VPC(virtual private cloud):虚拟网络,并且该网络是aws账号专有的,每个账号都有自己的虚拟网络;(我的理解他就是被分配的一个网段,eg:172.31.0.0/16)。简单来说,VPC就是一个AWS用来隔离你的网络与其他客户网络的虚拟网络服务。在一个VPC里面,用户的数据会逻辑上地与其他AWS租户分离,用以保障数据安全。可以简单地理解为一个VPC就是一个虚拟的数据中心,在这个虚拟数据中心内我们可以创建不同的子网(公有网络和私有网络),搭建我们的网页服务器,应用服务器,数据库服务器等等服务。

  • CIDR:是vpc的私有网络ip地址范围;

  • subnets(子网):vpc地址范围的子集;aws会给每个AV zone(数据中心)都分配子网;

  • route table(路由表):用来决定网络流量去向的一组规则,可以自己建立一些规则来决定网络流量去向

  • 互联网网关:EC2使用它来和外界进行通信的一个组件,它是可水平扩展,冗余和高可用的

  • DHCP option sets:通过dhcp服务器分配给vpc里面的实例的配置集合

  • network ACL:子网级别的防火墙(和安全组不同的是,安全组是针对某一个实例的防火墙,而子网级别的防火墙是针对一个子网中的全部实例)
    虚拟私有云网络VPC_第1张图片

  • 特点:

    • VPC内可以创建多个子网,可以在选择的子网上启动EC2实例,在每一个子网上分配自己规划的IP地址
    • 每一个子网配置自己的路由表
    • 创建一个Internet Gateway并且绑定到VPC上,让EC2实例可以访问互联网
    • 可以部署针对实例的安全组、以及针对子网的网络控制列表
    • VPC的子网掩码范围是从/28到/16,不能设置在这个范围外的子网掩码

2 AWS默认VPC

  • 特点:在每一个区域(Region),AWS都有一个默认的VPC;在这个VPC里面所有子网都绑定了一个路由表,其中有默认路由(目的地址 0.0.0.0/0)到互联网;所有在默认VPC内启动的EC2实例都可以直接访问互联网;在默认VPC内启动的EC2实例都会被分配公网地址和私有地址

  • 在aws管理界面services处的搜索框输入VPC并进入其界面,点击左侧导航栏处的 your VPCs,进入后我们可以看到默认使用的VPC,在actions中可以选择 edit CIDRs来修改地址的范围;
    虚拟私有云网络VPC_第2张图片

  • 点击左侧导航栏处的subnet,就可以看到其分配的子网,选中其中一个,点击actions–>create flow log 可以对网络流量进行监控;
    虚拟私有云网络VPC_第3张图片

  • 点击左侧导航栏处的 route tables ,在进入的页面中选择下面的 routes–>edit routes 就可以添加一些路由策略;
    虚拟私有云网络VPC_第4张图片

  • 点击左侧导航栏处的 Internet gateways ,就可看到默认网关;
    虚拟私有云网络VPC_第5张图片

  • 点击左侧导航栏处的 dhcp options sets ,可以看到其默认的设置,这里的options处的设置决定了创建好实例后,其详细信息处所显示的公有和私有域名解析是什么;
    虚拟私有云网络VPC_第6张图片

  • 点击左侧导航栏处的 network ACLs(访问控制列表),会有默认的acl,分别对应三个子网,acls默认的执行顺序是自上而下(从序号的低到高)执行
    虚拟私有云网络VPC_第7张图片
    虚拟私有云网络VPC_第8张图片

3 用户创建的VPC

  • 进入vpc界面,点击create vpc,在进入的界面中输入自定义名称,定义ip地址的范围(例如输入10.0.0.0/16),其他默认,点击create即可 虚拟私有云网络VPC_第9张图片
    虚拟私有云网络VPC_第10张图片

  • 点击左侧导航栏的subnet,点击create subnet ,在进入的界面中自定义名称(例如name=public),ypc处将刚才自己创建的vpc选中,其他默认,在 ipv4 CIDR block中输入子网(例如:10.0.0.0/24),点击create;同理创建一个private子网(10.0.1.0/24)

虚拟私有云网络VPC_第11张图片
虚拟私有云网络VPC_第12张图片
虚拟私有云网络VPC_第13张图片
虚拟私有云网络VPC_第14张图片

  • 此时就成功的创建了两个子网,可以选中其查看相关详细信息。注意需要将public选中,点击actions–>modify auto assign ip settings,在进入的页面中,将atuo-assgin ipv4 后面的enable选中,表示自动分配公有ip地址
    虚拟私有云网络VPC_第15张图片
    虚拟私有云网络VPC_第16张图片

  • 进入EC2的管理界面,创建新的实例,注意在第三步的network处选择刚才自己创建,下面的subnet可以选择public的;到第六步时,选择创建一个新的安全组,在下面再添加一个开放80端口的策略,其他按步骤创建即可;同理再创建一台处于pravite网段的实例,注意安全组策略处,创建新的安全组,在ssh策略的source处custom,后面的框选择刚才创建的安全组的id。此时就创建好两台处于不同网段的实例

虚拟私有云网络VPC_第17张图片

  • 此时去连接public那台实例时,是无法连接上的,这是因为路由表的设定有问题,所以此时需要创建路由策略,以保证可以连接到互联网,点击左侧导航栏的 internet gateways ,点击create Internet gateway,自定义名称,然后create。完成后选中它,点击actions–> attach to VPC ,选择自己创建的vpc,然后关联

虚拟私有云网络VPC_第18张图片
虚拟私有云网络VPC_第19张图片
虚拟私有云网络VPC_第20张图片
虚拟私有云网络VPC_第21张图片

  • 回到 route tables ,选中自己创建的vpc那条信息,点击下面的routes。点击edit routes,添加 0.0.0.0/0,后面这里选择 internet gateway,将其关联起来,保存。此时就有了去internet的路由
    虚拟私有云网络VPC_第22张图片
    虚拟私有云网络VPC_第23张图片

  • 此时再去连接就可以成功连接,此时就可以使用该主机去连接private的主机了。首先需要将private主机的key复制到该主机,然后使用ssh去连接即可 。也就是说使用public作为中间主机去跳转到private主机上(这是因为私有的这台主机没有被分配公网地址,而只有私网地址,所以要访问时,需要一个中间主机)

  • 注意:公有子网和私有子网的区分主要就是公有子网关联到了路由表,而路由表关联到了internet 网关,路由表会告诉公有子网该怎么走去外网;而私有子网并没有关联路由,不知道怎么走,也无法出去,所以就是私有子网了
    虚拟私有云网络VPC_第24张图片

4 NAT实例

NAT设备将私有网段实例的网络流量转发到互联网或者其他AWS服务,然后将响应的流量转发回给实例。AWS NAT 设备支持两种形式:

  • NAT实例:一台执行NAT地址转换的AMI Linux EC2实例;NAT实例的瓶颈在于实例的大小,如果遇到了网络吞吐瓶颈,你可以加大实例类型;可以自己创建弹性伸缩组(Auto Scaling Group),自定义脚本来达到NAT实例的高可用(比如部署在多个可用区)

  • NAT网关:AWS管理的一项NAT服务。一般使用该服务而不是NAT实例,因为NAT网关具有高可用,高宽带,而且不需要用户进行管理

  • NAT实例的创建:

    • 搜索“amzn-ami-vpc-nat”的AMI,选择一个进行创建并放置在公共子网上。该实例必须要有公有ip以访问互联网

    • 在NAT实例上禁用“SrcDestCheck”的功能(源到目的的检查)

    • 在私有子网的路由表添加条目,配置该子网的实例通过NAT实例访问互联网

    • 首先创建实例,在第一步选择左侧导航栏处的community AMIs ,在上面的搜索栏输入 vpc-nat ,选择出现的第一个镜像即可;在第三步network选择自己创建的, subnet处选择public的网段;在第六步处选择之前创建的允许80端口的已存在的安全组策略,其他默认。
      虚拟私有云网络VPC_第25张图片

    • 选中刚才创建好的NAT实例,actions–>networking --> change sourcedest check ,在进入的界面,将其disable即可
      虚拟私有云网络VPC_第26张图片
      虚拟私有云网络VPC_第27张图片

    • 在vpc的route tables处,点击 create route table ,自定义名称,vpc选择自己创建的,选中该信息,点击actions --> edit subnet associate ,在进入的页面中选中私有的subnet,将其关联上去。关联之后点击下面的routes,edit routes,add route 0.0.0.0/0 后面的框中选择刚才创建的NAT实例,保存
      虚拟私有云网络VPC_第28张图片
      虚拟私有云网络VPC_第29张图片
      虚拟私有云网络VPC_第30张图片
      虚拟私有云网络VPC_第31张图片
      在这里插入图片描述

    • 此时使用私有网段的那台实例去访问外网,例如 curl www.baidu.com,看是否可以成功连接外网
      虚拟私有云网络VPC_第32张图片

5 NAT网关

  • 在公共子网上创建一个NAT网关,该网关必须要有公有ip以访问互联网

  • 在私有子网的路由表添加条目,以允许该子网的实例通过NAT网关访问互联网

  • 网络吞吐可以达到10Gbps;不需要关联安全组

  • 实验:

    • 注意,在做实验前,先将之前设置的NAT实例删除,删除后私有网段的实例就无法访问外网。

    • 在vpc界面的左侧导航栏处找到 NAT gateways并点击进入,点击create NAT gateway ,在进入页面的subnet处指定public子网,在下面的 elastic ip id 处,点击后面的 create new EIP即可,最后点击create。点击create后,在弹出的页面处点击 edit route tables ,进入后选择在NAT实例处创建的路由策略,进入后将之前的策略删除,创建一个新的策略 0.0.0.0/0 后面的框选择刚才创建的NAT gateway,保存即可。
      虚拟私有云网络VPC_第33张图片
      虚拟私有云网络VPC_第34张图片
      虚拟私有云网络VPC_第35张图片

    • 选择刚才的路由策略,在下面的表头中选择 subnet associates ,点击 edit subnet associates ,将私有的网段选中,点击保存
      虚拟私有云网络VPC_第36张图片
      虚拟私有云网络VPC_第37张图片

    • 此时使用私有实例去访问互联网 curl www.baidu.com是可以成功的

    • 注意在做完实验后,需要将设置的NAT gateway进行删除,否则会产生费用;再在左侧导航栏处选择 Elastic ips ,将其release。

  • NAT实例和NAT网关的对比:
    虚拟私有云网络VPC_第38张图片

6 NACL网络访问控制列表

  • 特点:
    • 默认VPC的NACL允许所有出站以及入站流量
    • 用户自定义NACL默认拒绝所有出站入站流量
    • 对于所有VPC内的子网,每一个子网都需要关联一个网络ACL。如果没有关联任何网络ACL,那么子网会关联默认的网络ACL
    • 一个NACL可以关联多个子网,然而一个子网同时只能和一个NACL关联
    • NACL规则按数字顺序从低到高进行评估,若在此过程中找到匹配的规则,则执行该规则,不再去匹配规则
    • NACL是无状态的,返回流量并不自动被允许,而取决于规则,其规则正好安全组相反,安全组是所有返回流量自动被允许
    • 一般至少需要允许临时端口(TCP 1024-65535)
  • NACL和安全组的对比
    虚拟私有云网络VPC_第39张图片

从下面的图中可以看到,当产生进站的流量时,会通过路由首先评估route table的规则,然后进入nacl,子网级别的访问控制,如果流量被允许,才会进入到安全组级别,通过后才会进入实例;如果是出站流量,先要通过安全组(默认允许所有流量出去),再进入nacl(根据规则判断,如果规则允许,才会进入路由),再去询问路由表,决定流量如何转发
虚拟私有云网络VPC_第40张图片

  • 实验
    • 首先进入EC2的管理界面,创建一台实例,放于public子网中,并在创建时,使用用户数据的方式安装apahce服务。选中该实例,在下面的详细信息处找到安全组,点击后面的链接跳转到安全组界面,下面可以看到安全组策略,在inbound处可以看到,允许进站的流量包括80和22端口;在outbound中可以看到允许出站的流量默认是所有

    • 此时再浏览器输入该实例的ip,是可以访问到该实例apahce的发布页面中写的内容的。此时可以进入其安全组,在出站流量处,将允许所有流量出站的策略删除。此时再去浏览器访问,依旧可以成功访问,这表明安全组本身就是默认允许所有出站的流量
      虚拟私有云网络VPC_第41张图片

    • 在vpc页面的左侧导航栏处找到network acls,点击进入,进入后会看到两条默认的访问控制策略。此时点击 create network acl ,自定义名称,在下面的vpc处选择之前自定义的vpc即可,创建完成后选中自己创建的acl,在下面查看详细信息处,可以看到入站流量和出站流量默认对所有都是拒绝的,并且没有关联到任何子网。所以需要将其关联到子网,选中后–>actions–>edit subnet associate --> 选择public子网进行关联
      虚拟私有云网络VPC_第42张图片
      虚拟私有云网络VPC_第43张图片
      虚拟私有云网络VPC_第44张图片
      虚拟私有云网络VPC_第45张图片
      虚拟私有云网络VPC_第46张图片
      虚拟私有云网络VPC_第47张图片

    • 此时再使用浏览器去访问该实例的ip,就无法查看到其页面,此时可以在刚才创建的acl处的入站流量处,点击 edit inbound rules --> add rule --> 100 (顺序数字) 、http(80),其他默认,保存。此时再去浏览器访问依旧不成功,这是因为出站的没有被允许,所有页面根本无法到达外部浏览器。所以需要在出站处也添加一条允许 【rule=100、port range =1024-65535(临时返回流量的端口)】,保存即可。此时再去浏览器访问该页面是可以访问到的
      虚拟私有云网络VPC_第48张图片
      虚拟私有云网络VPC_第49张图片
      虚拟私有云网络VPC_第50张图片
      虚拟私有云网络VPC_第51张图片

    • 再添加一条入站时的规则 【rule=200、type=http(80) 、allow/deny=deny】。此时再去访问页面是可以的,这是因为其执行规则是从低到高的,一旦匹配到规则,就不会再向下匹配。
      虚拟私有云网络VPC_第52张图片

    • 注意:实验结束后,选中自建的acl ,点击actions --> edit subnet associate --> 将关联解除,取消publi子网前面的√并保存,然后再actions --> delete network acl;在安全组界面,在outbound处,编辑【type=all trafic 、custom 0.0.0.0/0】,保存;最后回到ec2界面将本次实验的实例terminate。

7 在VPC中使用DNS域名解析

  • aws提供默认的DNS服务器,该服务器一般是使用所在网络的一个保留ip,例如在10.0.0.0/24网络中的地址10.0.0.2。另外公共子网也可以使用亚马逊的DNS服务器 169.254.169.253。
  • aws提供的私有DNS名称:
    • ip-PRIV-IP.ec2.internal(us-east-1)
    • ip-PRIV-IP.REGION.compute.internal(others)
  • aws提供的公共DNS名称:
    • ec2-PUB-IP.compute-1.amazonaws.com(us-east-1)
    • ec2-PUB-IP.REGION.compute.amazonaws.com(others)
  • vpc中的两个DNS属性:
    • enableDnsHostnames:指定带公有IP的实例是否自动获得公共DNS主机名
    • enableDnsSupport:指定DNS是否支持该VPC的名称解析
  • 使用私有托管域:如果用户想在自己的vpc里面使用自定义主机名,而不是ip地址或者aws分配的主机名,可以使用私有托管域。这个域的信息只在用户的vpc里面,不能转发到互联网,所以是个私有域
  • 私有域的创建步骤:
    • 将enableDnsHostnames、enableDnsSupport属性设置为enable
    • 在route 53(dns服务)里面创建一个zone
    • 在该zone里面创建DNS记录
  • 实验:
    • 实验环境是之前创建的分别位于公有子网和私有子网的两台实例,公有子网的实例已经安装了apache服务,通过浏览器可以访问到放在默认发布目录下的发布文件。选中处在公有子网上的实例,从下面的详细信息处可以看到其 public DNS (IPV4) 处是没有DNS的,而private DNS处的ip格式就如:ip-PRIV-IP.REGION.compute.internal
      虚拟私有云网络VPC_第53张图片

    • 在vpc界面,点击actions --> edit dns resolution ,进入的页面中 可以看到enable是被勾选的,表示dns server 在 vpc中是工作的,可以解析主机名,这也是私有dns存在的原因;在vpc界面,点击actions --> edit dns hostnames ,进入后可以看到其enable是没有开放的,这也就是没有 public dns的原因。将其enbale并保存,进入ec2管理界面,此时就可以看到公有子网的的public dns处有如:ec2-PUB-IP.REGION.compute.amazonaws.com 格式的公有dns
      在这里插入图片描述
      虚拟私有云网络VPC_第54张图片
      虚拟私有云网络VPC_第55张图片
      虚拟私有云网络VPC_第56张图片
      虚拟私有云网络VPC_第57张图片

    • 创建私有域,在services处的搜索框内搜索 route 53,在进入的页面点击 get started now ,点击 create hosted zone,在右侧弹出的窗口中输入域名(eg:lhy.local),在comment处输入说明(eg:private zone),type处选择 private,vpc id 处选择自己创建的vpc,完成后点击create。 在点击 create record set ,创建A记录,该记录是ip和域名的对应记录,在右边弹出的窗口 自定义名称(eg:www) ,type处选择 A-ipv4 address,value处写入公有子网实例的公有ip,然后点击create,此时就会产生一条A记录
      虚拟私有云网络VPC_第58张图片
      虚拟私有云网络VPC_第59张图片
      虚拟私有云网络VPC_第60张图片

    • 连接到两台实例的控制台,输入 dig www.lhy.local,此条解析可以看到的结果是产生一条A记录 ,ip是公有子网的实例的ip,此时输入curl www.lhy.locla就可以看到apache发布文件 。但是此时是无法从浏览器输入自定义域名访问页面的
      虚拟私有云网络VPC_第61张图片

    • 注意:最后实验结束需要将创建的host zone删除,把所有创建的都选中,然后点击上面的 delete record set,结束后再次查看,若有在route 53界面中没有被删除掉的,都进行删除。

8 对等互联peering

  • 概念:一个vpc peering连接可以连通两个vpc之间的网络
    虚拟私有云网络VPC_第62张图片

  • vpc peering支持不同区域和账户之间的vpc互连,其完全由aws进行管理,所以不存在单点故障或带宽限制,可以根据需要自动的水平扩展带宽

  • vpc peering限制条件:

    • 互连的vpc的CIDR地址段不能有重叠
    • 一个vpc最多支持125个peering连接
    • 不支持传递性peering连接
    • 两个vpc间同时只能有一个peering连接
      虚拟私有云网络VPC_第63张图片
  • 实验:

    • 分别使用两个不同的地区,在其中一个地区创建一个vpc,或者是用之前的vpc,在另一个地区使用默认的vpc;分别在两个地区的vpc中创建实例,可以使用之前创建好的公有和私有,同时在另一个地区也创建一台实例,在创建时,在安全组的inbound中将其ICMP(可以实现ping)的端口打开
      虚拟私有云网络VPC_第64张图片
      虚拟私有云网络VPC_第65张图片

    • 此时在vpc页面的左侧导航栏处找到 vpc peering,点击create peering connection ,在进入页面的 name处自定义一个名称,在下面的vpc(requester)处选择自己创建的vpc,在region处选择 another region 在其下拉菜单处选择另一个需要连接的地区,在 vpc(accepter)处需要手动输入另一个需要连接地区的vpc id,点击create即可
      虚拟私有云网络VPC_第66张图片
      虚拟私有云网络VPC_第67张图片
      虚拟私有云网络VPC_第68张图片

    • 此时需要切换到另一个地区,进入peering connections处,将请求连接选中,点击actions–> accept request,此时两边就连接成功
      虚拟私有云网络VPC_第69张图片

    • 此时还需要分别在两个路由表中添加路由条目,进入vpc页面左侧菜单栏的 route tables ,在routes中点击edit,点击add,【des处填写另一个区域的vpc范围包括掩码eg:172.31.0.0/16 ,target处选择刚才自己创建的peering connection】保存即可,同时在另外一个地区同样的步骤添加一条路由条目
      虚拟私有云网络VPC_第70张图片
      虚拟私有云网络VPC_第71张图片

    • 通过控制台连接到第一个区域的public实例上,在通过一个控制台连接第二个区域上创建的实例,注意这两个实例的ip没处于同一个网段,但此时去相互ping依旧是可以成功的
      虚拟私有云网络VPC_第72张图片
      虚拟私有云网络VPC_第73张图片

    • 注意:完成实验后,进入vpc–>peering connection–>actions -->delete vpc peering connection 这里只需要删除其中一个区域的即可,另一个会被自动删除;同时需要将两边route table中添加的条目删除;将另一个不需要的地区中创建的实例也terminate

9 终端节点(Endpoint)

  • 特点:

    • 使用户可以私密地连接到支持aws服务和vpc终端节点服务(由privateLink支持)
    • 网络流量不再被转发到互联网,所以用户不需要创建互联网网关、NAT设备、VPN连接或者AWS等直连组件
    • 高可用、冗余和弹性可扩展;终端节点(Endpoints)是虚拟设备,它是以能够自动水平扩展、高度冗余、高度可用的VPC组件设计而成,你也不需要为它的带宽限制和故障而有任何担忧。
  • 类型:

    • 接口终端节点:API gateway、cloudwatch、sns……
      注意:接口终端节点就是将终端节点部署在私有子网区域内并分配ip,此时实例就可以通过接口终端节点去访问AWS的服务,需要注意的是,AWS服务无法主动向实例发出流量。 虚拟私有云网络VPC_第74张图片

    • 网关终端节点:s3、dynamoDB
      注意:网关终端节点主要是用来访问s3的,要实现不出互联网去访问,还需要在路由表中添加条目,表示通过网关终端节点去访问s3,这样就不会默认通过互联网再去访问s3
      虚拟私有云网络VPC_第75张图片

  • 终端端点的访问控制方式:

    • 接口终端节点网卡所在的子网ACL
    • 接口终端节点网卡所关联的安全组
    • 终端端点本身的policies
    • AWS服务(例如s3)本身的access policy
  • 实验:

    • 实验前,已经有两台之前已经创建好的私网和公网的实例,现在给处于私网的实例添加权限。选中该实例–> actions–>安全 -->attach/replace IAM role -->如果之前有添加过s3的权限,那就直接选择即可(这里添加s3权限的role参考前面的内容)。连接到处于私网实例的控制台输入 aws s3 lsssh ec2-user@ip -i .pem秘钥文件】,可以查看到现在存在的bucket。注意此时该实例是可以上网的,是通过nat gateway以及路由表上通过 nat gateway 上外网的条目 去上外网的,此时私网的实例是通过上外网再回来访问AWS的s3服务的。

    • 将该实例的通过 nat gateway 上外网的条目删除,此时使用命令行的方式去访问互联网是不成功的,那么可想而知此时也无法访问AWS的s3服务。

    • 此时可以通过终端节点的方式去访问AWS的服务,进入vpc的管理界面,在左侧导航栏处找到 endpoints ,点击进入,点击create endpoint ,在 service category 处选择 AWS services即可,然后在下面找,选择 s3 的 gateway类型(也可以选择interface类型,这里选gateway);在下面的vpc处选择自己创建的vpc;当创建完endpoint后会自动的去添加路由条目,在configure route table处下面选择关联到私网的实例处;policy处选择full即可。此时可以看到endpoint已经创建成功,选中该终端节点,在下面的 route tables 处点击 manage route tables ,这可以关联不同的subnet,我们可以进入私有实例的路由条目里,此时可以看到自动生成了。

    • 此时我们可以进入私网实例的命令行,此时依旧无法访问互联网,输入 aws s3 ls后也无法访问,这是因为该命令有默认区域,所以在使用该命令时,必须要加上区域参数,表明endpoint所在的区域,例如aws s3 ls --region ap-southest-2,此时就可以访问到bucket了。

    • 注意:做完实验后,在endpoint页面处,actions–>delete endpoint,将终端节点删除

10 site-to-site VPN(站点到站点的VPN服务)

  • 默认情况下,您在 Amazon VPC 中启动的实例无法与您自己的(远程)网络进行通信。您可以通过创建 AWS 站点到站点 VPN(站点到站点 VPN)连接并将路由配置为通过该连接传输流量,从 VPC 启用对远程网络的访问。每个 VPN 连接均包括两条 VPN 隧道,可以同时使用这两条隧道来实现高可用性。

  • VPN(虚拟私有网络):在现有连接的基础上创建一个虚拟的私有链路,该链路会将所传输的数据进行加密,通过就可以安全的连接到某个内网

  • site-to-site VPN:一项建立本地企业网络和AWS VPC之间安全私密的网路连接的VPN服务;每个VPN连接包括两个VPN链路,达到高可用以及负载均衡的目的

  • 注意:

    • 虚拟私有网关上的 VPN 连接不支持 IPv6 流量
    • 在将 VPC 连接到公共本地网络时,建议对网络使用非重叠的 CIDR 块
    • 站点到站点 VPN 连接不支持路径 MTU 发现
  • 常用组件:

    • 虚拟私有网关:在VPN中,在AWS VPC端的设备,可以对进来或出去的流量进行转发
    • 中转网关:一个中转中心用于连接多个VPC网络,也是在VPC端的设备
    • 用户网关:在VPN中,在用户本地网络端物理或者虚拟的设备
  • 应用场景:

    • 单一站到站VPN
      虚拟私有云网络VPC_第76张图片

    • 单一中转网关VPN
      虚拟私有云网络VPC_第77张图片

    • 多站点VPC
      虚拟私有云网络VPC_第78张图片

    • 多站点中转网关VPN(我的理解是相当于找了一个代理将aws内部不同子网的实例全部代理起来,为其收发流量)
      虚拟私有云网络VPC_第79张图片

  • 用户网关设备:包括硬件或虚拟设备,可以去其官方文档上查看其所支持的用户设备类型

  • 实验:

    • 步骤:
      1)创建一个用户网关
      2)创建一个虚拟私有网关
      3)在route table 启用 route propagation -VPG自动生成路由条目
      4)创建一个VPN连接(选择 static route ,并指定用户网络CIDR)
      5)从VPN连接页面下载配置文件,然后对用户网关设备进行配置,网址信息https://docs.aws.amazon.com//latest/s2s/customer-gateway-device-windows.html
      虚拟私有云网络VPC_第80张图片

    • 实验准备,在默认的vpc里面创建分别输入公网和私网的两台实例,连接到私有实例上,此时是无法访问互联网的,再起下面的详细信息处可以点击进入其安全组,其安全组的策略是ssh–22以及ICMP-ipv4–All,此时使用公网的实例去ping私网的实例是可以成功的(同一个网段内不同子网ip是不可以ping通的,这里可能是因为有网关或其他自动设置)

    • 再运行一台(windows server 2012 R2)虚拟机,将其作为用户网关使用,其ip地址设置为10.1.1.6/24,会再随机分配一个公有ip【这里使用了一个环境,但是未给出是什么环境创建的】

    • 进入到vpc界面,点击左侧导航栏处的 customer gateways ,点击create customer gateway,自定义名称,routing处选择static,将其公有ip输入即可;再在左侧导航栏处选择 virtual private gateway进入,点击create,自定义名称,在asn处选default即可。创建好后它是一个deattach状态,所以需要将其attach到vpc上,点击actions–>attach to vpc,选择默认的vpc即可;在左侧导航栏寻找,进入route table中创建一个私有网段的路由表,然后将其连接到私有subnet中,然后在route propagation中点击edit,将里面的选项勾选,表示自动写路由,然后保存。再点击route,点击edit,des处写用户网关的网段CIDR,target处写刚才创建的 virtual private gateway ,保存即可;再左侧导航栏选择site-to-site VPN corneclions,点击 create connection,自定义名称,在virtual private gateway 处选择刚才创建的,customer gateway 也选择刚才创建的,route options 选择 static , static ip prefixs处填入用户网关的CIDR,其他默认即可。点击上面的 download configuretion,在弹出来的表格中选择 Microsoft的2012 R2版本,点击download

    • 将下载下来命令的某些部分修改后,复制到Windows中执行,此时使用该Windows设备去ping私网实例的ip是可以成功的,也就是可以进行通信了,并且是不通过互联网的。此时回到 connection 界面,可以在下面看到其tunnel信息,有两个tunnel,一个是up状态,一个是down状态作为一个冗余存在

    • 注意,做完实验需要将的连接、虚拟网关、用户网关都进行删除

11 其他类型的VPN连接

  • VPN cloudhub:该服务使得多个企业网络(比如分公司办公室),以及 AWS VPC之间可以互相通信
    虚拟私有云网络VPC_第81张图片

  • Direct Connect:该服务建立一个从企业内部网络到AWS VPC的专用网络连接
    虚拟私有云网络VPC_第82张图片

  • Client VPN:通过该服务,用户可以使用基于openVPN的客户端,从任何位置连接到AWS或者企业内部网路
    虚拟私有云网络VPC_第83张图片

12 Flowlog流量日志监控

1)相关概念

  • VPC流日志(Flow Logs)可以捕获经过你的VPC的网络流量(入向和出向),Flow Logs的日志数据保存在Amazon CloudWatch Logs中。
  • Flow logs可以在以下级别创建:VPC级别、子网级别、网络接口级别
  • 特点:对于Peer VPC不能开启Flow Logs功能,除非这个VPC也在你的账户内、不能给Flow Logs打标签、Flow Logs创建后不能更改其配置
  • 注意:VPC Flow Logs并不捕获所有经过VPC的流量,以下流量将不会被捕获
    • 实例访问Amazon DNS服务器(即.2地址)的流量
    • Windows进行Windows许可证激活的流量
    • 访问实例Metadata的流量(即去往169.254.169.254的流量)
    • DHCP流量
    • 访问VPC路由器的流量(即.1地址)

2)实验

  • 在vpc页面中的 yours vpcs中,选择默认的vpc,点击actions --> create flow log,在filter处选择 all,表示所有的流量;在destination处选择 send to cloudwatch log;在destination log group处选择刚才创建的组iam role处需要给予权限,可以点击下面的 set up permissions 跳转,此时aws会自动创建一个role,点击allow即可。回到之前页面后,在 iam role处选择刚才创建的role,最后点击create。同理再创建一个,将日志内容发送到s3上,下面需要填写ARN,直接到s3处找到响应的bucket,然后查看其详细信息处将ARN复制并写入即可。
    • 这里选择了发送到cloudwatch中,那么就需要先创建一个cloudwatch组,在services页面搜索并进入,点击左侧导航栏处的logs,进入后点击 create log group并自定义名称即可
  • 注意此时ec2下面已经布置好了两台实例,在公网的实例时已经部署好apache服务的,使用浏览器访问,然后连接到该实例,刷新浏览器,就可以产生流量
  • 进入cloudwatch页面,点击左侧的logs,点击之前创建的组,可以进入一个页面,再点击进入就可以看到流量情况
  • 进入s3,就可以看到自动创建了一个文件夹,里面就是流量情况

你可能感兴趣的:(AWS,网络,aws,云计算)