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


18

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

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

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

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


1
HOSTSファイルは、名前をIPアドレスにのみ関連付け、IPs + port(s)には関連付けません。ただし、この種のマッピングを実現する方法は多数ありますが、常に詳細に依存するため、何をしようとしているのかを詳細に記述して(superserver.comなど)、superuser.comを確認してください。手元に。

特定のポートをリッスン> -あなたは適切なアプリケーションに転送するHTTP要求のプロキシサーバとしてNGNIXまたはApache HTTPサーバーを必要とする
ムサ

回答:


18

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

192.168.2.50  example.com

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

http://example.com:5555/

hostsファイルはで見つけることができます:

Linux /etc/hosts

WindowsのC:\Windows\System32\drivers\etc\hosts


編集するファイルのパス名前の両方を追加すると便利です。
-nyedidikeke

@nyedidikekeコメントありがとう、私はこれを修正しました
デビ

1
ファイルを編集するときにポート番号を指定しない理由で更新できますC:\Windows\System32\drivers\etc\hostsか?
-nyedidikeke

それは他の答えでカバーされています。
スコット

17

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

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}

7
技術ユーザー向けの素晴らしい提案。明確にするために、1)まずFiddlerをインストールします2)それを開いて、ルールメニューに移動し、ルールのカスタマイズオプションを選択します(または、ウィンドウでCtrl + Rを押します)。これにより、メモ帳でJSファイルが開きます。3)静的関数OnBeforeRequestを見つけて、@ Johnによって提案されたスクリプトを本文に貼り付けます。また、HostNameIsは機能しません。HostnameIsである必要があります。お役に立てれば。
リズ

同じ効果に使用できるオープンソースの代替手段(james、owasp zap、またはその他)を知っていますか?
Marc.2377

5
  • このhostsファイルは、ホスト名解決専用です
  • ブラウザポートを直接指定するの不在で、:つまり<hostname>:<port>デフォルトポートへ80

典型的な問題シナリオ

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

    2a。ループバックの予約済みアドレススペースでサーバーのIPアドレスを別のIPアドレスに変更できる場合は、おそらくhostsファイルでポートを設定しようとはしないでしょう。 127.0.0.0/8

可能な解決策

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に関するこの同様の質問/回答で説明した私の回答の複製です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.