Posso especificar uma porta em uma entrada no meu / etc / hosts no OS X? [duplicado]

46

Eu quero enganar o meu navegador para ir ao localhost: 3000 em vez de xyz.com. Fui ao / etc / hosts no OS X 10.5 e adicionei a seguinte entrada:

127.0.0.1:3000 xyz.com

Isso não funciona, mas sem especificar a porta, o truque funciona. Existe uma maneira de fazer isso especificando a porta?

    
por Tony 14.08.2009 / 20:20

10 respostas

43

Não, o arquivo hosts é simplesmente uma maneira de resolver nomes estaticamente quando nenhum servidor DNS está presente.

    
por 14.08.2009 / 20:23
43

O arquivo de hosts é para resolução de DNS. O DNS resolve nomes para endereços IP e não tem nada a ver com portas, receio. Você precisará usar outra coisa em conjunto com o arquivo hosts para redirecionar a porta (Mangle o cabeçalho TCP alterando a porta de destino).

Com o iptables:
O MAC OS usa o iptables / netfilter (não achei que fosse) ..? Se o OS X usa o iptables você pode apontar o xyz.com para algum ip no arquivo hosts como 157.166.226.25 e então:

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

: -)

    
por 14.08.2009 / 20:44
13

Você não precisa especificar uma porta no arquivo de hosts. Basta fazer a entrada como você omitindo a porta, como em 127.0.0.1 xyz.com, isso irá direcioná-lo para o seu host local, em seguida, basta adicionar a porta 3000 para o final do seu URL ... link

    
por 15.08.2009 / 11:22
4

Supondo que você está tentando interceptar http e não https, você deve estar ouvindo na porta 80 em sua máquina local, mas você pode usar os recursos de encaminhamento de porta do ssh ao ssh'ing para localhost com -L80:localhost:3000 , mas você terá que fazer isso como root.

Provavelmente seria melhor ter o que está sendo executado na porta 3000 apenas escutar a porta 80.

Se você controlar o roteador entre você e xyz.com, poderá configurar uma regra de encaminhamento de porta.

    
por 14.08.2009 / 20:37
2

Eu acho que você precisa usar algum tipo de servidor proxy ou talvez algo com software de firewall para redirecionar as conexões de porta ...

    
por 14.08.2009 / 20:32
2

A Chief-AG está certa em que o arquivo hosts é usado para resolver nomes estaticamente (a presença do DNS é irrelevante). No entanto, pode haver uma combinação de coisas que você poderia fazer.

  1. Defina o registro no arquivo hosts para 127.0.0.1 xyz.com
  2. Configure sua máquina para hosts virtuais .
  3. Para o host virtual configurado para xyz.com, crie um arquivo html que redirecione para localhost: 3000

Parece ser um bom bocado de trabalho, mas iria conseguir o que você está perguntando.

    
por 14.08.2009 / 23:21
2

A solução DNS para isso é usar registros SRV:

link

Esta é uma forma de permitir que o DNS, que originalmente era um banco de dados distribuído "nome para número" ou "número para nome", inclua "nome para terminal de serviço", que poderia (opcionalmente) incluir um protocolo e uma porta.

A má notícia é que os aplicativos precisam ser desenvolvidos para usar registros SRV, portanto, não é uma solução para o que você está tentando fazer.

    
por 15.08.2009 / 11:07
1

Como uma alternativa aos hosts virtuais de; você poderia criar um túnel ssh escutando na porta 80 e encaminhando para localhost: 3000.

    
por 14.08.2009 / 23:25
0

Eu estou supondo que isso seja para desenvolvimento de trilhos? Nesse caso, execute script / server -p 80 para executá-lo na porta padrão da web. então seu xyz.com funcionará

    
por 22.08.2009 / 15:48
0

Se você estiver usando o Apache como um servidor web em xyz.com, você pode usar o % co_de do Apache. % para "converter" para uma porta diferente.

    
por 22.08.2009 / 17:58

Tags