Vraag Kan ik een poort opgeven in een item in mijn / etc / hosts op OS X? [duplicaat]


Mogelijke duplicaten:
Hoe DNS te gebruiken om domein naar specifieke poort op mijn server om te leiden 

Ik wil mijn browser verleiden om naar localhost te gaan: 3000 in plaats van xyz.com. Ik ging naar / etc / hosts op OS X 10.5 en voegde het volgende item toe:

127.0.0.1:3000 xyz.com

Dat werkt niet, maar zonder de port op te geven, werkt de truc. Is er een manier om dit te doen door de poort te specificeren?


41
2017-08-14 18:20


oorsprong




antwoorden:


Nee, het hosts-bestand is gewoon een manier om namen statisch op te lossen wanneer er geen DNS-server aanwezig is.


39
2017-08-14 18:23



is er enige omweg? - Tony
Dat is niet helemaal correct. Als de machine is geconfigureerd om hosts vóór DNS te gebruiken, wordt een hostitem gebruikt, zelfs als er een DNS-invoer is voor dezelfde bestemming. - John Gardeniers
Heilige rotzak. Dat wist ik niet. (later) @ John Gardeniers Holy crap Ik wist dat ook niet. - boulder_ruby
Ik heb dit kunnen laten werken met de ifconfig en pfctl opdrachten op Mac 10.10.2. Met de volgende aanpak die ik met succes in kaart breng 127.0.0.1:3000 naar mydomain.com lokaal op mijn machine. Ik kon dit hier niet plaatsen, maar ik kon een stap-voor-stap bericht plaatsen over hoe dit hier moest gebeuren: serverfault.com/questions/102416/... - Kevin Leary


Het hosts-bestand is voor DNS-resolutie. DNS zet namen om naar IP-adressen, en heeft niets te maken met poorten die ik vrees. U moet iets anders in combinatie met het hosts-bestand gebruiken om de poort om te leiden (Mangle de TCP-header door de doelpoort te wijzigen).

Met iptables:
Gebruikt MAC OS iptables / netfilter (ik dacht van niet) ..? Als OS X iptables gebruikt, zou je xyz.com naar wat ip in het hosts-bestand kunnen verwijzen, zoals 157.166.226.25 en dan:

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 stamt af van FreeBSD, dus het gebruikt ipfw en natd. - outis
Als ik dit 1000 keer zou kunnen upvote zou ik dat doen. Het gebruik van de willekeurige poort is geniaal. Bedankt - werkt perfect. - Paul Biggar
De ifpw (mac friendly) manier is sudo ipfw add 100 fwd 127.0.0.1,3000 tcp from any to any 80 in en om het te verwijderen sudo ipfw flush werkt perfect! - mraaroncruz
Waarom is dit geaccepteerde antwoord niet? Dit had geaccepteerd moeten zijn. - dhilipsiva
ik krijg iptables command not found in Mavericks. - Sarah Vessels


U hoeft geen poort in het hosts-bestand op te geven. maak gewoon de invoer zoals je de poort hebt weggelaten, zoals in 127.0.0.1 xyz.com, dit zal je doorverwijzen naar je lokale host en dan gewoon poort 3000 toevoegen aan het einde van je URL ... http://xyz.com:3000


12
2017-08-15 09:22



Een eenvoudige oplossing in vergelijking met het wijzigen van IP-tabellen. Helpt voor ontwikkeling waar sessies vereisen dat de domeinnaam wordt gespecificeerd. Terwijl IP-tabellen kunnen helpen met de productieserver. - Tejas Jayasheel
Dit is niet wat OP vroeg. - Niels Bom
Dit werkte (Y) - Rider
Vraag: "Ik wil dit doen" A: "Nee dat doe je niet." - Adam Grant


Ervan uitgaande dat u http en niet https probeert te onderscheppen, zou u op poort 80 op uw lokale computer moeten luisteren, maar dan kunt u mogelijk ssh's port forwarding-functies gebruiken door ssh'ing naar localhost te sturen met -L80:localhost:3000, maar je moet dat als root doen.

Zou waarschijnlijk beter zijn om te hebben wat het ook is dat op poort 3000 draait, luister gewoon naar poort 80.

Als u de router tussen u en xyz.com bestuurt, kunt u mogelijk een regel voor poortdoorschakeling instellen.


4
2017-08-14 18:37





Ik denk dat je een soort proxyserver moet gebruiken of misschien iets met firewallsoftware om poortverbindingen om te leiden ...


2
2017-08-14 18:32





Chief-AG heeft gelijk dat het hosts-bestand wordt gebruikt om namen statistisch op te lossen (DNS-aanwezigheid is niet relevant). Er kan echter een combinatie zijn van dingen die u zou kunnen doen.

  1. Zet de record in het hosts-bestand op 127.0.0.1 xyz.com
  2. Configureer uw machine voor virtuele hosts.
  3. Voor de virtuele host die u instelt voor xyz.com, maakt u een html-bestand dat wordt omgeleid naar localhost: 3000

Lijkt een behoorlijk stuk werk te zijn, maar het zou bereiken wat je vraagt.


1
2017-08-14 21:21





Als een alternatief voor de virtuele hosts van; kon je een ssh-tunnel maken die op poort 80 luistert en doorstuurt naar localhost: 3000.


1
2017-08-14 21:25





De DNS-oplossing hiervoor is om SRV-records te gebruiken:

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

Op deze manier kan DNS, dat oorspronkelijk een "name to number" of "number to name" gedistribueerde database was, "name to service endpoint" opnemen, dat (optioneel) een protocol en een poort kon bevatten.

Het slechte nieuws is dat applicaties moeten worden ontwikkeld om SRV-records te gebruiken, dus het is geen oplossing voor wat je probeert te doen.


1
2017-08-15 09:07





ik neem aan dat dit voor de ontwikkeling van rails is? zo ja, voer dan script / server -p 80 uit om het op de standaard webpoort te laten draaien. dan zal je xyz.com werken


0
2017-08-22 13:48





Als u Apache als een webserver op xyz.com gebruikt, kunt u Apache's gebruiken ProxyPass om te 'converteren' naar een andere poort.


0
2017-08-22 15:58