web-dev-qa-db-ja.com

Windowsホストファイルでホスト名のIPとポートを指定するにはどうすればよいですか?

Windows hostsファイルで2つの異なるポートを持つホスト名を指定したい。

それを行う方法はありますか?それともWindows自体では許可されていませんか?

過去8時間、ソリューションの検索に時間を費やしてきました。

ホストファイルhostsでポートを指定することは可能ですか?例:127.0.0.1:80および127.0.0.1:9211

19
SIA

ポートのないIPアドレスを使用するだけです。例:

192.168.2.50  example.com

次に、ブラウザ(または他のプログラム)から192.168.2.50:5555にアクセスします。

http://example.com:5555/

hostsファイルは次の場所にあります。

Linux/etc/hosts

WindowsC:\Windows\System32\drivers\etc\hosts

19
devi

Hostsファイルで、ポート番号をIPにマップされたホスト名に関連付けることはできません。 FiddlerScriptを使用しても、これは Fiddler で実現できます。

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}
18
John T
  • hostsファイルは、ホスト名解決専用です
  • ブラウザ、ポートを直接指定しない場合:<hostname>:<port>defaultsポート80

典型的な問題シナリオ

  1. アプリケーションは通常、サーバーを同じデフォルトのIPアドレスに設定します127.0.0.1 aka localhost(hostsファイルで定義)
  2. おそらく他の既存/実行中のサーバー間の衝突を回避するために、アプリケーションでは通常、IPアドレスではなくポートを変更できます。

    2a。 Ifloopback reserved address space127.0.0.0/8でサーバーのIPアドレスを別のアドレスに変更できます、それからあなたはおそらくhostsファイルでポートを設定しようとしないでしょう。

可能な解決策

これを回避するには、Windowsを含むネットワークツールnetshポートプロキシとして。


概観

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

行動

  • localhost:8081でサーバーを起動します
  • hostsファイルに「ローカルDNS」を新しい行として追加します
    • 127.65.43.21 example.app
      • ネットワーク127.0.0.0/8内の任意の空きアドレスを使用できます。
      • 注:127.65.43.21:80が別のサービスによって占有されていないことを前提としています。
      • netstat -a -n -p TCP | grep "LISTENING"で確認できます
  • netshコマンドユーティリティを使用して次のネットワーク構成を追加します
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • http://example.appでサーバーにアクセスします

注:
-これらのコマンド/ファイルの変更は、管理者権限
で実行する必要があります

- netsh portproxyにはipv6ライブラリが必要です v4tov4を使用する場合でも、通常はデフォルトで含まれます。それ以外の場合は、次のコマンドを使用してインストールします:netsh interface ipv6 install


次のコマンドで追加したエントリを表示できます

netsh interface portproxy show v4tov4

次のコマンドを使用して、エントリを削除できます

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


リソースへのリンク:

注:この回答は、 この同様の質問/ stackoverflowの回答で説明した私の回答の複製です。

6