AWS在中国目前有北京和宁夏两个可用区,AWS VPC是AWS核心产品,今天我们介绍VPC的基础知识。
VPC概述
VPC(Virtual Private cloud)虚拟私有云,是AWS提供的在网络层面对资源进行分组的技术,一个VPC可以看作是一个独立的虚拟网络,这个虚拟网络与客户在数据中心运营的传统网络及其相似,并会为客户提供使用AWS的可扩展基础设施的优势,默认情况下VPC与VPC之间不互通,是逻辑上的隔离。
默认每个region下可以创建5个VPC,也可以根据需要在每个区域开通100个VPC.在创建VPC的时候需要指定网络CIDR,范围:/16-/28.
创建完VPC后,会默认创建一个main route table,其它子网都默认使用该main route table,也可以指定用户自定义的route table.
一个VPC包含以下必要组件:
1,子网(Subnets)
2,路由表(Route tables)
3,DHCP 选项集(Dynamic Host Configuration Protocol(DHCP)option sets)
4,安全组(Security Group)
5,网络ACL(Network Access Control List(ACLs))
并可以包含以下可选组件
1,互联网网关(Internet 2,Gateways(IGW))
3,弹性IP(Elastic IP(EIP)address)
4,弹性网卡(Elastic Network Interfaces (ENIs))
5,终端节点(Endpoints)
6,对等连接(Peering)
7,NAT网关(Network Address Translation (NATs)instances and NAT gateways)
那么下面我们对每个关键部件做下介绍。
Subnet
一个VPC可以包含多个subnet,一个subnet对应于一个AZ(可用区)
子网CIDR确定后,前4个IP和最后1个IP不可用,AWS内部使用,例如:/28有16个IP,去掉5个后,还有11个供我们使用
AZ是物理上的隔离,由于VPC可以跨多个AZ,因此VPC是逻辑上的划分
VPC中的subnet永远是互通的,因为任何一个路由表都有包含一个本地路由,且不可删除
在创建subnet的时候可以指定默认是否为每个新的instance分配public IP
Subnet有三种
1,Public subnet,在路由表中有一个指向IGW的路由
2,Private subnet,在路由表中没有指向IGW的路由
3,VPN subnet,面向VPN连接,在路由表中有指向VPG的路由
Route Tables
路由表,用于确定子网中路由的去向
一个子网只能且必须对应一个route table,一个route table可对应多个子网
Internet gateways
Internet网关是一种横向扩展、支持冗余且高度可用的VPC组件,可实现VPC中的实例与Internet之间的通信。因此它不会对网络流量造成可用性风险或带宽限制
Internet网关有两个用途,一个是在VPC路由表中为Internet可路由流量提供目标,另一个是为已经分配了公有 IPv4 地址的实例执行网络地址转换 (NAT)
一个VPC只能有一个IGW,用于连接internet
Dynamic Host Configuration Protocol Option Sets
指定如何为instance分配IP/Hostname等,默认AWS控制,也可以自定义DNS server
可以配置的选项有
Domain name server
Domain name
NTP server
NetBios name server
NetBios node type
Elastic IP Address
弹性IP地址是专门用于进行动态云计算的静态、公有IPv4地址。您可以将弹性IP地址与您账户中的任意VPC的任何实例或网络接口相关联。借助弹性IP地址,您可以迅速将地址重新映射到VPC中的另一个实例,从而屏蔽实例故障。注意,将弹性IP地址与网络接口关联,而不直接与实例关联的优势在于,只需一步,即可将网络接口的所有属性从一个实例移至另一个。
默认Public subnet下的instance会得到一个动态的public IP,如果重启instance,public会改变
可以为instance指定一个静态IP,重启instance不会改变
创建好EIP后就开始收费,不管是否关联到instance
一个region默认可创建5个EIP
Elastic Network Instance(ENIs)
为一个instance创建多个网卡,实现业务和管理网络的分离,如dual-home instances
Endpoints
连接VPC和AWS服务(如S3等)的连接点,好处是不用走VPN或AWS Direct Connect创建好endpoint后需要在对应的route table中增加路由
Peering
VPC对等连接是两个VPC之间的网络连接,您可通过此连接不公开地在这两个VPC之间路由流量。这两个VPC中的实例可以彼此通信,就像它们在同一网络中一样。您可以在自己的VPC之间、自己的VPC与另一个AWS账户中的VPC或与其他AWS区域中的VPC之间创建VPC对等连接。
默认情况下VPC与VPC是不能通信的,可以增加peering connection,这样不同的VPC就可以相互通信
Peering没有传递性,例如,若VPC1和VPC2有对等连接,VPC2与VPC3有对等连接,那么VPC1和VPC3默认是没有的,需要手动增加对等连接
创建peering的时候需要在两边VPC的route table中都增加相应路由
只需创建一次peering申请,如VPC1申请与VPC2建立peering连接,连接创建后,不用VPC2再向VPC1申请peering,因为连接已经建好,是双向的
现在peering的VPC可以跨region
如果VPC1与VPC2的CIDR有包含或部分匹配关系,则不能创建peering
AWS使用VPC的现有基础设施来创建VPC对等连接;该连接既非网关也非AWS Site-to-Site VPN连接,且不依赖某个单独的物理硬件。没有单点通信故障也没有带宽瓶颈
Security Group
安全组,通过创建rule来设置firewall,在instance层面控制网络访问
一个VPC支持500个SG,一个SG有50个inbound和50个outbound
SG可以设置allow rule,但不能设置deny rule,这个与ACL不同
默认没有inbound rule,除非手动增加,默认outbound allow all
SG是有状态的,言外之意,对于某个allow inbound,不用指定对应的outbound,会保留inbound的状态,再将响应返回
对于有多个rule的SG,在判断是否allow或deny时,AWS会评估所有的rule再做决定,没有优先级rule的说法
可以随时修改SG,即便关联到了某个instance,修改后立即生效,不用reboot-instance
Network Access Contorl List(ACLs)
在子网层面控制网络访问,默认都allow
支持allow,也支持deny
没有状态,需要同时指定inbound和outbound
每个rule有优先级,通过优先级确定是allow还是deny
影响的是整个子网,不用单独指定到某个instance
Network Address
Translation(NAT) Instances and NAT Gateways
都是用于private子网中的instance与外界通讯的技术,可以访问外网,但外网无法穿透到instance
NAT instance是AWS提供的AMI,部署后充当了proxy,需要将其部署在public subnet中并分配public IP,且disable source/destination check,然后再配置route table
NAT Gateway,不用手动创建proxy instance,仅创建Gateway 服务,当然AWS内部可能也创建了instance,但这个对用户是透明的。需要将Gateway部署在public subnet中,再指定public IP,同时修改路由
推荐使用NAT Gateways,管理更简单
Virtual Private
Gateways(VPGs),Customer Gateways(CGWs)and Virtual Private Networks(VPNs)
VPN连接,例如Lab与VPC通信
VPG是在AWS端,CGWs是客户端的物理或软件VPN隧道
需要从CGW到VPG初始化VPN隧道
VPG支持动态BGP路由,或静态路由
VPN连接包含两个隧道以提高高可用
以上为AWS VPC的知识,想了解更多内容,可以随时联系我们。