Azure Web Apps / Azure Functions で利用可能なネットワーク関連のツール
こんにちは。Azure PaaS Developer サポートの村山です。
海外のブログではすでに紹介されているのですが、Azure Web Apps や Azure Functions で、SQL Database など別サービスのエンドポイントと疎通確認をするときや、VNET 統合を利用して仮想ネットワークと接続後、仮想ネットワーク内のリソースとの接続を確認をする場合によく使うコマンドなどを紹介します。
Azure Web Apps / Azure Functions で Ping は利用できない
最初に Azure Web Apps や Azure Functions 上では、Ping の実行が許可されていません。
また、Azure Load Balancer は、ICMP プロトコルの通過を許可していないので、Azure Web Apps / Azure Functions への Ping もできません。
なお、ping がタイムアウトする話の詳細はこちらのブログに書かれています。
このため、Azure ポータル上から Web Apps を選択後、[コンソール] などで Ping を実行しようとすると画像のようにエラーが発生します。
Kudu のコンソール (https://yourwebapp.scm.azurewebsites.net/DebugConsole) 上で実行した場合も結果は同様です。
では、どうすればよいでしょうか? tcpping と呼ばれるツールがあるのでこちらを利用しましょう。
tcpping を実行する
tcpping を コンソール上で実行するとこんな感じになります。
Web Apps でエンドポイントへの接続確認をする場合は、Ping の代わりに tcpping を利用してください。
例えば、Web Apps から Azure SQL Database を利用する際の接続確認として利用されます。SQL Database へ接続する場合は、ポート 1433 を指定してください。
また、Azure Web Apps では VNET 統合と呼ばれる機能を利用することで、仮想ネットワーク内に配置されている VM に接続できるようになります。
VNET 統合の設定後、Web Apps から仮想マシンのプライベート IP に接続できているかどうか確認する場合は、tcpping が役に立ちます。
なお、仮想ネットワーク内の VM に対して tcpping を実行する際は、仮想マシン側で開放しているポートを指定してください。
下記画像は、仮想ネットワーク内に配置した VM に割り当てられたプライベート IP に対して tcpping で接続確認をしている例になります。
※ VNET 統合を利用することで、Web Apps から仮想マシンへは接続できますが、仮想マシンから Web Apps へのプライベートな接続はできません。費用が高額になりますが、ILB ASE と呼ばれるサービスを使ってください。
VNET 統合の機能の紹介はこちらのドキュメントになります。 また、弊ブログのこちらの記事で ASE (App Service Environment)の紹介もしています。
nameresolver を利用する
VNET 統合後や、ASE 利用時に、仮想ネットワーク側で自前の DNS を指定している場合、その DNS できちんと名前解決ができるか確認するコマンドとして nameresolver が利用可能です。
nameresolver では VNET 側で構成した DNS サーバーを指定可能です。 こちらはサンプルとして DNS を指定せずに nameresolver を利用した結果です。
Network Traceも収集できる
App Service の通信に関しては、[問題の診断と解決] から Network Trace を利用することでパケットをキャプチャできるようになりました。(Basic プラン以上)
収集したトレースは Network Monitor や、Wireshark 、Message Analyzer を使って解析が可能です。なお HTTPS などの TLS/SSL での通信は暗号化されますのでご注意ください。
※ VNET 統合を設定している App Service Plan や、従量課金プランの Azure Functions ではこの機能は利用できません。
"Collect Network Trace" を押下して Network Trace を収集します。
TCP Connections からコネクションの状況を確認することもできる
[問題の診断と解決] ブレードにある、"TCP Connections" では、自分の Web App の TCP コネクションの状況も確認することができます。
接続数の増減や、TIME_WAIT が発生しているかどうかなど、1 か月前までさかのぼって確認できます。
おまけ
curl コマンドも利用することが可能です。オプションをつける際は Kudu 上でしかうまく動作しなかったので、画像では、Kudu 上で実行しています。
まとめ
Azure Web Apps / Azure Functions 上で実行可能なコマンドを紹介しました。
次回は、VNET 統合設定時のトラブルを例にとって実際にどのように利用するのかご紹介しようと思います。
※ 記事の内容は予告なく変更される可能性がございます。