はじめに
くどうです。
以前、クラシック(ASM)でNATを構成したことを書きました。
ではリソースマネージャー側で作成はできるのか?
結論として、NATは構成できません。
なぜなら、デフォルトルートを設定できるがルーティングしません。
でもね、NATは必要ないのです。なんとなく説明を書いていきます。
NATの検証構成
検証で作成した環境です。
・仮想ネットワークをひとつ作成します
・サブネットはFrontendとBackendに分け作成します
・FrontendはグローバルIPが付与される→外部からアクセスできます
・BackendはグローバルIPが付与されません→外部からアクセスできません
・NATはFrontendに配置します
・クライアントはBackendに配置します
・外部からクライアントにアクセスするため踏台をFrontendに配置します
・ルーティングテーブルBackendへ設定します。
NATの設定
NAT自身の設定は省きます。
Backendルーティングテーブルを設定します。
・0.0.0.0/0をPrefixとして設定します
・NAT(10.1.0.4)をNextHopとして設定します
この設定でNATまでパケットが飛んで来ればルートテーブルが正しく動作していることを示します。
結果、tcpdumpで眺めていてもパケットがNATまで到達しませんでした(´゚ω゚)・*;'.、ブッファァ
ルーティングテーブルの設定は正しいのか確認するため以下の追加検証を行いました。
Backend2を作成し、ルーティングテーブルを行ってみる。
・Backend2を作成します
・Backendにルーティングテーブルを作成します
・Backend(10.1.2.0/24)をPrefixとして設定します
・NAT(10.1.0.4)をNextHopとして設定します
結果、パケットはNATまで到着しました。
0.0.0.0/0が良くないのかと思いましたが、192.xxx.xxx.xxxや172.xxx.xxx.xxxでもパケットが到達しませんでした。
つまり、仮想ネットワークで指定したIPアドレスのレンジのみルーティングするということです。
PowerShell でユーザー定義のルート (UDR) を作成する
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-network-create-udr-arm-ps/
実はルーティングの部分に関してはデフォルトゲートウェイのことは一切書かれていない...
でも、Azureって実はNATは必要ないのです。仮想マシンにグローバルIPが付与されていようが、されていまいがインターネットへ通信は行えます。
これって実は便利なことで、NATを作成する必要もないため、お金もかからないし手間も省けるんですよ。
ただ問題はあります。Azureからインターネット側へ出ていくときのIPが不明なことです。
IPが固定でない限りは問題ないと思います。
おわりに
AzureのリソースマネージャーではNATは必要ないです。というか作成できませんでした。
NATが無くてもインターネット側へ通信が行えるのでWindowsUpdateなども問題なく行えます。
ただし、出ていくときのIPが固定じゃないかもしれないので要注意です。
通常、使う範囲では問題ないかと思います。
ではでは