Start learning AWS VPC

VPC 在 AWS 的網路中扮演很重要的角色。

Season Wang
9 min readMar 2, 2021

什麼是 VPC?

來看一段 Amazon 官方的定義:

Amazon Virtual Private Cloud (Amazon VPC) enables you to launch AWS resources into a virtual network that you’ve defined.

VPC 全名為 Virtual Private Cloud,顧名思義是讓你能在 AWS 中定義自己的私有虛擬網路,並在這隔離的環境中啟動 AWS 資源。

例如你可以為自己的 website 建立能夠連接至 Internet 的 public subnet,並將資料庫等後端系統放在不能被 Internet 存取的 private subnet。

VPC 中主要的 Component 可以分為以下幾種:

1. VPC

設定自己 IP Address 的範圍,可支援 IPv4 和 IPv6,以 CIDR 格式來表示。

什麼是 CIDR 呢 ?

CIDR 全名為 Classless Inter-Domain Routing,基於可變長子網路遮罩(VLSM)來進行任意長度的分配。

舉個例子:192.168.0.0/16,後面的 24 代表遮罩,是二進制的表示方法,代表前面有 16 個 1,而後面 16 個 0 為可變動的 bit,因此此 ip 範圍總共有 2¹⁶個 ip 可使用。

2. Subnet

設定好 VPC 的 ip 後,可以在 VPC 的網段下,再細分切割不同的子網路,同樣是以 CIDR 來指定範圍。

要注意的是,Subnet 有預留 5 個 ip 是留給 AWS 做使用的:

  • 10.0.0.0:Network address
  • 10.0.0.1:VPC router
  • 10.0.0.2:Mapping to the Amazon-provided DNS
  • 10.0.0.3:Reserved for future use
  • 10.0.0.255:Network broadcast

3. Internet Gateway (IGW)

提供 IP 存取 Internet 的能力。
也就是說,將 IGW attach 到 IP 上後,此 IP 就是 Public IP。

4. NAT Gateway

允許 Private IP 的資源透過 Net Address Translation 間接訪問 Internet。
NAT Gateway 必須放在 Public Subnet 底下。

提供一個情境:通常我們會將 Database 等內部伺服器放在 Private Subnet 不讓外人存取,然而有時系統更新時需要將其連上網路,此時就可以透過 NAT Gateway 扮演一個 proxy 的角色,讓私有網路的資源連向 Internet。

另外要注意的是,NAT Gateway 是單向的,只提供由內向外的連網方式,若是外面的 IP 想訪問內部 private IP 的資源,則需透過類似「跳板機」的方式來存取。

5. Route Tables

用來控制傳出子網路的流量,每個路由表都會指定目的地(Destination)目標(Target),Destination 代表要將流量傳出的 IP 位址範圍,Target 代表要傳送到的目標閘道

左:public subnet route table,此路由表底下的 IP 可以透過 IGW 存取網路;右:private subnet route table,此路由表底下的 IP 可透過 NAT Gateway 間接存取網路

!!! Route Tables 很重要,不要 IP address 和 gateway 都設好後,卻發現沒設定將他們連接起來的 route table,那一切都是白費工夫。

6. Elastic IP Address

預設 VPC 的 Public IP 都是浮動的,像是 EC2 關機再開機後 IP 會改變,透過 Elastic IP 可以向 AWS 申請一個固定 IP

7. Security Group

EC2 的防火牆,控制多個 instance 的流量。
預設為 Deny,所有流量均不可進入,設定 rule 之後,符合規則的流量才允許進入。

  • Stateful 有狀態的防火牆
    只須設定入站規則(inbound rule),會追蹤 request 的來源,自動將 response 回傳給來源位址。
    簡而言之就是,你進得來就出的去~

8. Network ACLs (NACL)

