Google Code Prettify

2022年11月1日 星期二

Azure: Virtual Network

  • Azure 的 Virtual Network (虛擬網路, VNet) 彼此間是隔離的,預設狀況下無法相互通訊,不同 VNet 間要通訊,需要架設 vNet peering 或 VPN,VNet 內可用的 IP 區段可以參考 IPv4 內部 IP
  • 一個 VNet 只能位於一個 Azure Region,不能跨 Region。
  • 每個 VNet 裡可以切割 subnet (子網段),每個子網預設會保留 5 個 IP,以 192.168.30.0/24 為例,Azure 保留的除了第1個 IP - 192.168.30.0 這是網段識別碼及 192.168.30.255 是網段的廣播識別碼,這是 Internet 的基本規定,Azure 另外保留了 3 個給 Azure 的服務用,分別為 192.168.30.1、192.168.30.2、192.168.30.3。
  • 子網段最小為 /29,僅 3 個 IP 可以用,最大為 /8,有 2^24 - 5 個 IP 可以用,計算的方式是以 32 減該數字,/29 就只有 2^3 - 5 = 3 個 IP。
  • 單一 region 最多可定義 1000 個 VNet,每個 VNet 最多可以有 3000 個 subnet。
  • 同一 VNet 裡的 subnet 間可以互相通訊。

example

  • create VNet


為了驗證上面的基本觀念,這裡會建立兩個 VNet,如上圖所示,VNet1 會有兩個 subnet,VNet2 只會有一個,三個 VM 都用 Linux,方面透過 ssh 登入到另一台 VM,以驗證 VM 間是否預設可通訊? 同一個 VM 裡的不同 subnet 是否預設可通訊?
在「Virutal networks」中按【Create】建立 Virutal Network,會出現如下畫面,因為台灣沒有 Azure 機房,通常會選日本的機房,這裡選 Japan East (關東) 機房

上圖按【Next:IP Address >】後出現如下畫面,依上面的網路圖填入 VNet1 的網段,並加入兩個 subnet (按【Add subnet】)。
按上圖的【Next:Security >】,並選擇「Tags」,這只是為了方便管理,把 VNet1、VNet2 及相關的 VM 都加入同樣的 tag,搜尋比較方便,然後按【Review + create】。

當出現如下畫面,表示剛的設定 Azure 初步檢查過沒問題,接著按【Create】即會產生 VNet1 及其內的兩個 subnet。用相同的辦法產生 VNet2 及其內的 subnet3。

  • create VM

接下來要建立如上架構圖的三個 VM,並套用已建立好的三個 subnet,以下以建立 VM3 為例。

我已經建立好 VM1、VM2,方法和 VM3 一樣,首先按【Create】,出現如下的下拉選單,選「Azure virtual machine」

出現如下的畫面,並面有許多 tab,也就是有許多類別的選項要設定,在 Basics 頁面就相當長,底下分三部份看。如下紅框,填入 VM 名稱,並選擇 region,要注意不要選中國、香港,這些地方的資料有可能會被當地國政府要求讀取。

底下比較沒有什麼需要特別說明,依自己的需求選擇機器型號。

因為是 Linux,用 SSH 登入,可以用帳密,只是比較麻煩,這裡選擇用「SSH publick key」,因為我已經在建立 VM1、VM2 時有產生好 key pair,在「SSH public key source」中選擇「Use existing public key」,並且在「SSH public key」貼入我之前產生的 public key,當然,VM 的防火牆要開放 22 port。

上面都選完後按【Next: Disks >】,「OS disk type」選擇 HHD 比較便宜,預設是 SSD。

按【Next: Networking > 】後,出現如下畫面,依架構圖的規劃選擇相關的網路設定,並開放 public IP 的 22 port,這樣才能從自己的電腦 ssh 進 VM。

到這都選擇好,按【Review + create】建立 VM,會出現如下的 preivew 結果,再按【Create】就會建立 VM了。

如下圖,共建立了三個 VM,最重要的是紅框的「Public IP address」。

  • 測試

用 putty 金鑰連線進上面三個 VM …

連入後要觀察 VM 裡的 IP,登入後先執行如下指令,安裝 ifconfig 等網路指令。

sudo apt install net-tools

接著在 VM1 執行ifconfig, 再看一下前面的架構圖,VM1 的 subnet 1 是 10.20.2.0/24,正如基本觀念裡說的,10.20.2.0 是網段識別碼,10.20.2.1、10.20.2.2、10.20.2.3 前三個 IP 是保留給 Azure 使用,所以分配到下一個 IP 10.20.2.4。

經過 ifconfig 查詢,三個 VM 的 IP 如下:
  • VM1: 10.20.2.4

  • VM2: 10.20.1.4

  • VM3: 192.168.30.12

接著在 VM1 裡 ping 另兩個 IP,會發現 VM2 有回應,VM3 沒有回應,表示 VM1 只和 VM2 網路有連通。在 VM2、VM 3 也用 ping 試看看,可以了解基本觀念裡所說的,同一個 VNet 網路互通,不同 VNet 網路預設不通。