Ruta completa TLD (* .dev por ejemplo) a 127.0.0.1


29

Para fines de desarrollo, quiero que todas las solicitudes DNS al .dev TLD se envíen a mi propia PC.

El archivo de hosts no es suficiente. Yo uso múltiples dominios y también múltiples subdominios. Tendría que agregar una línea para cada combinación.

He leído que un reenviador de DNS como DNSmasq se puede utilizar para hacer el trabajo (por ejemplo, como se describe aquí ). Además, este software ya está instalado en Ubuntu 12.10.

El problema es que no veo cómo y dónde debo configurar DNSmasq, es decir, dónde debo poner esta línea:

address=/dev/127.0.0.1

1
Es posible que no desee usar .devcomo lo tomó Google. Todavía estoy investigando para qué lo usarán y si planean que la gente común se conecte a él o solo a los empleados, pero es posible que no desee redirigir todo el acceso en caso de que sea el primero, a menos que esto sea puramente un cuadro de prueba que nunca se conectará a hosts externos.
trysis

Respuestas:


18

El dnsmasq independiente completo (servidor DHCP y DNS) no está instalado de forma predeterminada en Ubuntu 12.04 y 12.10, pero un paquete llamado dnsmasq-base está instalado de forma predeterminada en Ubuntu Desktop 12.04 y 12.10. El paquete dnsmasq-base contiene el binario dnsmasq y lo utiliza NetworkManager.

Para hacer lo que desee, deberá usar dnsmasq como servidor DNS de almacenamiento en caché. Necesitas:

  • Instalar dnsmasq sudo apt-get install dnsmasq
  • Cambie la configuración de su red, de modo que su computadora se utilice a sí misma como servidor DNS.
  • Realice los cambios en los archivos de configuración:

Crea /etc/dnsmasq.d/dev-tldcon estos contenidos:

local=/dev/

address=/dev/127.0.0.5

El primer comando dice que las *.devsolicitudes no se pueden reenviar a su servidor DNS real. El segundo dice *.devresuelve 127.0.0.5cuál es localhost.

  • Reinicie el servicio dnsmasq (no el administrador de red)

¡Gracias! Fue extremadamente útil saber que el DNSMasq presente no era el verdadero negocio. Después de instalar el paquete completo y configurarlo de la manera que describí antes de hacerlo funcionar. :)
Roel van Duijnhoven

1
Prefiero la otra respuesta para instalaciones de escritorio recientes. Para instalaciones de escritorio recientes, estaría ejecutando dos instancias dnsmasq de esta manera. ¡Su respuesta podría ser muy útil en configuraciones que no sean de NetworkManager, más antiguas (que no usan dnsmasq) o incluso en instalaciones de servidores!
gertvdijk

Sí, otra respuesta es mejor desde Ubuntu 12.10.
BenjaminRH

21

En Ubuntu 12.10 o posterior, puede hacer esto con dnsmasq como lo ejecuta NetworkManager.

  1. Cree el directorio mkdir /etc/NetworkManager/dnsmasq.dsi aún no existe.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Mezcle la siguiente línea en /etc/NetworkManager/dnsmasq.d/dev-tld.

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

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

    sudo service dnsmasq restart
    
  5. Disfruta la genialidad.

ingrese la descripción de la imagen aquí


1
Gracias a AbrahamVanHelpsing por el enlace a la wiki del arco sobre cómo hacer esto.
jrg

Después de seguir sus pasos todavía puedo ver "host desconocido" después de ejecutar un ping. ¿Necesito configurar / habilitar DNSMasq en otro lugar? ¿O configurar mis propiedades de red de una manera diferente? ¡Gracias!
Roel van Duijnhoven

Interesante. se está mostrando bien para mí.
jrg

Ah, @RoelvanDuijnhoven: ¿estás ejecutando 12.10 o 12.04? Me funciona bien el 12.10.
jrg

Estoy corriendo 12.10. Pero debo mencionar que he tratado de alterar algunos archivos de configuración antes de hacer una pregunta aquí. Posiblemente estos cambios mitigan su solución. Sin embargo, la solución de Javier Rivera hizo el truco.
Roel van Duijnhoven

1

Lo siguiente funcionó para mí en Ubuntu 16.04:

  1. Instalar dnsmasq

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

    sudo nano /etc/dnsmasq.conf
    
  3. Agrega tu comando:

    address=/dev/127.0.0.1
    

    Para el comodín (*), puede usar punto (.) Y luego dnsmasq para resolver WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainla misma ip. P.ej,address=/.localhost.dev/127.0.0.1

  4. Reinicie el servicio dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

Acabo de instalar un nuevo 19.04 y la única forma de hacerlo funcionar fue deshabilitar systemd-resolvedy NetworkManagerusar dnsmasqen su lugar para DNS. NetworkManagertiene soporte incorporado dnsmasqy el dnsmasq-basepaquete se instala de manera predeterminada.

Estoy apuntando múltiples dominios a diferentes máquinas virtuales como *.customerX.testto 192.168.33.10y *.productY.testto 192.168.33.20y así sucesivamente. No usaría *.devmás, sino uno de los dominios de nivel superior reservados .

Solución

  1. Inhabilitar systemd-resolved

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

    [main]
    dns=dnsmasq
    
  3. Poner dnsmasqconfiguración en/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. y finalmente reiniciar NetworkManagerlo que generará un nuevo/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.