練習 - 設定網路存取

已完成

在本練習中,您會設定您稍早在本課程模組中建立的虛擬機器 (VM) 存取權。

重要

Microsoft Learn 沙箱應該仍在執行中。 如果沙箱逾時,您必須重做上一個練習 (練習 - 建立 Azure 虛擬機器)。

若要確認您先前建立的 VM 仍在執行中,請使用下列命令:

az vm list



















如果您收到空的回應 [],則必須再次完成本課程模組中的第一個練習。 如果結果列出您目前的 VM 及其設定,您可以繼續。

目前,您已建立並在其上安裝 Nginx 的 VM 無法從網際網路存取。 您會建立網路安全性群組,藉由允許連接埠 80 上的輸入 HTTP 存取來變更該情況。

工作 1:存取您的 Web 伺服器

在此程序中,您要取得 VM 的 IP 位址,並嘗試存取網頁伺服器的首頁。

  1. 執行下列 az vm list-ip-addresses 命令以取得 VM 的 IP 位址,並將結果儲存為 Bash 變數:

    IPADDRESS="$(az vm list-ip-addresses \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --name my-vm \
      --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
      --output tsv)"    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  2. 執行下列 curl 命令來下載首頁:

    curl --connect-timeout 5 http://$IPADDRESS
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    --connect-timeout 引數會指定最多允許五秒鐘的連線。 五秒鐘之後,您會看到一則錯誤訊息,其指出連線逾時:

    curl: (28) Connection timed out after 5001 milliseconds
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    此訊息表示在逾時期間內無法存取 VM。

  3. 另一個選擇性步驟是嘗試從瀏覽器存取網頁伺服器:

    1. 執行下列命令,將 VM 的 IP 位址列印到主控台:

      echo $IPADDRESS       
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      

      您會看到一組 IP 位址,例如 23.102.42.235

    2. 將您看到的 IP 位址複製到剪貼簿。

    3. 開啟新的瀏覽器索引標籤,並移至網頁伺服器。 片刻之後,您會看到未建立連線。 如果等待至瀏覽器逾時,即會看到類似以下內容:

      螢幕擷取畫面:顯示連線逾時錯誤訊息的網頁瀏覽器。

    4. 保持此瀏覽器索引標籤開啟,以供稍後使用。

工作 2:列出目前的網路安全性群組規則

無法存取網頁伺服器。 為了找出原因,我們要檢查您目前的 NSG 規則。

  1. 執行下列 az network nsg list 命令,以列出與 VM 相關聯的網路安全性群組:

    az network nsg list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --query '[].name' \
      --output tsv    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會看到此輸出:

    my-vmNSG
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Azure 上的每部 VM 都與至少一個網路安全性群組相關聯。 在此情況下,Azure 會建立一個 NSG,稱為 my-vmNSG

  2. 執行下列 az network nsg rule list 命令,以列出與 my-vmNSG NSG 相關聯的規則:

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會在輸出中看到 JSON 格式的大型文字區塊。 在下一個步驟中,您要執行類似的命令,讓此輸出更容易閱讀。

  3. 請再次執行 az network nsg rule list 命令。 這次,請使用 --query 引數,只擷取每個規則的名稱、優先順序、受影響的連接埠,以及存取權 ([允許] 或 [拒絕])。 --output 引數會將輸出格式化為資料表,以方便讀取。

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會看到此輸出:

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會看到預設規則 default-allow-ssh。 此規則允許透過連接埠 22 (SSH) 的輸入連線。 SSH (安全殼層) 是在 Linux 上使用的通訊協定,可讓系統管理員從遠端存取系統。 此規則的優先順序為 1000。 系統會依優先順序來處理規則,較低的數字會優先處理。

根據預設,Linux VM 的 NSG 只允許在連接埠 22 上進行網路存取。 此連接埠可讓管理員存取系統。 您也必須允許連接埠 80 上的連入連線,才能透過 HTTP 進行存取。

工作 3:建立網路安全性規則

在本區段中,您要建立允許在連接埠 80 (HTTP) 上進行輸入存取的網路安全性規則。

  1. 執行下列 az network nsg rule create 命令來建立稱為 allow-http 的規則,其允許在連接埠 80 上進行輸入存取:

    az network nsg rule create \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --name allow-http \
      --protocol tcp \
      --priority 100 \
      --destination-port-range 80 \
      --access Allow    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    基於學習目的,您可將優先順序設定為 100。 在此情況下,優先順序並不重要。 但如果埠範圍重疊,即須考慮優先順序。

  2. 若要驗證設定,請執行 az network nsg rule list 以查看已更新的規則清單:

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會同時看到 default-allow-ssh 規則,以及新規則 allow-http

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    allow-http          100        80      Allow    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

工作 4:重新存取您的 Web 伺服器

既然您已設定好連接埠 80 的網路存取,讓我們再次嘗試存取網頁伺服器。

注意

在您更新 NSG 之後,可能需要片刻時間,然後更新的規則才能傳播。 重試下一個步驟,而嘗試之間會暫停,直到您取得所需的結果為止。

  1. 執行稍早執行的相同 curl 命令:

    curl --connect-timeout 5 http://$IPADDRESS
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    您會看到此回應:

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  2. 另一個選擇性步驟是重新整理網頁伺服器的瀏覽器索引標籤。 您會看到首頁:

    螢幕擷取畫面:顯示 Web 伺服器首頁的網頁瀏覽器。首頁會顯示歡迎訊息。

很好。 實際上,您可建立獨立的網路安全性群組,其包含所需的輸入和輸出網路存取規則。 如果您有多個具有相同用途的 VM,則可在建立 VM 時將該 NSG 指派給每部 VM。 這項技術可供在單一的集中規則集之下,控制對多部 VM 的網路存取。

清理

當您完成此課程模組時,沙箱會自動清除您的資源。

如果您是在自己的訂用帳戶中進行,建議您在專案結束時判斷自己是否仍需要先前所建立的資源。 若您繼續執行資源,則可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。