この記事は、管理者が Azure 仮想マシン (VM) に影響する接続の問題を診断して解決するのに役立ちます。
問題が発生した場合
- Resource Manager を使用してデプロイされた Azure VM から同じ仮想ネットワーク内の別の Azure VM に接続できない。
- Azure VM から同じ仮想ネットワーク内の Azure VM の 2 つ目のネットワーク アダプターに接続できない。
- Azure VM からインターネットに接続できない。
これらの問題を解決するには、次のセクションの手順に従ってください。
注記
次のデータベースを使用できます。
-
VM がリッスンしているポートを一覧表示するための
netstat -an
- ping テストや tcp テストなどの接続の診断情報を表示するための PowerShell の Test-NetConnection モジュール
- ICMP トラフィックは多くのネットワーク デバイスで優先順位が下げられているため、tcping やその他の TCP ベースのテスト ツールを必ず使用してください。 TCP テストを使用すると、特に Azure 環境では、より一貫性があり信頼性の高い結果が得られます。
解決方法
Azure VM が同じ仮想ネットワーク内の別の Azure VM に接続できない
手順 1: VM が相互に通信できることを確認します。
ソース VM に TCping をダウンロードします。
コマンド プロンプト ウィンドウを開きます。
TCping をダウンロードしたフォルダーに移動します。
次のコマンドを使用して、ソース VM から宛先に ping を実行します。
tcping64.exe -t <destination VM address> 3389
ヒント
ping テストが成功した場合は、手順 3 に進みます。 そうでなければ、次の手順に進みます。
手順 2: ネットワーク セキュリティ グループ設定を確認します。
VM ごとに、[ VNet の受信を許可 する] と [ ロード バランサーの受信を許可する] の既定の受信ポート規則を確認します。 また、優先順位の低い規則の下に一致するブロッキング規則が一覧表示されていないことも確認してください。
注記
数値の小さい規則が先に照合されます。 たとえば、優先度が 1000 と 6500 のルールがある場合、優先度 1000 のルールが最初に照合されます。
その後、ソース VM から宛先にもう一度 ping を実行してみます。
tcping64.exe -t <destination VM address> 3389
手順 3: リモート デスクトップまたは SSH を使用して宛先 VM に接続できるかどうかを確認します。
リモート デスクトップを使用して接続するには、次の手順を実行します。
Windowsの場合:
- Azure portal にサインインします。
- 左側のメニューで [Virtual Machines] を選択します。
- 一覧から仮想マシンを選択します。
- 仮想マシンのページで、 [接続] を選択します。
詳細については、「Windows が実行されている Azure 仮想マシンに接続してサインオンする方法」を参照してください。
Linuxの場合:
詳細については、Azure での Linux VM への接続に関する記事をご覧ください。
リモート デスクトップまたは SSH 接続が成功した場合は、次の手順に進みます。
手順 4: 接続チェックを実行します。
ソース VM で接続チェックを実行し、応答を確認します。
Windows: PowerShell を使用して Azure Network Watcher との接続を確認する
Linux: Azure CLI 2.0 を使用して Azure Network Watcher との接続を確認する
応答の例を次に示します。
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
ions/ipconfig1",
"NextHopIds": [
"bbbbbbbb-1111-2222-3333-cccccccccccc"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"Address": "10.1.2.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"cccccccc-2222-3333-4444-dddddddddddd"
],
"Issues": []
},
手順 5: 接続チェックの結果に含まれる問題を修正します。
受信した接続チェック応答の [Hops] セクションで、一覧表示されている問題を確認します。
次の表から対応する解決策を見つけ、示された手順に従って問題を解決します。
問題の種類 値 解決アクション ネットワークセキュリティルール ブロックしている NSG の名前 NSG 規則を削除するか、こちらの説明に従って規則を変更できます。 ユーザー定義ルート ブロックしている UDR の名前 このルートが不要な場合は、UDR を削除します。 ルートを削除できない場合は、適切なアドレス プレフィックスとネクスト ホップを使用してルートを更新します。 また、トラフィックを適切に転送するようにネットワーク仮想アプライアンスを調整することもできます。 詳細については、「仮想ネットワーク トラフィックのルーティング」と「PowerShell を使用してルート テーブルでネットワーク トラフィックをルーティングする」を参照してください。 CPU (中央処理装置) 使い方 Linux または Windows を実行する Azure 仮想マシンの一般的なパフォーマンスのトラブルシューティングに関する記事で説明されている推奨事項に従ってください。 メモリ 使い方 Linux または Windows を実行する Azure 仮想マシンの一般的なパフォーマンスのトラブルシューティングに関する記事で説明されている推奨事項に従ってください。 ゲスト ファイアウォール ファイアウォール ブロックの名前 次の手順に従います。 Windows ファイアウォールのオンとオフを切り替えます。 DNS の解決 DNS の名前 「Azure DNS トラブルシューティング ガイド」および「Azure 仮想ネットワーク内のリソースの名前解決」の手順を実行します。 ソケット エラー 該当なし 指定されたポートは別のアプリケーションによって既に使用されています。 別のポートを使用してみてください。 接続チェックをもう一度実行して、問題が解決されたかどうかを確認します。
Azure VM が同じ仮想ネットワーク内の Azure VM の 2 番目のネットワーク アダプターに接続できない
手順 1: 2 つ目のネットワーク アダプターでサブネットの外部との通信が有効になっていることを確認します。
既定では、セカンダリ ネットワーク アダプター (ネットワーク インターフェイス カードまたはネットワーク アダプターとも呼ばれます) は、既定のゲートウェイを使用するように構成されていません。 そのため、セカンダリ アダプターのトラフィック フローは同じサブネットに制限されます。
セカンダリ ネットワーク アダプターが専用のサブネットの外部と通信できるようにする場合、ユーザーはルーティング テーブルにエントリを追加してゲートウェイを構成する必要があります。 これを行うには、次の手順に従います。
2 つ目のネットワーク アダプターが構成されている VM で、管理者としてコマンド プロンプト ウィンドウを開きます。
次のコマンドを実行して、ルーティング テーブルにエントリを追加します。
Route add 0.0.0.0 mask 0.0.0.0 -p <Gateway IP>
たとえば、2 つ目の IP アドレスが 192.168.0.4 の場合、ゲートウェイ IP は 192.168.0.1 である必要があります。 次のコマンドを実行する必要があります。
Route add 0.0.0.0 mask 0.0.0.0 -p 192.168.0.1
route print を実行します。 エントリが正常に追加されると、次のようなエントリが表示されます。
ここで、セカンダリ ネットワーク アダプターへの接続を試みます。 接続がまだ失敗する場合は、次の手順に進みます。
手順 2: ネットワーク アダプターの NSG 設定を確認します。
プライマリ ネットワーク アダプターとセカンダリ ネットワーク アダプターの両方について、[ VNet の受信を許可 する] と [ロード バランサーが両方のネットワーク アダプターで受信を 許可する] の既定の受信ポート規則を確認します。 また、優先順位の低い規則の下に一致するブロッキング規則がないことを確認する必要があります。
手順 3: セカンダリ ネットワーク アダプターへの接続チェックを実行します。
- セカンダリ ネットワーク アダプターへの接続チェックを実行します。
- 環境全体で接続チェックを実行して、エンドツーエンドでプロセスが機能することを確認します。
接続チェックを実行する方法の詳細については、次の記事を参照してください。
Windows: PowerShell を使用して Azure Network Watcher との接続を確認する
Linux: Azure CLI 2.0 を使用して Azure Network Watcher との接続を確認する。
応答の例を次に示します。
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
ions/ipconfig1",
"NextHopIds": [
"bbbbbbbb-1111-2222-3333-cccccccccccc"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"Address": "10.1.2.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"cccccccc-2222-3333-4444-dddddddddddd"
],
"Issues": []
},
手順 4: 手順 5 の表を参照し、これらの手順に従って問題を解決します。
Azure VM がインターネットに接続できない
手順 1: ネットワーク アダプターが失敗状態であるかどうかを確認します。
次の手順に従って NIC の状態を確認します。
リソース エクスプローラー ポータルにログインします。
左側のウィンドウで、 [サブスクリプション] を選択します。
左側のウィンドウで、影響を受けるネットワーク アダプターまたは VM が属しているリソース グループを選択します。
[Microsoft ネットワーク] に移動します。
[ネットワーク インターフェイス] オプションを選択します。
影響を受けるネットワーク インターフェイスを選択します。
ポータルの上部にある [読み取り/書き込み] オプションを選択します。
[編集] オプションを選択します。
注記
[編集] オプションを選択すると、[GET] オプションが [PUT] オプションに変わります。
影響を受けるネットワーク インターフェイスを選択してから、 [PUT] オプションを選択します。
注記
この選択を行った後、ProvisioningState が Updating として表示されます。 通常の Azure Resource Manager ポータルでも同じ結果が表示されます。 操作が正常に完了すると、次に示すように ProvisioningState の値が Succeeded に変わります。
ポータルを更新します。 ネットワークアダプターは成功状態であるべきです。