Subnet 的防火牆,控制對子網路的存取流量,全名為 Network Access Control Lists。
預設為 Allow 所有 inbound & outbound 流量,除非要抵擋特定流量,否則不需設定。

  • Stateless 無狀態的防火牆
    需要設定入站和出站規則(inbound & outbound rule)。

VPC Flow

用一個流程圖來結合上述所說的 Component 在 VPC 中怎麼搭配的。

進出 VPC 的流量示意圖

有一個使用者想存取 EC2

  • 透過 IGW 連進來後
  • 經過 Route Table 做轉導
  • 第一關會先在 Subnet 外面做檢查是否符合入站規則(NACL)
  • 通過後會再經過第二關 EC2 的防火牆做入站的檢查(Security Group)

再來要出去時

  • 由於 Security Group 只有檢查 inbound rule,因此可以直接出去
  • 到了 NACL,它會再檢查你的 outbound rule,符合了才可以離開

以上,就是當流量想進出時的大致流程。

Architecture & Implement

最後,試著利用 AWS console 實作出一個 VPC 網路的架構。

情境是這樣的,有一台 instance 具有連網功能,但只允許 Protocol 為 HTTP/HTTPs 和 SSH 的流量進入;另外有一台 Database 只可透過 NAT Gateway 存取網路。

VPC Network Architecture

Step 1: 選擇 Region
在設定 VPC 前,都必須先選擇一個 Region,可以從右上角上選擇。這邊以 US East (N. Virginia) 做示範。

Step 2: Create VPC
進入主控台,選擇 VPC 的服務,左邊 navbar 選擇 Your VPCs,點選 Create VPC。隨便設定一組以 CIDR 表示的 IP 範圍。

Step 3: Create Subnet
在此架構中需要分割出兩個子網域(public & private),並分別在不同的 AZ 中。

如何切割子網域?
ex: 10.10.0.0 / 24
IP 由 32 bits 組成 (8+8+8+8),以 . 做分割並用十進制表示,每個數字最大是 2⁸= 255。
後面的 24 代表遮罩,前面有 24 個 1、後面有 8 個 0,代表前面 24 bits 不動,只可更改後面 8 bits。
因此這個 subnet 的可用 ip 數為 2⁸,範圍從 10.10.0.0~10.10.0.255
若要切割下一個 subnet,則從 10.10.1.0 開始。

Step 4: Create Internet Gateway

Step 5: Attach IGW to VPC
剛設定完 IGW 會顯示 Detached 的狀態,把它 Attach 到剛設定的 VPC 上。

Step 6: Create Route Table (Public)

Step 7: Edit Routes (Public)
找到剛剛建立的 Public Subnet Route Table,在 Routes 找到 Edit routes,將 Destination 設為 0.0.0.0/0、Target 設為 igw

Step 8: Subnet Associations (Public)
找到剛剛建立的 Public Subnet Route Table,在 Subnet Associations 中,將 Public Subnet 加進來,代表此 IP 真的可以連接網路了。

Step 9: Create NAT Gateway
選擇要將 NAT Gateway 放到哪個 Public Subnet 中(此 public subnet 必須先 attach 到有 igw 的 route table),並注意必須要註冊一個 Elastic IP

按下 Create 後,等 NAT Gateway 的 Status 變成 Available 就代表成功了

Step 10: Create Route Table (Private)

Step 11: Edit Routes (Private)
找到剛剛建立的 Private Subnet Route Table,在 Routes 找到 Edit routes,將 Destination 設為 0.0.0.0/0、Target 設為 nat

Step 12: Subnet Associations (Private)
找到剛剛建立的 Private Subnet Route Table,在 Subnet Associations 中,將 Private Subnet 加進來。

Step 13: Create Security Group
在左邊 navbar Security 的地方找到 Security Groups,設定只有 HTTP/HTTPS 和 SSH 的流量可存取 EC2。

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Season Wang
Season Wang

Written by Season Wang

王璽禎 | The more tools you bring in the table, the more powerful you become.

No responses yet

Write a response