Encaminhe o TLD completo (* .dev por exemplo) para 127.0.0.1


29

Para fins de desenvolvimento, desejo que todas as solicitações de DNS do TLD .dev sejam encaminhadas para o meu próprio PC.

O arquivo hosts não é suficiente. Eu uso vários domínios e também vários subdomínios. Eu teria que adicionar uma linha para cada combinação.

Eu li que um encaminhador de DNS como DNSmasq pode ser usado para fazer o trabalho (por exemplo, conforme descrito aqui ). Além disso, este software já está instalado no Ubuntu 12.10.

O problema é que não consigo ver como e onde devo configurar o DNSmasq, ou seja, onde devo colocar esta linha:

address=/dev/127.0.0.1

1
Você pode não querer usar .devcomo o Google usou . Ainda estou pesquisando para que o usarão e se planejam que pessoas comuns se conectem a ele ou apenas funcionários, mas talvez você não queira redirecionar todo o acesso, caso seja o primeiro, a menos que seja apenas uma caixa de teste que nunca se conectará a hosts externos.
trysis

Respostas:


18

O dnsmasq independente completo (servidor DHCP e DNS) não é instalado por padrão no Ubuntu 12.04 e 12.10, mas um pacote chamado dnsmasq-base é instalado por padrão no Ubuntu Desktop 12.04 e 12.10. O pacote dnsmasq-base contém o binário dnsmasq e é usado pelo NetworkManager.

Para fazer o que você deseja, você precisará usar o dnsmasq como um servidor DNS em cache. Você precisa:

  • Instale o dnsmasq sudo apt-get install dnsmasq
  • Altere sua configuração de rede, para que seu computador se utilize como servidor DNS.
  • Faça as alterações nos arquivos de configuração:

Crie /etc/dnsmasq.d/dev-tldcom este conteúdo:

local=/dev/

address=/dev/127.0.0.5

O primeiro comando diz que as *.devsolicitações não podem ser encaminhadas para o servidor DNS real. O segundo diz *.devresolve para 127.0.0.5qual é o host local.

  • Reinicie o serviço dnsmasq (não gerenciador de rede)

Obrigado! Foi extremamente útil que eu soubesse que o DNSMasq presente não era o negócio real. Depois de instalar o pacote completo e configurá-lo da maneira que descrevi antes de fazê-lo funcionar. :)
Roel van Duijnhoven

1
Eu prefiro a outra resposta para instalações recentes de desktop. Para instalações recentes da área de trabalho, você executaria duas instâncias dnsmasq dessa maneira. Sua resposta pode ser muito útil em configurações que não são do NetworkManager, em configurações mais antigas (sem usar o dnsmasq) ou mesmo em instalações do servidor!
precisa saber é

Sim, outra resposta é melhor desde o Ubuntu 12.10.
BenjaminRH

21

No Ubuntu 12.10 ou posterior, você pode fazer isso com o dnsmasq, executado pelo NetworkManager.

  1. Crie o diretório mkdir /etc/NetworkManager/dnsmasq.dse ele ainda não existir.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Atire a seguinte linha em /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Reinicie o NetworkManager.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Reinicie o Dnsmasq.

    sudo service dnsmasq restart
    
  5. Aprecie a grandiosidade.

insira a descrição da imagem aqui


1
Obrigado a AbrahamVanHelpsing pelo link para o wiki do arch sobre como fazer isso.
JRG

Depois de seguir seus passos, ainda vejo "host desconhecido" depois de executar um ping. Preciso configurar / ativar o DNSMasq em outro local? Ou configurar minhas propriedades de rede de uma maneira diferente? Obrigado!
Roel van Duijnhoven 27/12/12

Interessante. está aparecendo bem para mim.
Jrg

Ah, @RoelvanDuijnhoven - você está executando 12.10 ou 12.04? Funciona bem para mim em 12.10.
Jrg 27/12/12

Estou executando a 12.10. Mas preciso mencionar que tentei alterar algum arquivo de configuração antes de fazer uma pergunta aqui. Possivelmente essas alterações atenuam sua solução. A solução de Javier Rivera fez o truque!
Roel van Duijnhoven

1

O seguinte funcionou para mim no Ubuntu 16.04:

  1. Instalar dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. Editar dnsmasq.confarquivo:

    sudo nano /etc/dnsmasq.conf
    
  3. Adicione seu comando:

    address=/dev/127.0.0.1
    

    Para curinga (*), você pode usar o ponto (.) E o dnsmasq para resolver WHATEWER_YOU_PUT_HERE.yourmachine.yourdomaino mesmo ip. Por exemplo,address=/.localhost.dev/127.0.0.1

  4. Reinicie o serviço dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

Acabei de instalar um novo 19.04 e a única maneira de fazê-lo funcionar era desabilitar systemd-resolvede NetworkManagerusar o dnsmasqDNS. NetworkManagertem suporte embutido para dnsmasqe dnsmasq-basepacote é instalado por padrão.

Estou apontando vários domínios para diferentes VMs, como *.customerX.testpara 192.168.33.10e *.productY.testpara 192.168.33.20e assim por diante. Eu não usaria *.devmais, mas em vez disso, um dos domínios de nível superior reservados .

Solução

  1. Desativar systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Edite /etc/NetworkManager/NetworkManager.confpara usar dnsmasqno DNS.

    [main]
    dns=dnsmasq
    
  3. Coloque a dnsmasqconfiguração em/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. e, finalmente, reiniciar o NetworkManagerque irá gerar um novo/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.