AWS 內 VPC 與 Subnet 規劃、理解

2017-04-25 AWS

在你進入 AWS 首要先規劃的一定是 VPC,AWS 把 VPC 建構在一個 “邏輯上隔離” 的環境,讓你可以把自己的放在 VPC 內跑並且可用來建立 Private 環境

 

一般來說在你的機房環境會切 WAN / DMZ,而在 Subnet 的用法也是一樣,一般可以分為 Public / NAT / Private subnet

 

不提到 LAN 是因為在 AWS 上通常不會有使用者主機 (放 EC2 也太貴了!!),都會是以 Server 的形式存在,所以以下都是以 Server 為討論方向。

 

VPC 的可用範圍:

  • AWS 允許你對 VPC 可以從最小 /28 到最大 /16 的網段,也就是說你可以擁有最小 14 個 hosts 的 VPC,以及最大 65534 個 hosts 的 VPC。
  • 設定之後不能改,要改只能重建 VPC
  • 每個 VPC 都是獨立環境,但可透過 NAT 來串接不同的 VPC,但你的 Routing 必須不同,即不同 CIDR,否則無法路由。

 

首先必須對 subnet 有以下認知(參考 clifflu):

  • Route Tables
    • 同一個 VPC 下的封包預設互通
    • Route Table 決定往特定網段 (Destination) 的封包怎麼走 (Target)
      • 常見 Target 有:
        • local
        • NAT Portal
        • igw (internet gateway)
        • vgw (virtual gateway) 用於串接企業內部 vpn
    • 每個 subnet 只能指定零或一張 routing table
    • 有一張 route table 可以設為預設;未指定的 subnet 都參照它 (main)
    • 每個 subnet 的 CIDR 區塊不能重疊,不能大於 VPC。
    • 支援 IPv6
    • 提供 ACL,但通常預設夠用。

 

我會這樣定義 subnet 類型:

  • Public subnet:直接對外服務,擁有 EIP,透過 Internet Gateway 可直接訪問 Internet。
    • 視需求而定,一般較少定義 Server 在這個 subnet,但會是 NAT Gateway 的出口,所以是必要項。
  • NAT subnet:必須透過 ELB/ALB 來訪問,綁定 EIP 沒有作用,僅擁有 Private IP,透過 NAT Gateway 出去 Internet。
    • 通常用於必須經常訪問 Internet 的 Server,如:DNS、Proxy、NTP ..
  • Private subnet:必須透過 ELB/ALB 來訪問,綁定 EIP 沒有作用,僅擁有 Private IP,不能直接訪問 Internet,但可透過 Proxy、Tunnel 等方式訪問 Internet。

 

subnet 可用的範圍:

為什麼會說是可用的 subnet 範圍,不是切好了就全部可用嗎 ? 實際上在應用時 AWS 會有一些預設保留項:

  • AWS 對於每個 subnet 有定義保留位置 (前4後1)
    • 10.0.0.0: Network address.
    • 10.0.0.1: Reserved by AWS for the VPC router.
    • 10.0.0.2: Reserved by AWS. The IP address of the DNS server is always the base of the VPC network range plus two; however, we also reserve the base of each subnet range plus two. For more information, see Amazon DNS Server.
    • 10.0.0.3: Reserved by AWS for future use.
    • 10.0.0.255: Network broadcast address. We do not support broadcast in a VPC, therefore we reserve this address.
  • 如果有使用 ELB/ALB,選擇的可用 subnet 實際上會在你的 subnet 內啟動一台 EC2 接地,而當你的使用量到達一定程度,將會自動增長你的 ELB EC2 數量,也就是當你的 ELB 用量大,ELB 就會在你的 subnet autoscaling 啟動相對可用的 EC2 數量,而 subnet 可用的 IP 位置也就減少,當你的 subnet IP 數量用完則不會再增長 ELB EC2 的數量,也到達你的 ELB 瓶頸。

 

subnet 的可用性:

一般 subnet 除了切開 CIDR 以外,還會針對不同的 AZ 切分,以避免單點(機房) 失效的問題,如果你有不可失效的服務,通常會選擇兩個以上的 AZ 建置相同的 Service,並且透過 ELB 來串接。

 

AWS 拒絕提供的服務:

  • 不允許 multicast 和 broadcast
  • 不提供 VIP (但你可以自幹 HA 服務)

 

AWS 對於 infra 的建置提供非常完善的配置,能夠快速的建立想要的環境,隨開即用,如果你夠熟,花個半天的時間你就可以搞定一個 VPC,這是傳統機房所做不到的,也是雲端所帶來的便利性。

 

但在使用雲端之前有許多入門的門檻是相對重要,否則貿然進入你將會花許多冤枉錢,以及重新建置的成本。

 

參考:

clifflu – AWS VPC 心得

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