Frage Kann ich einen Port in einem Eintrag in meiner / etc / hosts unter OS X angeben? [Duplikat]


Mögliche Duplikate:
Wie verwende ich DNS, um die Domain auf einen bestimmten Port auf meinem Server umzuleiten? 

Ich möchte meinen Browser dazu bringen, zu localhost zu wechseln: 3000 statt xyz.com. Ich bin in / etc / hosts unter OS X 10.5 gegangen und habe den folgenden Eintrag hinzugefügt:

127.0.0.1:3000 xyz.com

Das funktioniert nicht, aber ohne den Port anzugeben, an dem der Trick funktioniert. Gibt es eine Möglichkeit, dies unter Angabe des Ports zu tun?


41
2017-08-14 18:20


Ursprung




Antworten:


Nein, die hosts-Datei ist lediglich eine Möglichkeit, Namen statisch aufzulösen, wenn kein DNS-Server vorhanden ist.


39
2017-08-14 18:23



Gibt es einen Workaround? - Tony
Das ist nicht ganz genau. Wenn der Computer für die Verwendung von Hosts vor DNS konfiguriert ist, wird ein Hosteintrag verwendet, auch wenn für dasselbe Ziel ein DNS-Eintrag vorhanden ist. - John Gardeniers
Heiliger Mist, das wusste ich nicht. (später) @John Gardeniers Heiliger Mist, das wusste ich auch nicht. - boulder_ruby
Ich konnte das mit dem ifconfig und pfctl Befehle auf Mac 10.10.2. Mit folgendem Ansatz kartiere ich erfolgreich 127.0.0.1:3000 zu mydomain.com lokal auf meiner Maschine. Ich konnte das hier nicht posten, aber ich konnte eine Schritt-für-Schritt-Anleitung schreiben: serverfault.com/questions/102416/ ... - Kevin Leary


Die Hosts-Datei dient zur DNS-Auflösung. DNS löst Namen in IP-Adressen auf und hat nichts mit Ports zu tun, fürchte ich. Sie müssen etwas anderes in Verbindung mit der hosts-Datei verwenden, um den Port umzuleiten (den TCP-Header durch Ändern des Zielports zu zerlegen).

Mit iptables:
Verwendet MAC OS iptables / netfilter (habe ich nicht gedacht) ..? Wenn OS X iptables verwendet, können Sie auf xyz.com auf eine IP-Adresse in der hosts-Datei wie 157.166.226.25 zeigen und dann:

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

:-)


41
2017-08-14 18:44



OS X stammt von FreeBSD ab und verwendet ipfw und natd. - outis
Wenn ich das 1000 Mal verbessern könnte, würde ich es tun. Die Verwendung des willkürlichen Ports ist genial. Danke - funktioniert perfekt. - Paul Biggar
Der ifpw (Mac freundliche) Weg ist sudo ipfw add 100 fwd 127.0.0.1,3000 tcp from any to any 80 in und um es zu entfernen sudo ipfw flush klappt wunderbar! - mraaroncruz
Warum ist diese Antwort nicht akzeptiert? Dies hätte akzeptiert werden müssen. - dhilipsiva
Ich bekomme iptables command not found in Mavericks. - Sarah Vessels


Sie müssen keinen Port in der hosts-Datei angeben. mach einfach den Eintrag wie du den Port weggelassen hast, wie in 127.0.0.1 xyz.com, dies wird dich zu deinem lokalen Host leiten, dann füge einfach Port 3000 am Ende deiner URL hinzu ... http://xyz.com:3000


12
2017-08-15 09:22



Eine einfache Lösung im Vergleich zum Ändern von IP-Tabellen. Hilft bei der Entwicklung, wo Sitzungen die Angabe des Domänennamens erfordern. Während IP-Tabellen mit Produktionsserver helfen können. - Tejas Jayasheel
Das ist nicht das, wonach OP gefragt hat. - Niels Bom
Das hat funktioniert (Y) - Rider
F: "Ich möchte das tun" A: "Nein, tust du nicht." - Adam Grant


Angenommen, Sie versuchen, HTTP und nicht HTTPS abzufangen, müssen Sie Port 80 auf Ihrem lokalen Computer abhören, aber dann können Sie die SSH-Portweiterleitungsfeatures verwenden, indem Sie mit localhost auf ssh gehen -L80:localhost:3000, aber du musst das als root machen.

Wäre wahrscheinlich besser zu haben, was auch immer es ist, das auf Port 3000 läuft, hören Sie stattdessen Port 80 an.

Wenn Sie den Router zwischen Ihnen und xyz.com steuern, können Sie möglicherweise stattdessen eine Portweiterleitungsregel einrichten.


4
2017-08-14 18:37





Ich denke, Sie müssen eine Art von Proxy-Server oder vielleicht etwas mit Firewall-Software verwenden, um Port-Verbindungen umzuleiten ...


2
2017-08-14 18:32





Chief-AG hat recht damit, dass die hosts-Datei verwendet wird, um Namen statisch aufzulösen (DNS-Präsenz ist irrelevant). Es kann jedoch eine Kombination von Dingen geben, die Sie tun könnten.

  1. Setzen Sie den Datensatz in der hosts-Datei auf 127.0.0.1 xyz.com
  2. Konfigurieren Sie Ihren Computer für virtuelle Hosts.
  3. Erstellen Sie für den virtuellen Host, den Sie für xyz.com einrichten, eine HTML-Datei, die zu localhost: 3000 umleitet

Es scheint ein gutes Stück Arbeit zu sein, aber es würde erreichen, was du verlangst.


1
2017-08-14 21:21





Als Alternative zu virtuellen Hosts können Sie einen SSH-Tunnel erstellen, der Port 80 überwacht und an localhost: 3000 weiterleitet.


1
2017-08-14 21:25





Die DNS-Lösung hierfür ist die Verwendung von SRV-Records:

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

Dies ist eine Möglichkeit, DNS zu erlauben, die ursprünglich eine "Name zu Nummer" oder "Nummer zum Namen" verteilte Datenbank war, um "Name zu Serviceendpunkt" einzuschließen, der (optional) ein Protokoll und einen Port enthalten könnte.

Die schlechte Nachricht ist, dass Anwendungen entwickelt werden müssen, um SRV-Records zu verwenden, also ist es keine Drop-In-Lösung für das, was Sie versuchen zu tun.


1
2017-08-15 09:07