Posso criar DNS de substituição semelhante à gravação em / etc / hosts sem acesso root

48

Quero definir um registro DNS que meu navegador utilizará, mas não tenho acesso root, portanto não posso modificar /etc/hosts. Eu preciso fazer isso para testar vhosts com apache, cujo dns ainda não foi configurado. Eu tenho acesso ao firefox e chrome, então se houver um plugin que possa facilitar; ou outras opções são úteis.

update: a alternativa para substituir o DNS provavelmente está modificando os cabeçalhos HTTP; se os corretos forem enviados ao apache, o conteúdo correto deverá ser retornado.

xenoterracida
fonte
1
A última linha não é clara. Além disso, isso não se encaixaria mais no SF?
tshepang
@tshepang ... não, porque eu preciso fazer isso em um desktop linux?
Xenoterracide
1
Ainda não é tão claro. O que "ou outras opções são úteis" significa exatamente? Não me faça adivinhar.
tshepang
3
@tshepang Não sei o que estou procurando ... se soubesse por que estaria perguntando? pode haver opções que eu não considerei. Sinto que você está me pedindo para explicar como os hosts virtuais apache, http e dns funcionam juntos.
Xenoterracide
Eu acho que você está procurando isso: unix.stackexchange.com/a/104511/135943
Wildcard

Respostas:

65

Eu estava procurando uma maneira de executar um programa com resolução DNS modificada para fins de teste. Para mim, a solução estava usando a HOSTALIASESvariável de ambiente:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

Veja hostname(7).

(Observação: no exemplo, a HOSTALIASESvariável de ambiente afeta apenas o wgetprocesso. Naturalmente, é possível export HOSTALIASESque ela tenha efeito para todos os subprocessos do shell atual.)

Matlehmann
fonte
1
realmente isso deve ser como + 10k, infelizmente, só posso dar-lhe +1
xenoterracide
Concordo! + 10k !!
21813 Anders Hansson
3
Muito obrigado! O exemplo deve preceder exportna maioria dos casos: export HOSTALIASES=~/.hosts.
ezequiel-garzon
8
parece apenas suportar hosts para alias de hosts, não IP e hosts não podem conter ".".
Netawater
Existe a mesma solução para Windows?
Akceptor
10

Você pode escrever um wrapper em torno da função libc para resolver nomes de host e procurá-los em um arquivo diferente de / etc / hosts. Em seguida, execute qualquer aplicativo com o qual você gostaria de usar o arquivo hosts

LD_PRELOAD=wrapper.so firefox
chris
fonte
4
De maneira muito útil, faça seu wrapper redirecionar a abertura de /etc/nsswitch.confpara ~/.nsswitch.confe faça um ~/.nsswitch.confque consulta seus bancos de dados DNS.
Gilles 'SO- stop be evil'
6

Eu acho que a melhor maneira de fazer isso seria configurar um proxy SOCKS5 e dizer ao Firefox para enviar solicitações de DNS pelo proxy SOCKS5 (network.proxy.socks_remote_dns). Você pode configurar um proxy socks5 com o openssh com bastante facilidade (a opção -D) e ter um host remoto em execução com um / etc / hosts personalizado ou algo como DNSMasq para configurações DNS mais complexas. Porém, efetivamente, isso está enviando a configuração das configurações de DNS para um sistema no qual você pode fazer alterações em todo o sistema.

jsbillings
fonte
mais fácil dizer do que fazer, considerando o grande firewall que foi erguido para nos impedir de ssh-ing para fora ...
xenoterracide
5

Confira a seguinte pergunta no superusuário:

https://superuser.com/questions/184643/override-dns-in-firefox

Se as opções discutidas e o link SO não forem soluções viáveis, verifique:

https://superuser.com/questions/100239/hostname-override-in-firefox

Especialmente confira:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

Parece que este complemento pode ajudar - mas eu depende da sua implementação real.

