
Tengo dnsmasq ejecutándose en una Raspberry Pi con Raspbian. El pi tiene un dispositivo wifi en wlan0 y está conectado a la red local/Internet en eth0. Mi objetivo es que dnsmasq resuelva todos los hosts a la IP estática del pi solo para conexiones wifi. Este es mi dnsmasq.conf
address=/#/192.168.42.1
interface=wlan0
Ahora, sin embargo, cuando hago ssh al pi a través de eth0 y hago ping a google.com, también se resuelve en 192.168.42.1. Quizás sea por esto (de la página de manual):
Dnsmasq agrega automáticamente la interfaz loopback (local) a la lista de interfaces para usar cuando se usa la opción --interface
Si es así, ¿cómo puedo hacer para que dnsmasq solo escuche las conexiones wifi?
Solución alternativa
Para mis propósitos, estaba bien que la lógica fuera: "Si hay un cable Ethernet enchufado, apáguelo dnsmasq
. Si un cable Ethernet está desconectado, vuelva a encenderlo".
Por lo tanto, solía ifplugd
gestionar el proceso. En el archivo /etc/ifplugd/ifplud.action
que agregué service dnsmasq stop
al caso "arriba" y service dnsmasq start
al caso "abajo". ¡Éxito total!
Respuesta1
prueba en su lugar
except-interface=eth0
para evitar que dnsmasq escuche eth0
Respuesta2
Estás haciendo esto de manera equivocada. dnsmasq no tiene ninguna culpa.
La mayoría de los solucionadores de DNS en Linux utilizan /etc/resolv.conf
. Lo que se define allí es independiente de la interfaz. De hecho, tiene que ser así: no sabes qué interfaz y ruta tomar a menos que tengas la dirección IP numérica.
Entonces, básicamente, lo que quieres no se puede hacer.
A menos, por supuesto, que en realidad no esté destinado al host dnsmasq, sino a los clientes WiFi o lo que sea. En ese caso, debe eliminar el respondedor DNS local resolv.conf
y hacer que utilice el flujo ascendente (su enrutador, ISP, Google DNS, OpenDNS, ...) directamente.
Un ejemplo típico resolv.conf
podría verse así cuando se utiliza Google DNS:
nameserver 8.8.8.8
nameserver 8.8.4.4