演習 - ネットワーク アクセスを構成する
この演習では、このモジュールで前に作成した仮想マシン (VM) へのアクセスを構成します。
重要
この演習用の VM は、このモジュールで以前に作成されています。 ユニット 3 で作成した VM またはリソース グループを削除した場合は、前の演習をやり直す必要があります (演習 - Azure 仮想マシンの作成)。
現時点では、前の演習中に Nginx を作成してインストールした VM にインターネットからアクセスできません。 この演習では、ポート 80 で受信 HTTP アクセスを許可することで変更するネットワーク セキュリティ グループを作成します。
注
この演習の一部のコマンドでは、Bash バージョンの Cloud Shell を使用することが重要です。 現在 PowerShell モードの場合は、[切り替え...] ボタンを使用できます。
タスク 1: Web サーバーにアクセスする
この手順では、VM の IP アドレスを取得し、Web サーバーのホーム ページへのアクセスを試します。
次の
az vm list-ip-addressesコマンドを実行して、VM の IP アドレスを取得し、その結果を Bash 変数として格納します。IPADDRESS="$(az vm list-ip-addresses \ --resource-group "IntroAzureRG" \ --name my-vm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"次の
curlコマンドを実行して、ホームページをダウンロードします。curl --connect-timeout 5 http://$IPADDRESS--connect-timeout引数で、接続が発生するまで最大 5 秒の時間を許可することを指定します。 5 秒後に、接続がタイムアウトしたことを示すエラー メッセージが表示されます。curl: (28) Connection timed out after 5001 millisecondsこのメッセージは、タイムアウト期間内に VM にアクセスできなかったことを意味します。
省略可能な手順として、ブラウザーから Web サーバーへのアクセスを試してみます。
次を実行して、VM の IP アドレスをコンソールに出力します。
echo $IPADDRESSIP アドレス ( 23.102.42.235 など) が表示されます。
表示された IP アドレスをクリップボードにコピーします。
新しいブラウザー タブを開き、Web サーバーに移動します。 しばらくすると、接続が行われていないことがわかります。 ブラウザーがタイムアウトするまで待つと、次のように表示されます。
このブラウザー タブは後で使用するため、開いたままにしておきます。
タスク 2: 現在のネットワーク セキュリティ グループ規則の一覧を表示する
Web サーバーにアクセスすることができませんでした。 理由を明らかにするために、現在の NSG 規則を調べてみましょう。
次の
az network nsg listコマンドを実行して、VM に関連付けられているネットワーク セキュリティ グループを一覧表示します。az network nsg list \ --resource-group "IntroAzureRG" \ --query '[].name' \ --output tsv次の出力が表示されます。
my-vmNSGAzure 上のすべての VM は、少なくとも 1 つのネットワーク セキュリティ グループに関連付けられます。 この場合、Azure は my-vmNSG という NSG を作成しました。
次の
az network nsg rule listコマンドを実行して、 my-vmNSG という名前の NSG に関連付けられている規則を一覧表示します。az network nsg rule list \ --resource-group "IntroAzureRG" \ --nsg-name my-vmNSGJSON 形式の大きなテキスト ブロックが出力として表示されます。 次の手順で、この出力を読みやすくするための似たようなコマンドを実行します。
az network nsg rule listコマンドをもう一度実行します。 今回は、--query引数を使用して、各規則の名前、優先度、影響を受けるポート、アクセス (許可 または 拒否) のみを取得します。--output引数によって、読みやすくするために出力が表として書式設定されます。az network nsg rule list \ --resource-group "IntroAzureRG" \ --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 (Secure Shell) は、管理者がシステムにリモートでアクセスできるようにするために、Linux で使用されるプロトコルです。 この規則の優先度は 1000 です。 規則は優先度順に処理され、小さい数値を持つ規則が大きな数値のものよりも前に処理されます。
既定では、Linux VM の NSG では、ポート 22 でのネットワーク アクセスのみが許可されます。 このポートを使用して、管理者はシステムにアクセスできます。 さらに、HTTP 経由のアクセスを許可するポート 80 での受信接続も許可する必要があります。
タスク 3: ネットワーク セキュリティ ルールを作成する
ここでは、ポート 80 (HTTP) での受信アクセスを許可するネットワーク セキュリティ規則を作成します。
次の
az network nsg rule createコマンドを実行して、ポート 80 で受信アクセスを許可する allow-http という規則を作成します。az network nsg rule create \ --resource-group "IntroAzureRG" \ --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 "IntroAzureRG" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output tabledefault-allow-ssh ルールと新しい規則 allow-http の両方が表示されます。
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow allow-http 100 80 Allow
タスク 4: Web サーバーにもう一度アクセスする
これでポート 80 へのネットワーク アクセスを構成したので、Web サーバーにもう一度アクセスしてみましょう。
注
NSG を更新した後、更新されたルールが伝達されるまでに少し時間がかかることがあります。 目的の結果が得られるまで、試行の間に一時停止して、次の手順を再試行します。
先ほど実行したのと同じ
curlコマンドを実行します。curl --connect-timeout 5 http://$IPADDRESSこの応答が表示されます。
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>省略可能な手順として、Web サーバーを指すようにブラウザー タブを更新します。 ホーム ページが表示されます。
よくできました。 実際には、必要な受信と送信のネットワーク アクセス規則を含むスタンドアロン ネットワーク セキュリティ グループを作成できます。 同じ目的で使用される VM が複数ある場合は、作成時に各 VM にその NSG を割り当てることができます。 この手法を使用して、複数の VM へのネットワーク アクセスを、単一の一元的な規則セットで制御できます。
この演習と、このモジュールのすべての演習を完了しました。 Azure 環境をクリーンアップし、使用されていないときに VM を実行したままにしないようにするには、 IntroAzureRG リソース グループを削除します。
クリーンアップ
- Azure ホーム ページの Azure サービスで、[ リソース グループ] を選択します。
- IntroAzureRG リソース グループを選択します。
- [リソース グループの削除] を選択します。
-
IntroAzureRG入力してリソース グループの削除を確認し、[削除] を選択します。