maxschlepzig
fonte
infelizmente, muito parecido com o op nessa pergunta, nenhum deles parece viável.
Xenoterracide
@xenoterracide - atualizei minha resposta - talvez o complemento de redirecionador seja uma opção?
maxschlepzig
Eu não penso assim do jeito que está redigido .. o que eu realmente preciso fazer é modificar os cabeçalhos HTTP que são enviados ... como uma opção alternativa à pirataria em torno de usar anfitriões
xenoterracide
Procurei a solução SO (TamperData), mas não vi como modificar o host. Gostaria de saber se a coisa de cabeçalhos http ao vivo realmente me permite modificar cabeçalhos, diz que é um visualizador.
Xenoterracide
Eu acho que a extensão Modify Headers listada um pouco no SO funciona ... se você usar o nome do host ... nele ... ainda não testado ... fora dos sites que o utilizam.
Xenoterracide
2

Para testar vhosts, você pode definir o servidor Apache como proxy no Firefox. O nome que você digitou será encaminhado para o Apache. Isso interromperá a navegação em outros sites, portanto, configure o proxy novamente quando terminar.

BillThor
fonte
0

Eu precisava de algo semelhante para ssh, scp etc. para um servidor que muda constantemente de IP a cada duas semanas (e nossa TI tem um atraso de duas semanas na configuração do host). Eu o resolvi usando uma variável especial para este servidor: export FOO='131.227.aaa.bbbe então eu posso fazer exatamente ssh bar@$FOOe altero o IP ~/.bashrcsempre que ele muda ...

BIOStheZerg
fonte
-2

Infelizmente, você não pode, exceto que escreve seu próprio navegador de internet.

Se você precisa fazer alguns testes, precisa de uma máquina de teste, qualquer que seja uma máquina virtual ou real, portanto, você deve perguntar ao administrador do Unix (ou provedor de hospedagem) como criar um ambiente de desenvolvimento.

Você também pode instalar uma VM no seu PC, instalar uma distribuição Linux, Apache e testar suas alterações (não é tão difícil quanto parece)

Atualizar

Para explicar melhor, cada aplicativo é gravado usando as bibliotecas padrão, dessa forma ninguém precisa reescrever a biblioteca de baixo nível e funções como o gethostbyname ().

Essas funções normalmente são definidas para usar o arquivo (/ etc / hosts) e o DNS; portanto, azar, se você precisar que o seu navegador resolva um nome diferente daquele definido no / etc / hosts, você não tem muitas alternativas .

  1. Você pode configurar seu próprio servidor DNS e perguntar quem tem direitos de root para alterar o /etc/resolve.conf
  2. Você pode instalar um servidor proxy como DeleGate e definir algumas regras para o seu VirtualHost
  3. Pedir direitos sudo no host desse cliente
  4. Altere o comportamento do aplicativo que você está usando para testar a conexão (acho que o navegador), por exemplo, https://addons.mozilla.org/en-US/firefox/addon/switchhosts/
tmow
fonte
4
-1 escrito mal e condescendente. EU SOU o provedor de hospedagem e é o maldito site de clientes em nosso servidor que preciso testar. Temos um linux de inicialização de rede ao qual não tenho acesso de administrador e não acredito que possa inicializar uma VM nela.
Xenoterracide
@xenoterracide não há muito a dizer. Realmente não é viável o que você está pedindo, exceto que você altera a maneira como um SOCKET é criado.
tmow
1
@xenoterracide BTW, não havia nenhuma intenção de ofender.
tmow
bem como o provedor de hospedagem ... Na verdade, tenho "direitos sudo", tenho raiz real em todas as caixas e acesso total a tudo ... exceto à minha área de trabalho (eyeroll), mas se eles ainda não quiseram mudar seus servidores de nomes .. Eu não posso ajudar que ...
xenoterracide
1
com LD_PRELOAD, você pode 'substituir' funções específicas de 'baixo nível' e fazer o que quiser, por exemplo. dizendo o programa sobre seus próprios '/ etc / hosts' em open()e qualquer outra chamada de baixo nível .. enquanto carregamento dinâmico de código é invovled (.so)
akira