
Eu tenho o dnsmasq rodando em um raspberry pi com Raspbian. O pi possui um stick wifi no wlan0 e está conectado à rede local/internet na eth0. Meu objetivo é fazer com que o dnsmasq resolva todos os hosts para o IP estático do pi apenas para conexões wifi. Este é o meu dnsmasq.conf
address=/#/192.168.42.1
interface=wlan0
Agora, no entanto, quando eu ssh para o pi através de eth0 e faço ping em google.com, ele também resolve 192.168.42.1. Talvez seja por causa disso (na página de manual):
Dnsmasq adiciona automaticamente a interface de loopback (local) à lista de interfaces a serem usadas quando a opção --interface é usada
Em caso afirmativo, como posso fazer com que o dnsmasq escute apenas as conexões wifi?
Solução alternativa
Para meus propósitos, a lógica era: "Se um cabo Ethernet estiver conectado, desligue dnsmasq
. Se um cabo Ethernet estiver desconectado, ligue-o novamente".
Portanto, eu costumava ifplugd
gerenciar o processo. No arquivo /etc/ifplugd/ifplud.action
adicionei service dnsmasq stop
ao caso "up" e service dnsmasq start
ao caso "down". Sucesso total!
Responder1
tente em vez disso
except-interface=eth0
para evitar que o dnsmasq ouça eth0
Responder2
Você está fazendo isso da maneira errada. dnsmasq não tem culpa alguma.
A maioria dos resolvedores de DNS no Linux usa arquivos /etc/resolv.conf
. O que está definido lá é independente da interface. Na verdade, tem que ser: você não sabe qual interface e rota seguir, a menos que tenha o endereço IP numérico.
Então, basicamente, o que você quer não pode ser feito.
A menos, é claro, que não seja realmente destinado ao host dnsmasq, mas aos clientes WiFi ou algo assim. Nesse caso, você precisa remover o respondedor DNS local resolv.conf
e fazê-lo usar o upstream (seu roteador, ISP, Google DNS, OpenDNS, ...) diretamente.
Um exemplo típico resolv.conf
poderia ser assim ao usar o DNS do Google:
nameserver 8.8.8.8
nameserver 8.8.4.4