0%

AWS Networking 學習紀錄 part7 - VPC

前言

這篇文章是出自於線上課程 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 所取代,主要是因為

  1. 可用性較低
  2. 即時使用的彈性較低
  3. 網路流量是根據 EC2 instance type
  4. 必須自行管理 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

  1. Interface Endpoint
  2. 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

讓不同 VPC 底下的資源溝通的方法

  1. 讓 VPC public
  2. VPC Peering - 要建立太多 peering

VPC Peering

這項服務已經 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 相似

Reference

  1. Ultimate AWS Certified Solutions Architect Associate