練習 - 設定網路存取
在本練習中,您會設定您稍早在本課程模組中建立的虛擬機器 (VM) 存取權。
重要
Microsoft Learn 沙箱應該仍在執行中。 如果沙箱逾時,您必須重做上一個練習 (練習 - 建立 Azure 虛擬機器)。
若要確認您先前建立的 VM 仍在執行中,請使用下列命令:
az vm list
如果您收到空的回應 []
,則必須再次完成本課程模組中的第一個練習。 如果結果列出您目前的 VM 及其設定,您可以繼續。
目前,您已建立並在其上安裝 Nginx 的 VM 無法從網際網路存取。 您會建立網路安全性群組,藉由允許連接埠 80 上的輸入 HTTP 存取來變更該情況。
工作 1:存取您的 Web 伺服器
在此程序中,您要取得 VM 的 IP 位址,並嘗試存取網頁伺服器的首頁。
執行下列
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)"
執行下列
curl
命令來下載首頁:curl --connect-timeout 5 http://$IPADDRESS
--connect-timeout
引數會指定最多允許五秒鐘的連線。 五秒鐘之後,您會看到一則錯誤訊息,其指出連線逾時:curl: (28) Connection timed out after 5001 milliseconds
此訊息表示在逾時期間內無法存取 VM。
另一個選擇性步驟是嘗試從瀏覽器存取網頁伺服器:
執行下列命令,將 VM 的 IP 位址列印到主控台:
echo $IPADDRESS
您會看到一組 IP 位址,例如 23.102.42.235。
將您看到的 IP 位址複製到剪貼簿。
開啟新的瀏覽器索引標籤,並移至網頁伺服器。 片刻之後,您會看到未建立連線。 如果等待至瀏覽器逾時,即會看到類似以下內容:
保持此瀏覽器索引標籤開啟,以供稍後使用。
工作 2:列出目前的網路安全性群組規則
無法存取網頁伺服器。 為了找出原因,我們要檢查您目前的 NSG 規則。
執行下列
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。
執行下列
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 格式的大型文字區塊。 在下一個步驟中,您要執行類似的命令,讓此輸出更容易閱讀。
請再次執行
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) 上進行輸入存取的網路安全性規則。
執行下列
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。 在此情況下,優先順序並不重要。 但如果埠範圍重疊,即須考慮優先順序。
若要驗證設定,請執行
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 之後,可能需要片刻時間,然後更新的規則才能傳播。 重試下一個步驟,而嘗試之間會暫停,直到您取得所需的結果為止。
執行稍早執行的相同
curl
命令:curl --connect-timeout 5 http://$IPADDRESS
您會看到此回應:
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
另一個選擇性步驟是重新整理網頁伺服器的瀏覽器索引標籤。 您會看到首頁:
很好。 實際上,您可建立獨立的網路安全性群組,其包含所需的輸入和輸出網路存取規則。 如果您有多個具有相同用途的 VM,則可在建立 VM 時將該 NSG 指派給每部 VM。 這項技術可供在單一的集中規則集之下,控制對多部 VM 的網路存取。
清理
當您完成此課程模組時,沙箱會自動清除您的資源。
如果您是在自己的訂用帳戶中進行,建議您在專案結束時判斷自己是否仍需要先前所建立的資源。 若您繼續執行資源,則可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。