¿Hacer que mDNSResponder use un servidor DNS local?

Quiero usar dnsmasqcuando mi Mac (Sierra) no está conectada a una red wifi.

La configuración de servidores DNS en el cuadro de diálogo Preferencias de red avanzadas funciona bien para digy nslookup, y puedo ver tcpdumpque estas herramientas llegan al dnsmasqservidor local.

No funciona para ping, curly binarios de Golang como la CLI de Cloud Foundry. Estos no pueden resolver hosts y no intentan comunicarse con el servidor de nombres local. Cuando uso dtrusspara el cfbinario Golang, puedo verlo abrirse /etc/hosts. Sin embargo, no estoy seguro de cómo detectarlo al intentar hablar con los servidores de nombres.

Si detengo los servicios mDNSRespondery , y tardo un poco más en fallar con , pero aun así falla, y sin intentar acceder al servidor de nombres local.mDNSResponderHelperpingcurlcannot resolve api.local.pcfdev.io: Unknown host

¿Alguna idea de cómo diablos puedo hacer que macOS use mi servidor de nombres local cuando estoy desconectado?

Respuestas (1)

Creo que mDNSResponder, con una máquina virtual PCF Dev VirtualBox en ejecución pero sin LAN/WLAN, no tiene una puerta de enlace predeterminada o se equivoca. Si sus interfaces no están conectadas o todas las interfaces están inactivas, entonces no existe una puerta de enlace predeterminada.

Puedes comprobar esto con:

netstat -r -f inet
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
127                localhost          UCS             1        0     lo0
localhost          localhost          UH              5     1380     lo0
192.168.11         link#7             UC              4        0 vboxnet
224.0.0            link#1             UmCS            2        0     lo0
224.0.0.251        link#1             UHmWI           1        0     lo0

Para eludir esto, puede hacer lo siguiente:

Requisito: una configuración adecuada de dnsmasq según lo publicado en su q & my a . Puede que tenga que desactivar todas las interfaces.

Duplique un perfil de ubicación en Preferencias del sistema > Red y cámbiele el nombre a, por ejemplo, pcdev con VLAN .

Elija una interfaz (por ejemplo, Wi-Fi) en el panel izquierdo y presione el engranaje en la parte inferior del panel izquierdo> Administrar interfaces virtuales. Presiona el botón ⊞ y agrega una "Nueva VLAN...". Cambie el nombre a VLAN, elija 1 como etiqueta y una interfaz.

Configure la interfaz: Manualmente con una IP arbitraria pero no utilizada, por ejemplo, 10.228.8.226/Máscara 255.255.0.0/Router 10.228.0.1 y servidor DNS 127.0.0.1. Aplique la configuración con el botón Apply. La IP (+ Máscara) y el Router deben estar en la misma red.

Vuelva a consultar la tabla de enrutamiento. Primero se verá así:

netstat -r -f inet
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
10.228/16          link#8             UC              2        0   vlan0
127                localhost          UCS             1        0     lo0
localhost          localhost          UH              4     1380     lo0
192.168.11         link#7             UC              2        0 vboxnet
224.0.0            link#1             UmCS            2        0     lo0
224.0.0.251        link#1             UHmWI           1        0     lo0

pero después de unos segundos (hasta 40 segundos en mi entorno) debería completarse:

netstat -r -f inet
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.228.0.1         UGSc            3        0   vlan0
10.228/16          link#8             UCS             2        0   vlan0
10.228.0.1/32      link#8             UCS             2        0   vlan0
10.228.0.1         link#8             UHRLWIir        4        0   vlan0     18
10.228.8.226/32    link#8             UCS             2        0   vlan0
10.228.255.255     ff.ff.ff.ff.ff.ff  UHLWbI          1        3   vlan0
127                localhost          UCS             1        0     lo0
localhost          localhost          UH             26     1494     lo0
192.168.11         link#7             UC              3        0 vboxnet
192.168.11.11      8:0:27:35:78:e2    UHLWIi          2        3 vboxnet   1192
192.168.11.255     ff:ff:ff:ff:ff:ff  UHLWbI          1        3 vboxnet
224.0.0/4          link#8             UmCS            3        0   vlan0
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          1        0   vlan0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI          1        3   vlan0
255.255.255.255/32 link#8             UCS             1        0   vlan0

Ahora intente nuevamente hacer ping a api.local.pcfdev.io/tcp.local.pcfdev.io/local.pcfdev.io.


Mientras probaba, tuve la impresión de que algún ping de IP arbitrario ( ping 192.168.11.11, ping 127.0.0.1aceleró la reconfiguración).


Si está al alcance de una WLAN conocida, vuelva a su perfil de ubicación común.


Esto se prueba (y funciona) en una máquina virtual VMwareFusion Sierra y en la máquina virtual anidada pcfdev-ubuntu VirtualBox. En este entorno, realmente no puedo simular una conexión Wi-Fi faltante, porque no hay una interfaz Wi-Fi disponible. En cambio, desactivé todas las interfaces (2 x Ethernet) en Sierra VM.