Quiero usar dnsmasq
cuando 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 dig
y nslookup
, y puedo ver tcpdump
que estas herramientas llegan al dnsmasq
servidor local.
No funciona para ping
, curl
y 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 dtruss
para el cf
binario 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 mDNSResponder
y , y tardo un poco más en fallar con , pero aun así falla, y sin intentar acceder al servidor de nombres local.mDNSResponderHelper
ping
curl
cannot 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?
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.1
aceleró 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.