美文网首页AWS
Virtual Private Cloud

Virtual Private Cloud

作者: 阿尔法二狗 | 来源:发表于2017-06-08 21:04 被阅读0次

    VPC

    定义

    Virtual Private Cloud是AWS提供的一种从逻辑上分离且独立的网络单元(物理上不一定). 创建VPC的时候可以通过CIDR来指定VPC的大小(VPC内IP地址的数量 最大65535最小16). VPC还可以进一步划分成更小的逻辑单元 - Subnet. Subnet可以进一步分割VPC内的IP范围(Subnet的IP范围必须在VPC的IP范围之内).

    可用组件
    • Subnet

    • Route Table

    • Security Group

    • ACL

    • NAT Gateway/Instance

    • IGW

    • CGW & VPG

    • Peering Connection

    • Endpoint

    • Elastic IP

    • Elastic Network Interface


    Subnet

    子网是VPC的基本组成部分,EC2实例实际上是运行在Subnet里而非直接运行在VPC上。

    分类:

    • Public subnet - 所关联的route table中流量导向VPC的IGW

    • Private subnet - 所关联的route table中的流量没有导向到VPC的IGW

    • VPN only subnet - 所关联的route table中的流量导向到VGW

    注意

    • 一个Subnet必定所属一个AZ,且创建之后不能更换所属的AZ

    • 一个Subnet必定至少关联到一个路由表,如果有没显示的关联,则隐式关联到VPC的主路由表.

    • 子网的大小必须小于VPC的IP范围且大于等于/28(i.e: VPC CIDR - 10.0.0.0/16, 则Subnet的CIDR必须是10.0.X.X/17~28). NOTE: AWS会保留CIDR IP段的前4个IP和最后一个IP, 所以对于10.0.X.X/28实际可用的IP数量是16-5=11个IP地址

    • 可以通过ACL来做子网级别的安全控制(入/出站规则)

    • 默认VPC在所有的AZ都有一个规模为/20的子网


    Route Table

    一组所关联的子网的流量导向规则. 每条路由规则有2个字段destination和target. destination用来表示请求的最终目的地, target用来指定由谁来处理路由的下一跳.

    下条路由规则的语义为: 子网内所有访问172.9.X.X的请求都经由IGW来处理

    Destination Target
    172.9.0.0/16 igw-id

    典型的Target

    • target=local的规则实现同一VPC内不同子网之间的通讯. (每个路由表都带有一个只读的规则 x.x.x.x/x - local).

    • target=IGW的规则实现了VPC外对于子网的访问,

    • target=NAT的规则实现了子网对于VPC外的访问

    • target=Peering Connection的规则实现了VPC和VPC之间的访问

    • target=VPG的规则实现了子网的VPN访问

    • target=endpoint的规则实现了子网对于相同region的其他AWS service的访问(目前仅支持S3切该调路由不是手动加入的)

    注意

    • 一个VPC在创建的时候会自动生成一个主路由表, 所有没有指定路由表的子网都会默认关联这个主路由表

    • 你可以将自己创建的路由表设置为主路由表

    • 路由表中的路由规则的优先级由规则的具体程度来决定(越具体优先级越高). 如下表中,规则2的优先级高于规则3,规则3高于规则1

    Destination Target
    0.0.0.0/0 igw-id
    172.9.1.0/24 peer-connection-reject
    172.9.0.0/16 peer-connection-approve

    Internet Gateway

    IGW实现了VPC中的instance和Internet通讯. 在AWS的VPC中,即便一台instance被分配了public ip/eip也是无法被从VPC外访问到的.必须要往该instance所属的子网关联的路由中添加target=igw的路由才可以. 在通讯过程中IGW具体做了:

    • 维护一个public ip-private ip的one-to-one的映射表

    • 当具有public ip的instance试图从VPC内访问Internet, IGW负责将被访问端的reply的目标地址转换成instance的public ip。并

    • 当VPC外的机器试图访问VPC内的具有public ip的instance的时候, IGW在请求到达VPC后将目标地址从public ip转换成private ip,最终到达instance.


    EIP

    Elastic IP是AWS对于某个region的IP资源池中的IP, 所以一个EIP是无法跨region的被其他资源(instance, nat gateway等)使用。并且EIP是分配到你的AWS Account的,所以不管一个EIP是否被使用,只要没有从你的Account里面释放出去都会被计费。

    与Public IP的不同

    • EIP绑定到账户就计费,Public IP只有使用的时候才收费

    • EIP除非你释放了,否则一旦分配到Account就是稳定不变的. Public IP分配给Instance之后随着Instance关闭而释放,而且当instance重启之后,之前分配的Public IP会被重新分配


    NAT Gateway/Instance

    NAT在AWS中主要提供帮助私有子网访问internet的服务.(通过upnp协议实现). 本质上来讲无论NAT Gateway还是NAT Instance都是一个具有公有IP的实例(NAT Gateway只是从服务角度进行了封装),不过这个特殊的instance提供端口映射的服务,所有的内网主机对外发送的请求都经由NAT Gateway/Instance发出,NAT会给相应的内网主机随机分配一个端口号,然后请求再经过IGW进入Internet. 所有被访问服务器的返回地址都是NAT Gateway/Instance的公有IP和之前所分配的随机端口号。当response返回到NAT后,NAT再根据端口映射表找到相应的主机,转发返回的response.

    NAT与IGW的不同

    • NAT只提供内网到外网的单项访问,IGW提供内网-外网的双向反问

    • 路由到IGW的公有子网的instance需要有public ip/eip. 而和NAT关联的私有子网主机只需要私有ip

    • NAT必须绑定一个EIP, IGW不需要

    NAT Gateway和NAT Instance的不同

    注意

    • NAT Gateway必须所处公有子网中(如果NAT自己都访问不了外网如何帮私有子网的主机访问外网?)

    • 私有子网所关联的路由必须将流量切到NAT Gateway


    Peering Connection

    Peer connection提供VPC之间的访问。在建立了Peer connection的2个VPC的主机上,可以直接通过private ip相互通讯。

    注意

    • Peer connection不具备传递性,比如VPC A和VPC B建立了connection, VPC B和VPC C建立了connection, 但是VPC A和VPC C依旧无法相互访问

    • 建立了Peer connection的2个VPC的IP范围不能有重叠(在建立了Peer connection以后如果VPC的ip范围重叠,就有可能一个ip代表2台主机)

    • 建立了Peer connection之后必须同时更新2个VPC需要相互通信的子网的路由(requester和receiver的路由都要更新),将相互访问的CIDR指向peer connection - pcx-xxxxx. 例如VPC A 10.0.0.0/16和VPC B 192.168.0.0/16. 建立了peer connection,在VPC A和B的路由中需要分别添加一条

    Destination Target
    192.168.0.0/16 pcx-xxxx
    Destination Target
    :-------- :--------
    10.0.0.0/16 pcx-xxxx

    Security Group & ACL

    SG和ACL都是用来保障你VPC的网络安全的。但是它们有一些区别

    • SG是作用于instance级别的访问控制,而ACL是Subnet级别的访问控制

    • SG是白名单性质的防火墙,你只能允许某些ip访问某些端口而不能拒绝。ACL可以显示的deny一些访问,也可以显示的approve一些访问

    • SG是有状态的,你不能分开控制SG的出站规则和入站规则。入站请求和出站请求会被同时approve.而ACL是无状态的,你可以对于同一个目标允许入站拒绝出站(或相反)

    • ACL的安全规则带有具备优先级属性的rule #,(rule #越小优先级越高)

    • 一个instance可以关联多个SG, 但是一个Subnet同一时间仅能绑定一个ACL


    Endpoint

    Endpoint是用来建立你的VPC和同region的AWS其他service的内部通讯链路的。目前仅支持S3。当你建立了和S3的Endpoint之后,你的VPC内部访问S3的时候就不会通过广域网来进行访问,而且从AWS的内部网路进行访问。

    注意

    • 在建立了endpoint之后还需要同时更新路由表,保证相关service(destination)的请求经由endpoint(target)处理

    • 你可以建立access policy来控制endpoint对service的访问权限


    ENI


    CGW & VPG


    DHCP Option Set

    相关文章

      网友评论

        本文标题:Virtual Private Cloud

        本文链接:https://www.haomeiwen.com/subject/exgtqxtx.html