私は実際のWindowsマシン上に仮想Ubuntuを持っています。VirtualBoxはハイパーバイザーです。
仮想マシンネットワークは、ホストオンリーアダプターを使用してホストに接続されます。いろいろな理由で変更できませんが、外部から仮想Ubuntuにアクセスできるようにしたいと思います。
独自のDHCPサーバーをインストールし、VirtualBoxホストオンリーアダプターをそのサーバーにポイントしようとしましたが、機能しませんでした。
たとえば、ポート22をWindowsの実世界に転送するにはどうすればよいですか?
私は4年前から質問を壊していることを知っていますが、これに出くわし、フランク・トーマスの投稿に落胆しなかったことを嬉しく思います(彼が意図したとおりに読んでいた場合、ホストのみを使用する方法はありませんVMホストマシンの外部に接続します)。リモートデスクトップとFTP(これもApache)。DHCPを使用してホストオンリーアダプターをセットアップしました。目標は、ホストマシン(Windows)が特定のポートで接続を受信し、それらの接続をホストオンリーアダプターに転送することでした。 、したがって、分離されたVM(Ubuntu-Linux)。netshを使用してこれを行うための信頼できる方法を見つけました。
ホストマシンのパブリックIPアドレスが47.74.47.74で、ゲストマシンのプライベートIPが192.168.47.74だったとします。ゲストで、デフォルトポート(80)をリッスンするようにApacheを設定し、XRDP(リモートデスクトップ)デフォルトのポート(3389)をリッスンします。ホストへの接続に使用するランダムなポートを選択しました。使用しているポートを覚えていて、他に何も使用していない限り、それらは任意のポートにすることができます。 47.74.47.74:12567への接続をゲストに転送し、Apacheからindex.htmlを表示したかったので、次を使用してポート12567をゲストポート80に転送しました(これはCMD、Windowsコマンドコンソールにある必要があります)。
netsh interface portproxy add v4tov4 listenport=12567 listenaddress=0.0.0.0 connectaddress=192.168.47.74 connectport=80 protocol=tcp
(説明:これにより、特定のポートに転送ルールが追加され、別の場所に送信されます。「v4tov4」は、IPV4アドレスの受信と、IPV4アドレスへの転送を指します。「listenaddress = 0.0.0.0」は、任意のアドレスをリッスンしていることを意味します。そのポートを経由するIPV4アドレス。必要に応じて、特定のIPV4アドレスからの接続に制限できます。「connectaddress」および「connectport」はゲストマシン情報です。)
ポート12567をルーターのホストに転送した後、これにより、Webブラウザーを使用してどこからでもゲストのindex.htmlにアクセスできるようになりました。同様に、
netsh interface portproxy add v4tov4 listenport=12568 listenaddress=0.0.0.0 connectaddress=192.168.47.74 connectport=3389 protocol=tcp
windowsリモートデスクトップを使用して47.74.47.74:12568に接続し、どこからでもリモートデスクトップに接続して接続できます。
FTPには、この方法でさらに多くのポートを転送し、特定のポートを使用してFTPサーバーをセットアップすることが含まれます(netsh portproxyを使用してポート範囲を使用することはできません)が、誰かが私に望んでいる場合にのみ説明します。
ホストオンリーとは、外の世界とのつながりがまったくないということです。本当に別のアダプタタイプに切り替えることができない場合は、Windowsボックスをルーターとして構成する以外にこれを実現する方法はありません(これは範囲外のようです)。
最良のオプション(変更の理由を知らない場合)は、外部マシンからのフルアクセスを可能にするブリッジアダプターに切り替えることです。
適切なnecro-answerは、VM用のtwo仮想アダプターを定義することでした。 1つはNATで、もう1つはホストのみである必要があります。問題が解決しました。