ASDK上に立てた仮想マシンへのアクセス方式として、公式にドキュメントに記載されている のは以下のやり方がある。
ASDKホストマシンにリモートデスクトップして、その上でSSH/RDP接続する。 ただし、ASDKホストマシンはWindows Serverベースのため、標準だと最大2セッションしか接続できないので、多数のユーザから同時にはアクセス出来ない。 Azure Stack PowershellおよびAzure Stack ToolsをセットアップしたPCから、ASDKホストマシンにVPN接続する。 この場合は、リモートデスクトップの2セッション接続制限には引っかからないが、接続元となるPCに上記のツールをセットアップしてVPNを設定する必要がある。(ASDKをデプロイする度にこの設定をユーザにやり直してもらう)
その他、Azureと同様にVPN GatewayをセットアップしてP2S VPNを構成するとかは当然出来る。
ただ、いずれも、オンプレミスっぽい雰囲気でASDK上の仮想マシンを使いたいだけのユーザからするとちょっと……、ハードルが高い。
そのため、お手軽にオンプレミスっぽい感じで接続できるようにASDKホストマシン上でNATを設定して、さもその辺に仮想マシンが居るように見せかけることにした。
Fig. ASDKでNATを構成する概念図
ASDKホストマシンで実施する手順は以下の通り。
NATオブジェクトを作成する NATオブジェクトに、接続用IPアドレスを追加する NATルールを作成し、仮想マシンのIPアドレス&Port番号と、接続用IPアドレス&Port番号のマッピングを設定する
NATオブジェクトを作成する
デフォルトで、ASDKとBGPルータの間でVPN接続するための”BGPNAT”という名前のNATオブジェクトが作成されているが、これは華麗に無視して別のNATオブジェクトを作成するのが吉。
New-NetNat -Name global -ExternalIPInterfaceAddressPrefix 192.168.1.0/24
NATオブジェクトに、接続用IPアドレスを追加する
ASDKホストマシンに割り当てられているIPアドレスとは別に、NAT専用のIPアドレスを設定するのが分かりやすいはず。もしASDKが接続されているセグメントに余裕があるなら、仮想マシンと1対1で設定してしまっても良いだろう。
Add-NetNatExternalAddress -NatName global -IPAddress 192.168.1.6 -PortStart 0 -PortEnd 65535
NATルールを作成し、仮想マシンのIPアドレス&Port番号と、接続用IPアドレス&Port番号のマッピングを設定する
Add-NetNatStaticMapping -NatName global -ExternalIPAddress 192.168.1.6 -Protocol TCP -ExternalPort 22 -InternalIPAddress 192.168.102.32 -InternalPort 22
後は、NATルールを作成するだけ。
で、繋いでみると、繋がる!!! (ちなみにPingに応答しているのはASDKホストマシンのほう。NATルールにないのでASDKホストマシン側に着信している)