NAT で VirtualBox Debian ゲストを処理する Windows 7 ホストがあります。このゲストは、ポート リダイレクトを通じて外部からアクセス可能ないくつかの Web サービスを実行しています。
これらのサービスへの外部アクセスを URL 経由で提供する必要がありますが、適切な DNS 解決に頼ることができないため、ホスト IP をゲスト環境に伝播する必要があります。ホストへの影響を最小限に抑えながらこれを行うにはどうすればよいでしょうか?
いくつかの説明: 「外部」、「外部アクセス」は、ホストと同じレベルでホストされている Web ブラウザーを指します。つまり、ホスト アドレスのみに依存することはできません。
一枚の絵は千の言葉に値する。
+--------------+ External
| Windows Host | network +---------------------+
| +----+ | | Web client |
| | | NAT | +----------------+ |
| | ------------------------> Page generated | |
| | | | | |by VM with URLs | |
| | VM | | | |to host | |
| | | | | +--------|-------+ |
| | | FWD | | |
| | <--------------------------------+ |
| | | | +---------------------+
| +----+ |
+--------------+
答え1
これを実現する方法の1つは、次のようなサイトの裏にあるトリックです。翻訳元必要なのは、ネットワーク内に、リクエストを受信した IP アドレスをクライアントに返す Web サーバーだけです。
覚えておいてください。NAT を使用しているため、サーバーは NAT ルーター (この場合は VM ホスト) のアドレスを発信元アドレスとして認識します。
whatsmyip.php
これを実現するには、WebサーバーのWebルートにphpスクリプト(つまり)を作成します。
//whatsmyip.php
<?php
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ;
Echo "$ip;
?>
ゲストからアクセスするhttp://webserver/whatsmyip.php
(ソース:トピック )
今、あなたはその答えをサービスで評価するだけです
答え2
guntbert の回答を考慮すると、次のようになります。
- 回答に記載されているように、リモート アドレス レスポンダーをホストするには、「外部」ネットワーク内のサードパーティ Web サーバーを使用します。
- VMの初期化フェーズ中(および/またはネットワークコンテキストに応じて定期的に)、VMを参照してWindowsホストの外部アドレスを取得します。
- 取得したアドレスを使用して、ページの構築中に URL を偽造します。