[VPC][EC2]WindowsでNATインスタンスを構成してみた をWindows Server 2012でやってみよう、という記事になります。最近、Amazon VPC上のNATインスタンス(インターネットに直接接続しないSubnetにおいたインスタンスとインターネットをNATでつなげるインスタンス)を構築するお仕事がありまして、せっかくなのでWindows Server でもやってみようと思い立ちました。で、上の記事を見つつ構築した手順になります。
基本的な手順は紹介した記事と同じです。まずは、公開されている Windows Server 2012 のAMIをVPCのPublic Subnetで起動します。起動したら、Elastic IPを確保して割り当てます。そして、このElastic IP経由でリモートデスクトップ接続します。 で、「次にPublic側ネットワークインターフェースのプロパティで自動メトリックのチェックボックスを外し、メトリックを1にしておく」という手順を行うのですが、ここはPowerShell でやってしまいましょう。
まず、Get-NetIPInterface でネットワークインターフェース一覧を列挙して、Public側ネットワークインターフェース(イーサネット)のInterfaceIndexを確認します。今回は12でした。ほかの記事見ても12であることが多いので、決まっているのかもしれません。そして、AutomaticMetric を Disabled にして、InterfaceMetric を1にします。
続いて、AWS Consoleに戻って、Private SubnetのENIを追加して、このインスタンスに接続します。また、必要な通信をSecurityGroupをWindows Firewallで許可しておきます。今回、Firewall は無効にしました(本番環境では絞って方がよさげ)。
ここまでで準備ができたので、Routing and Remote Access の機能を使ってNAT機能をセットアップします。まず、RRAS の機能を有効化します。これもPowerShellでやってしまいます。
インストールするとおそらく再起動を求められるので、最後に再起動しています。そして、ルーティングとリモート アクセスの構成と有効化を行うので、これもPowerShellで...と言いたいところですが、どうにもPowerShellのコマンドレットが見つからなかったので、ここからはGUIでやります(非常に負けた気分...)。
Routing and Remote Access を開きます(Windows+Qの検索画面で入力すると出て来ます)。おそらく、停止しているはずなので、「Configure and Enable Routing and Remote Access」を選択します。
Wizardを開始して、NATを選びます。
Internetにつなぐインターフェースで、Public側のインターフェースを選択します。
これでWizardを完了させると、NAT機能がセットアップされています。Private Subnetに割り当てているRoutingTableでこのインスタンスに割り当てたPrivate側のENIを指定しましょう(LinuxでのNATインスタンスだとENIが1つなのでRoutingTabkeのRuleでインスタンスIDの指定になりますが、Windowsの場合NetworkInterfaceが2つあるので、ENI単位で指定します)。これでWindows でNATインスタンスが構築できました。
ここまでできたら、次はWindows のNATインスタンスで冗長化したいねえ、という流れになるので、次はNAT冗長化スクリプトをWindows用に書き換えてみようかと思って居ます。