2019年、VirtualBoxでWin 10を実行しています。基本的に、localhostを10.0.2.2(ホストマシンのIP)にリダイレクトしたいと考えています。
10.0.2.2 localhost
これは機能しないようです。Windows 10 はローカルホストの検索を意図的に無効にしていると報告する人もいます。なぜそうするのかはわかりません。
しかし、私はこの問題を解決してホストのローカルホスト URL にアクセスできるようにする回避策を見つけようとしています。
答え1
現在、マシンのオン/オフのサービスには、アプリがローカルホストのオリジンで実行されている必要があります。そのため、10.0.2.2では実行できません。
VM をリッスンしlocalhost
、実際の接続を正しい宛先に転送する TCP または HTTP プロキシ/フォワーダーを構成します。
HTTP の場合、Nginx や Apache などのリバース プロキシが最も簡単な方法です。文字通り、 の VirtualHost だけが必要ですProxyPass / http://10.0.2.2/
。他のプロトコルの場合、Nginx と HAproxy の両方がストリーム転送もサポートしています。
SSH-L
や-R
転送 (ホストまたはゲストに SSH サーバーがあるかどうかによって異なります)、または Windows の組み込み などの他の TCP フォワーダーを使用することもできますnetsh int portproxy
。
たとえば、Windows ゲストでポート 443 を転送するには、次のようにします。
netsh interface portproxy add listenaddress=127.0.0.1 listenport=443 connectaddress=10.0.2.2 connectport=443
あるいは、ゲストに PuTTY がインストールされていて、ホストに SSH サーバーがある場合は、次のようになります。
plink -v -N -L 443:localhost:443 [email protected]
Windows 10 はローカルホストの検索を意図的に無効にしていると報告している人もいます。なぜそうするのかはわかりません。
Windows がこれを実行した主な理由は 2 つあります。
名前
localhost
は「よく知られている」、つまりループバックアドレスに解決されることが広く認められている。起こる127.0.0.1または::1に解決される場合、意図した127.0.0.1 または ::1 に解決され、すでに数十年にわたってそのように解決されてきました。したがって、OS にそのようなルールが組み込まれているのは当然のことです。実際、Windowsをバイパスする方法を見つけたとしても、多くのウェブブラウザOSの動作に関係なく、このようなルールも組み込まれています。(例えば、Chromiumのソースコードこれは、'localhost' のマッピングがハードコードされており、OS に問い合わせる手間すらかからないことを示しています。IETF の標準草案これはリゾルバ レベルで義務付けられます。
Web ブラウザは多くの場合、 を安全なオリジンと見なします。つまり、他のURL
localhost
よりも多くの API を提供している可能性があります。もちろん、これは localhost を 127.0.0.1/::1 以外に解決できるようにすると、セキュリティ上のリスクが生じることを意味します。http://localhost
http://