web-dev-qa-db-ja.com

OS Xの/ etc / hostsのエントリにポートを指定できますか?

可能性のある複製:
DNSを使用してドメインをサーバー上の特定のポートにリダイレクトする方法

ブラウザをだまして、xyz.comの代わりにlocalhost:3000に移動したいと思います。 OS X 10.5の/ etc/hostsに移動して、次のエントリを追加しました。

127.0.0.1:3000 xyz.com

これは機能しませんが、ポートを指定しないとトリックが機能します。ポートを指定してこれを行う方法はありますか?

51
Tony

いいえ、hostsファイルは、DNSサーバーが存在しない場合に名前を静的に解決する方法にすぎません。

47
Chief A-G

HostsファイルはDNS解決用です。 DNSは名前をIPアドレスに解決し、私が恐れているポートとは何の関係もありません。 hostsファイルと一緒に何かを使用してポートをリダイレクトする必要があります(宛先ポートを変更してTCPヘッダーを変更する)。

iptablesの場合:
MAC OSはiptables/netfilterを使用していますか(私はそうは思いませんでした)。 OS Xがiptablesを使用している場合、157.166.226.25のようなホストファイル内のいくつかのipをxyz.comにポイントして、次のようにすることができます。

Sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000

:-)

45
Kyle Brandt

Hostsファイルでポートを指定する必要はありません。 127.0.0.1 xyz.comのように、ポートを省略したのと同じようにエントリを作成します。これにより、ローカルホストに移動し、URLの末尾にポート3000を追加するだけです http:/ /xyz.com:30

12
stuart Brand

Httpsではなくhttpをインターセプトしようとしているとすると、ローカルマシンのポート80をリッスンする必要がありますが、-L80:localhost:3000を使用してlocalhostにsshすることにより、sshのポート転送機能を使用できる場合がありますが、ルートとしてそれを行う必要があります。

おそらく、ポート3000で実行されているものはすべて、代わりにポート80をリッスンする方が良いでしょう。

あなたとxyz.comの間のルーターを制御している場合は、代わりにポート転送ルールを設定できる可能性があります。

4
retracile

このためのDNSソリューションは、SRVレコードを使用することです。

http://en.wikipedia.org/wiki/SRV_record

これらは、元々「名前から番号」または「番号から名前」の分散データベースであったDNSに、「オプションでプロトコルとポートを含めることができる」「サービスエンドポイントへの名前」を含めることを可能にする方法です。

悪い知らせは、SRVレコードを使用するためにアプリケーションを開発する必要があることです。そのため、これは、あなたがしようとしていることのドロップインソリューションではありません。

3
James F

ポート接続をリダイレクトするには、何らかのプロキシサーバーまたはファイアウォールソフトウェアを使用する必要があると思います...

2

Chief-AGは、hostsファイルを使用して名前を静的に解決するという点で適切です(DNSの存在は関係ありません)。ただし、できることの組み合わせがあるかもしれません。

  1. Hostsファイルのレコードを127.0.0.1 xyz.comに設定します
  2. 仮想ホスト用にマシンを構成します
  3. Xyz.comに設定した仮想ホストに対して、localhost:3000にリダイレクトするhtmlファイルを作成します

かなりの作業のようですが、それはあなたが求めていることを達成するでしょう。

2

これはRails development?の場合を想定していますが、そうである場合は、script/server -p 80を実行して、標準のWebポートで実行できるようにします。その後、xyz.comが機能します。

1
Ryan

;の仮想ホストの代わりに、ポート80でリッスンし、localhost:3000に転送するSSHトンネルを作成できます。

1
evilchili

Xyz.comでWebサーバーとしてApacheを使用している場合、Apacheの ProxyPass を使用して別のポートに「変換」することができます。

0
Rory