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