VPC流日志(Flow Logs)
VPC流日志(Flow Logs)可以捕获经过你的VPC的网络流量(入向和出向),Flow Logs的日志数据保存在Amazon CloudWatch Logs中。
创建了Flow Logs后,你可以在Amazon CloudWatch Logs中查看和检索其数据。
Flow logs可以在以下级别创建:
- VPC级别
- 子网级别
- 网络接口级别
同时,VPC Flow Logs还有如下特性:
- 对于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地址)
默认格式
默认情况下,流日志记录的日志行格式是空格分隔的字符串,具有以下顺序的以下字段组。
<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>
如下图所示是一个VPC Flow log所捕获的数据信息。可以看到里面有网卡信息,源/目IP地址,端口号,协议号,接受/拒绝结果信息等。
在此示例中,允许指向账户 123456789010
中的网络接口 eni-1235b8ca123456789
的 SSH 流量(目标端口 22,TCP 协议):
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
在此示例中,拒绝指向账户 123456789010
中的网络接口 eni-1235b8ca123456789
的 RDP 流量(目标端口 3389,TCP 协议):
2 123456789010 eni-1235b8ca123456789 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK
更多资料可以参考官方文档VPC 流日志
VPC终端节点(VPC Endpoints)
在一般的情况下,如果你需要访问S3服务,EC2实例或者DynamoDB的资源,你需要通过Internet公网来访问这些服务。有没有更快速、更安全的访问方式呢?
VPC终端节点(VPC Endpoints)提供了这种可能性。
VPC终端节点能建立VPC和一些AWS服务之间的高速、私密的“专线”。这个专线叫做PrivateLink,使用了这个技术,你无需再使用Internet网关、NAT网关、VPN或AWS Direct Connect连接就可以访问到一些AWS资源了!
知识点
如下图所示,VPC内的服务(比如EC2)需要访问S3的资源,只需要通过VPC终端节点和更改路由表,就可以通过AWS内网访问到这些服务。在这个情况下,VPC内的服务(EC2)甚至不需要连接任何外网。

终端节点(Endpoints)是虚拟设备,它是以能够自动水平扩展、高度冗余、高度可用的VPC组件设计而成,你也不需要为它的带宽限制和故障而有任何担忧。
AWS PrivateLink是专为客户设计用于特定用途的AWS内网,它采用了高度可用并且可扩展的架构(意味着你无需再为PrivateLink的性能和高可用性做任何额外架构设计)。
VPC终端有两种类型:接口和网关
其中接口类型支持以下服务(了解即可):
- Amazon CloudWatch Logs
- AWS CodeBuild
- Amazon EC2 API
- Elastic Load Balancing API
- AWS Key Management Service
- Amazon Kinesis Data Streams
- AWS Service Catalog
- Amazon SNS
- AWS Systems Manager
- 其他 AWS 账户托管的终端节点服务
- 支持的 AWS Marketplace 合作伙伴服务
网关类型支持以下服务(需要记住):
- Amazon S3
- DynamoDB
创建VPC Endpoint






创建访问S3的Role赋给EC2








VPC对等连接(VPC Peering)
VPC对等连接(VPC Peering)是两个VPC之间的连接,通过VPC Peering,你可以使用私有地址让两个VPC之间相互通信,就像它们在同一个VPC内一样。
你可以在自己的两个VPC之间建立对等连接,也可以在自己的VPC与其他AWS账号的VPC之间建立对等连接,还可以在位于不同区域的VPC之间建立对等连接(在2017年11月之前VPC Peering还不支持跨区域的连接呢)。
如下图所示,VPC A和VPC B之间建立了对等连接,那么VPC A中网段10.0.0.0/16内的实例就可以和VPC B中网段172.31.0.0/16内的实例进行互相通信,仿佛它们是处于同一个内网一样。

VPC Peering不是传统意义上的网关或者VPN连接,它并不依赖于任何物理的设备,它也不会出现单点故障或者网络瓶颈。
知识点
- 如果两个VPC出现了地址覆盖/重复,那么这两个VPC不能做Peering
- 例如10.0.0.0/16的VPC与10.0.0.0/24的VPC是不能做对等连接的
- 参与VPC Peering的两个VPC可以来自不同的区域(这个功能以前是没有的)
- VPC Peering不支持Transitive Peering
- 即如果VPC A与VPC B进行了对等连接
- VPC B与VPC C进行了对等连接
- VPC A是不能与VPC C进行直接通信的,必须再建立VPC A和VPC C的对等连接才可以
- 两个VPC通过VPC peering打通,那么两个VPC中所有的子网都互相路由打通了,而且地址还不能重叠。
- 如果只需要精确控制两个vpc中的两个子网联通怎么办?借用NACL/路由表?
Direct Connect线路
AWS Direct Connect线路可以让你通过以太网光纤线路连接你的内部网络与AWS Direct Connect Location,可以打通你的内部网络与AWS的网络,从而拥有高速率、低延迟,安全、可靠的专线网络。
一般来说,我们要搭建一条Direct Connect线路,需要先通过本地的网络服务提供商将我们内部网络接到一个同城市的Direct Connect Location (这个Location可以是Equinix, CoreSite, Digital Reality的数据中心,全球有几十个这样的地理位置)上。然后需要向AWS申请Cross Connect,将服务提供商的路由器直接连接到同一个机房不同机柜的AWS设备上。
通过这样的连接,我们可以端到端地利用专线的稳定性和高吞吐量访问我们位于AWS内的所有资源。

Direct Connect的特点
- AWS提供的Direct Connect的带宽是1Gbps或者是10Gbps
- 少于1Gbps速率的Direct Connect线路可以向AWS Direct Connect合作伙伴申请,可以申请50Mbps到500Mbps的线路
- Direct Connect的数据包使用802.1Q协议进行封装(Q-in-Q tagging)
VPN连接和Direct Connect的区别
- VPN连接可以在数分钟之内就搭建成功。如果有紧急的业务需求,可以使用VPN连接。VPN连接是基于互联网线路的,因此带宽不高,稳定性也不好,但价格便宜
- AWS Direct Connect使用的是专线,你的数据不会跑在互联网上,是私有的、安全的网络
https://docs.amazonaws.cn/vpc/latest/peering/peering-configurations-partial-access.html