質問: 学習用に自宅にインフラを構築しています。 現在の構築内容は以下の図のとおりです。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b32afb0ef8450fed98e1f6ab37d5c8ea.png) ### 目標 現在グローバルIP`128.100.100.100`に対してドメイン`hogehogedomain.com`を取得しています。 図の赤色の点線枠内の各サーバーに対して、外部から以下のドメインでアクセスできるようにしたいと考えています。 * **web.hogehogedomain.com:80** * **api.hogehogedomain.com:80** * **game.hogehogedomain.com:20000** 試したこと ----- 図の WindowsServer に **DNSサーバ** の役割を追加し、`172.16.1.2`に対して`web`というドメイン名をAレコードで設定しました。 しかし、外部からnslookupコマンドで`web.hogehogedomain.com`に問い合わせを行ったところ「ドメインを見つけることができませんでした。」というメッセージが表示されてしまいました。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c91976ef28942ccc0e79a02bac6a9bb7.png) ### 質問内容 ここで、ふと思ったのですが仮にこの設定が正しく動作しても、外部から見たときのアドレスは`172.16.1.2`になるので正しく接続はできないという認識ですが間違いないでしょうか? 仮に上記の認識が間違いでなかった場合、外部から`blog.hogehogedomain.orz.hm:80`や`api.hogehogedomain.com:80`にアクセスした場合、 両方とも`128.100.100.100:80`になってしまうため、目標としている運用はできないのでしょうか? ### 補足 各サーバは適切なファイアーウォールが設定されています。 ルータには192.168.1.10をDNSサーバとして登録していて、DNSポートは192.168.1.10にフォーワードするように設定しています。
回答: > > ここで、ふと思ったのですが仮にこの設定が正しく動作しても、外部から見たときのアドレスは172.16.1.2になるので正しく接続はできないという認識ですが間違いないでしょうか? > > > そうですね。全く関係の無い設定です。 > > 外部からblog.sakatainu.orz.hm:80やapi.hogehogedomain.com:80にアクセスした場合、 > > 両方とも128.100.100.100:80になってしまうため、目標としている運用はできないのでしょうか? > > > 簡単なのは、Windowsサーバー上にリバースプロキシーサーバーを立てて、入り口のルーターで、80番ポートをそこにポートフォワーディングします。 リバースプロキシーサーバーでは、リクエストのホスト名によって、各サーバーに振り分けます。 外部のDNSサーバーの設定で、ホスト名は全部128.100.100.100に設定します。 Windowsサーバーでポートフォラーディングの設定をすれば、リバースプロキシーサーバーを仮想マシン上に置く事もできるでしょう。