VPC test 知识点
1
- Nat gateway 不能直接与vpc endpoints、vpn connections、AWS Direct Connect或者vpc peering connection进行流量互通,如果你的实例在private subnet中需要通过vpc endpoint、vpn、AWS Direct Connect连接,可以直接用private subnet的路由表直接路由到这设备上;
- 你不能直接从NAT gateway上通过VPC PEER/VPN/DC进行路由。NAT GATEWAY不能被这些连接的另一端直接使用;
2
- 任何的route table的local route不能被编辑或者删除;
3
- 无论任何时候一个subnet创建的时候,默认的都会与一个main route table关联,如果不同的路由表需要关联到一个subnet,我们需要显式的指定;
- 如果创建一个新的route table并设置了igw,那么只有与subnet关联,subnet中的instance才能访问网络;
4
- Endpoints只能在同样的区域被支持,你不能在vpc和managed service之间创建一个在不同region的endpoint
5
- Vpc endpoint有一个默认的policy允许所有的操作行为在S3上。我们可以限制访问特定的S3 bucket基于特定的策略。在这种场景下,对于访问新的bucket操作,VPC endpoints策略需要根据情况修改;
- 对于AWS IAM 的role/user 被用来访问S3 bucket需要进行IAM policy授权。如果IAM ROLE/USER不是一个管理员或者FULL S3权限,新的S3 bucket必须被加到IAM POLICY上。
- 在同一个region中,每个VPC ENDPOINT只有一个route table,这个route负责定义VPC endpoint访问S3的请求。
6
- 一个ACL会包含一组规则,这些规则是按照编号由小到大顺序排列。这些规则按照最小数字编号的规则生效,如果后续高数字编号的规则针对相同的地址/协议/端口进行设置,那么将被忽略;
7
- NAT GATEWAY必须创建在public subnet中,同时这个public subnet必须能连到internet上;
- NAT GATEWAY创建的时候自带elastic ip
- 你不能将一个SG关联一个NAT GATEWAY。你只能将SG与instance关联,控制他们的流量出入;
8
- 堡垒机Bastion一般部署在public subnet,用户访问不直接对外提供访问的instance;
9
- 堡垒机Bastion部署在云端的manage VPC的public subnet中,在自己公司的网络中可以通过vpn访问云端manage vpc中的堡垒机。管理vpc可以和application的VPC做peering连接,管理application vpc的private subnet中的instance;
10
- 安全组Security Group是有状态的,in/out只需要设置一个规则;SG是和instance关联的;
- ACL是无状态的,in/out规则都要设置才能生效;ACL是和subnet关联的;
11
- 安全组SG是有状态的,如果inbound和outbound设置的 source和destination规则不同,只要有一个符合访问请求规则就可以访问了。
- ACL是按照规则编号大小来看生效的顺序的,如果两个编号针对同一个协议端口进行设置,编号100的规则优于编号200的规则先生效;
12
- 默认的ACL是允许所有入站和出站的流量,与subnet关联
- 如果没有明确subnet与ACL关联,那么subnet将与默认的subnet关联
- 一个ACL可以与多个subnet关联,但是当删除subnet的时候,关联将被删除
- 可以自定义ACL,这类ACL默认是拒绝所有进出流量;
- ACL没有状态,入站出站需要分别定义规则,同时是按照数字编号由小到大的顺序排序,规则编号小的先生效;
- IPV4的每个ACL有一个编号为星*的规则,此规则确保数据包不匹配任何其他规则数据时拒绝该数据包;我们可以删除或者修改这个规则;
- IPV6的每个ACL有一个编号为星*的规则,这个规则不允许删除和修改,这个规则确保数据包不匹配任何规则的情况下流量被拒绝;
- 对于出站规则,发起请求的客户端会选择临时端口范围。根据客户端的操作系统不同,范围也随之更改。许多 Linux 内核 (包括 Amazon Linux 内核) 使用端口 32768-61000。生成自 Elastic Load Balancing 的请求使用端口 1024-65535。Windows 操作系统通过 Windows Server 2003 使用端口 1025-5000。Windows Server 2008 及更高版本使用端口 49152-65535。NAT 网关使用端口 1024 - 65535。例如,如果一个来自 Internet 上的 Windows XP 客户端的请求到达您的 VPC 中的 Web 服务器,则您的网络 ACL 必须有相应的出站规则,以支持目标为端口 1025-5000 的数据流。
- 对于HTTPS 443的入站规则被允许,但是出站的端口不是443,如上所述是需要使用临时的端口。所以设置出站端口443是错误的;
13
- VPC endpoint在VPC外部不被支持;
- VPC Endpoint不能被VPC的外部继承,外部的一般指 vpc peering、VPN、Direct connection、Classlink Connection
14
- SG的默认规则是允许outbound流量的,但是如果你指定了outbound的流量规则限制,流量将无法流出。
- 对于一个gateway endpoint,如果SG指定了outbound的流量被限制,你必须添加一个规则允许目标服务的前缀被访问,才能正常的进行流量输出;
- ACL也可以限制outbound的流量;
15
- 在VPC peering中不支持使用其他VPC中的NAT GATEWAY
16
- 创建一个SecurityGroup默认是支持所有outbound流量,但是没有inbound流量规则,所以来自其他instance的请求默认是不会被允许的;
- VPC peering支持跨region构建,走的都是AWS内部网络,只是在部分region支持。跨区构建才会有timeout这种场景出现。如果是ACL或者SG不允许访问,直接就是connect failed了。
17
- AWS默认针对每个subnet都保留了5个ip,如10.0.0.0-10.0.0.3和最后一个IP10.0.0.255
- 10.0.0.0:Network address
- 10.0.0.1:for VPC router
- 10.0.0.2:for DNS Server
- 10.0.0.3:for future use
- 10.0.0.255:network broadcast address
18
- Custom VPC不支持DNS HOSTNAME ENABLE,当你在这个VPC创建一个EC2的时候不会带private DNS name。你需要修改VPC的属性,设置dns hostname被设置为enable。
- DNS resolution是一个解决DNS HOSTNAME在AWS内部生效的能力,是通过AWS的DNS server。感觉有点类似我们管理host表;
- 自动赋予public IP这个事情如果是在public subnet中可以在操作的时候设定。如果是在private subnet中创建EC2,默认是disabled的;
19
- AWS的VPC支持增加第二个CIDR,同时CIDR一旦被创建就不能被修改。
- 使用VPC的第二个CIDR可以将VPC中的所有instance放到一个subnet中,就可以保证他们可以互相通讯了;
20
- 我们可以创建新的route table,并将其设置为主Route table。后续所有新创建的subnet就会默认关联新的主route table;
21
- VPC flow logs可以捕获VPC内网络接口的进出流量,Flow log被存储在Amazon Cloudwatch logs中。
- flow logs可以查看信息:<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>
22
- 在vpc peering中两个vpc中的subnet关联的路由必须构建指向对方CIDR的路由规则;
23
- SG中针对同一个来源如果设定了允许所有的tcp流量,那么额外设置80端口这类就属于重复设置了。
24
- IPV4 VPC支持构建第二个CIDR,默认的target 是local;
- VPC PEERING的target是 pcx-xxx;
- VPN connection的target是vgw-xxx;
- Direct Connection的target一般包含的是vgw-xxx;
25
- VPC FLOW logs捕获vpc内的进出流量,flow logs data被使用amazon Cloudwatch log存储,你可以再cloudwatch log中查看日志;
- 同时我们可以为一个vpc、一个subnet或者一个network interface创建flow log;这样方便我们定位具体问题;