1 votos

Configurar dnsmasq y usar DHCP proporcionada DNS juntos

Ejecución de MacOX Sierra en el MacBook Pro, y la configuración local del entorno dev con nginx como servidor web, pero tengo un problema.

Lo que quiero hacer

  1. Usar dnsmasq como el servidor dns local que devuelve 127.0.0.1 como host para el dominio comodín *.develop (como .dev ahora enfrentamientos con ICANN).
  2. Adelante sin resolver algún tipo de peticiones a servidores DNS proporcionado por DHCP cada vez que me conecto a una red, de modo que yo pueda resolver todos los demás nombres de host (internos y externos.)

Condiciones y restricciones

  1. Me muevo entre las redes. Mi casa DHCP de la red es el servidor DNS como 192.168.1.1, pero mi trabajo DHCP da a mi DNS como 10.128.x.x
  2. La red de la empresa con la 10.128.x.x DNS, también establece un search domain para las direcciones internas.
  3. Estoy en China, por lo que sólo la creación de un grupo de servidores DNS públicos como Google or OpenDNS así como 127.0.0.1 pueda funcionar bien, pero son internacionales y obtener limitada por la GFW.

Lo que he hecho hasta ahora

  1. He instalado nginx y dnsmasq uso de homebrew.
  2. Los servicios que se ejecutan usando sudo brew services start xxx. )Esto es para que yo pueda correr nginx en port 80 e no port 8080.)
  3. Set dnsmasq directiva address=/.develop/127.0.0.1
  4. Puedo comprobar que dnsmasq obras, mediante el uso de dig:

dig testing.testing.one.two.three.develop @127.0.0.1

; <<>> DiG 9.8.3-P1 <<>> testing.testing.one.two.three.develop @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46013
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;testing.testing.one.two.three.develop. IN A

;; ANSWER SECTION:
testing.testing.one.two.three.develop. 0 IN A   127.0.0.1

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jun 20 12:04:44 2017
;; MSG SIZE  rcvd: 71
  1. Configuración del servidor DNS a 127.0.0.1 en Network Preferences no trabajo y puedo 'ping' esto es:

Ejemplo de Ping:

ping -c 1 this.is.a.test.develop
PING this.is.a.test.develop (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms

--- this.is.a.test.develop ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.036/0.036/0.036/0.000 ms

pero entonces no hay servicios externos están disponibles porque el DNS sólo disponible es mi dnsmasq en 127.0.0.1

El problema

  1. Parece que la solución más sencilla sería sólo para agregar 127.0.0.1 + 192.168.0.1 a mi DNS del adaptador de red de la lista. Que trabaja en su casa, pero no en la localización corporativa
  2. Agregar el corporativas 10.128.x.x sería, obviamente, el trabajo en la oficina, pero no en casa
  3. So add both corporate and home DNS to the list? Esto podría romper cualquier otro wifi/ethernet conexiones porque yo no iba a levantar sus DHCP servidor DNS
  4. No me acaba de agregar servidores DNS públicos (como Google o Abrir DNS, porque estoy en China. Necesito tener el DHCP suministrado, como el DNS público es muy lento en China)

Me gustaría saber como otros han resuelto lo que parece un caso muy frecuente de instalación, pero estoy teniendo problemas.

Ya he mirado dos preguntas separadas sobre intercambio de la pila que tienen problemas similares , pero no idénticos. Las preguntas que se adjunta a la parte inferior de esta pregunta [1], [2]. Lo que estas preguntas muestran que en macOS, /etc/resolve.conf tiene este aviso:

en el encabezado

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Esto sugiere que las modificaciones no se puede leer a partir de este archivo, y otras respuestas de las preguntas sugerir que los archivos en /etc/resolver/* también no se puede leer

Por lo tanto, mi pregunta real es: ¿hay alguna manera de hacerlo:

  1. Utilice siempre 127.0.0.1 primera
  2. Si no se encuentra el uso de DNS dinámico de lo DHCP da

¿Por qué no simplemente usar hosts?

Porque la idea de tener un *.desarrollar dominio y, a continuación, sólo la adición de un sitio que utiliza expresiones regulares para resolver dinámicamente sitios locales es muy atractivo!

es decir, some-sub-domain.develop -> /Users/myuser/www/some-sub-domain/

[1] dnsmasq no funciona en Mac OS Sierra

[2] https://serverfault.com/questions/478534/how-is-dns-lookup-configured-for-osx-mountain-lion

1voto

user51012 Puntos 41

Respuesta encontrada! Para aquellos que buscan hacer este trabajo, específicamente en MacOS Sierra, la solución estándar de uso de una resolución de archivo en /etc/resolver/* realmente funciona, sin la necesidad de un cambio de preferencias de red.

En mi caso, cuando yo quería que mi desarrollo local nombre de dominio se *.develop, he creado un archivo llamado develop (sin extensión) con contenidos:

nameserver 127.0.0.1

Pensé que no había funcionado y que macOS no leer a partir de estos archivos, como he usado el comando dscacheutil -flushcache y no funcionó. Sólo un reinicio duro fue suficiente para poner el sistema en el uso de los locales de resolución.

La integridad, el contenido de mi dnsmasq.conf archivo es:

no-resolv
address=/.develop/127.0.0.1

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X