前言
這篇文章是出自於線上課程 Ultimate AWS Certified Solutions Architect Associate 的所記錄的筆記。
本文
CIDR - IPv4
全名是 Classless Inter-Domain Routing,是一種用來表示 IP Address 的方法,也常被使用在 Security Group 或是 networking,其中包含兩個部分。
- Base IP - 包含在這個 range 的 IP (X.X.X.X)
- Subnet Mask - IP 中有多少 bits 可以轉換
以 192.168.0.0 為例
在 IPv4 中,為了避免 IP 被消耗殆盡,故有區分 Public IP 及 Private IP 能夠使用的範圍,故 Private IP 能使用的範圍,根據分級可以分成
- Class A: 10.0.0.0 - 10.255.255.255
- Class B: 172.16.0.0 - 172.31.255.255
- Class C: 192.168.0.0 - 192.168.255.255
VPC
全名是 Virtual Private Cloud,在 AWS 服務底下
- 每個 region 最多有 5 個 VPC (在 soft limit 之下)
- 每個 VPC 最多有 5 個 CIDR ( CIDR size between 16 ~ 28 )
- VPC 是私有的,故私有 IPv4 範圍之內才允許使用
AWS 在每一個 subnet 中會保留 5 個 IP Address (前面四個 + 後面一個)
E.g. 10.0.0.0/24
被保留的 IP Address 如下
- 10.0.0.0 - Network Address
- 10.0.0.1 - VPC router
- 10.0.0.2 - Amazon-provided DNS
- 10.0.0.3 - future use
- 10.0.0.255 - broadcast address
也就是說,假如今天需要 30 個 IP Addresses 供 EC2 使用,使用的 27 bits 的子網域是不夠的( 27 bits 只有 32 個 IP Addresses,但必須要保留五個,故實際上能使用的只有 27 個 (32 - 5 = 27 < 30) )
Internet Gateway (IGW)
- 讓 VPC 底下的資源,E.g. EC2,具備連線到網路的能力
- 一個 VPC 只能與一個 IGW 連接
Bastion Hosts
當資源是建立在 Private Subnet 時,透過建立在 Public Subnet 的 EC2 (i.e. bastion hosts) 當作管道的方式連線到這些資源,搭配 Security Group 的方式限制允許存取 Private Subnet 的 EC2。
Bastion Hosts
NAT instance
- NAT 的全名是 Network Address Translation,是一種重寫 IP 封包的來源位址的技術
- 讓 Private Network 具備連線到網路的能力
- 必須要在 Public Network 才能被啟用
- 必須停用 EC2 Source/Destination Check
- 必須綁定 Elastic IP
- 必須將 Private subnet 與 NAT 設定在 route table
NAT Instance
但是現在 NAT instance 已經被 NAT Gateway 所取代,主要是因為
- 可用性較低
- 即時使用的彈性較低
- 網路流量是根據 EC2 instance type
- 必須自行管理 Security Groups & rules
NAT Gateway
- AWS 自家管理的 NAT
- 建立在一個特定的 AZ 底下
- 不能建立在與 EC2 同一個 subnet 底下
NAT Gateway
DNS Resolution in VPC
DNS Resolution (DnsSupport)
- 決定是否讓 VPC 支援 DNS Resolution
- 預設是 True,查詢對象為 Amazon Provider DNS Server 169.254.169.253 或是 VPC reserved IP (.2)
DNS Resolution
DNS Hostname (enableDnsHostnames)
- 啟用時,當 EC2 有 Public IP,那就會賦予一個 public hostname 給它
NACLs
全名是 Network Access Control List
- 控制流向 subnet 的流量
- 一個 subnet 一個 NACL,新的 subnet 都會指向到預設的 NACL
- 規則有各自的編號 1 - 32766,數字越低,優先權越高。E.g. #100 10.0.0.10/32 ALLOW 與 #200 10.0.0.10/32 DENY,#100 比 #200 的優先權高
Default NACL
- 預設的 NACL 不可隨意修改
Security Groups vs. NACLs
Reachability Analyzer
診斷網路連線問題的工具,檢查兩個端點是否能夠連線(不會傳送封包)
VPC Peering
目的是讓兩個不同的 private network 互通
Peering
- 不具有傳遞性
- CIDR 不能重疊
- 必須修改路由設定
以下圖為例,A 與 B Peering、B 與 C Peering,但並不意謂著 A 與 C Peering,而是要另外建立一個 A 與 C Peering。
VPC Peering
VPC Endpoints
每個 AWS 都有對外服務 (public URL),但透過 VPC Endpoint 可以直接藉由 private network 連接到 AWS 的服務,借一步節省使用 NATGW、IGW 的必要性
VPC Endpoints
可以分成兩種 Endpoints
- Interface Endpoint
- Gateway Endpoint
Interface Endpoint
供應一個 Elastic Network Interface (ENI) 為進入點
Interface Endpoint
Gateway Endpoint
供應一個 Gateway,並將它設為路由表的 target,支援 DynamoDB、S3
Gateway Endpoint
VPC Flow logs
- 捕捉網路流量流向各個服務的資訊
- 協助監控連線問題
- 可以將 log 記錄在 S3 or CloudWatch
Flow syntax
以 SG 與 NACL 為例,要如何區別問題是出在 SG 或是 NACL - 看 action
PrivateLink
讓不同 VPC 底下的資源溝通的方法
- 讓 VPC public
- VPC Peering - 要建立太多 peering
VPC Peering
EC2 Classic & AWS ClassicLink
這項服務已經 deprecated,基本上只會在考試上干擾作答。
- EC2 Classic: instance 運行在一個分享給其他人的網路
- ClassicLink
- 必須與 Security Group 連接
- 使用 Private IPv4 溝通
- 移除使用 Public IPv4 或 Elastic IP 的需求
Transit Gateway
當環境越來越複雜,VPC 越來越多,又要讓他們連接在一起,就會有越來越多的 Peering 需要建立,是一件相當麻煩的事情,這時就可以透過 transit gateway 來幫助我們
Transit Gateway
IPv6 in VPC
- 可以啟用 IPv6
- IPv4 不能被停用
- IPv4 與 IPv6 可以同時運行 (Dual-Stack Mode)
Egress - only Internet Gateway
- 只供 IPv6 使用
- 與 Internet Gateway 相似