概要
OCI(Oracle Cloud Infrastructure)のPrivate Subnet上に作成した仮想サーバから
インターネット宛の通信を行う場合は一般的にNAT Gatewayを利用します。
NAT Gatewayは設定項目も少なく、名前とNATに使うパブリックIPさえ指定すれば
すぐに使えるので非常に便利ですが、NATするトラフィックを制御することはできず
基本的にNAT Gatewayをターゲットとして指定している送信元IPからの全てのトラフィックを
対象にNAT変換を行います。
NAT(NAPT)するトラフィックを制御したいという要件があった場合の対策として
NAT Instanceを利用する方法がありますが、今回はそちらについて検証を行いましたので
検証方法と結果について共有させていただきます。
検証構成
・VCN上にPublic SubnetとPrivate Subnetをそれぞれ作成、
NAT Instance(OS: Oracle Linux)をPublic Subnet上に配置します
・NAT InstanceのNAT変換の動作確認を行うためにNAT Client(OS: Windows Server)を作成、
Private Subnet上に配置します
・今回、検証を実施するユーザがインターネット上にいるためPrivate Subnetに配置している
NAT ClientにアクセスするためにはPublic IPを持った踏み台サーバが必要ですので
そのサーバとしてMGT Instance(OS: Windows Server)を作成、Public Subnet上に配置します
検証方法
・NAT ClientからNAT Instanceを経由してインターネット上にある
Google Public DNS(8.8.8.8)宛にpingによる疎通が取れるか試します
設定方法
※VCN、Subnet、ルート・ルール、セキュリティ・リスト、
Internet Gatewayの作成方法は割愛します。
作成方法について詳しく知りたい方は以下のチュートリアルをご参照ください
https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/
■NAT Instance
①インスタンス作成
・名前: 任意の名前を入力(検証ではNAT Instance)
・イメージとシェイプ
- イメージ: 任意のLinux OS(検証ではOracle Linux 7.9を使用)
- シェイプ: 任意のシェイプ(検証ではVM.Standard.E4.Flexを使用)
・サブネット: 事前に作成したPublic Subnetを選択
・パブリックIPアドレス: パブリックIPv4アドレスを割当て
・プライベートIPアドレス: 固定IPを入力(検証では10.0.1.11)
②VNIC設定変更
・VNICの編集メニューに移動
・ソース/宛先チェックのスキップにチェック
③NAT関連設定
NAT InstanceにSSHにてログイン、NAT関連設定投入
■NAT Client/MGT Instance
Windows Server 2019 Standard Editionで作成
※作成方法について詳しく知りたい方は以下のチュートリアルをご参照ください
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/
動作確認・結果
MGT Instance経由でNAT ClientにRemote Desktopでログイン
コマンドプロンプトでGoogle Public DNS(8.8.8.8)宛にpingを実施したところ
応答が返ってくることを確認しました。
またtracertの実施結果からはNAT Instance(10.0.1.11)を経由して通信が
行われていることが確認できました。
おわりに
・今回の検証ではNATの基本動作のみを試しましたが
次回は条件付き(例: 特定の送信元IPからの通信のみNAT対象にする)の
設定、動作も試してみたいと思います。
・本記事は個人で検証した内容の記録であり、検証方法及び結果を
保証するものではないことをあらかじめご了承・ご理解いただけますようお願い致します。