fazendo o dnsmasq ouvir em apenas uma interface

2

Eu tenho dnsmasq rodando em um pi framboesa w / Raspbian. O pi tem um stick wifi no wlan0 e está conectado à rede local / internet no 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 é meu dnsmasq.conf

address=/#/192.168.42.1
interface=wlan0

Agora, no entanto, quando eu ssh para o pi através de eth0 e ping google.com, ele também é resolvido para 192.168.42.1. Talvez seja por causa disso (da man page):

Dnsmasq automatically adds the loopback (local) interface to the list of interfaces to use when the --interface option is used

Se sim, como posso fazer com que o dnsmasq apenas ouça as conexões wifi?

Solução alternativa

Para os meus propósitos, estava tudo bem para a lógica ser: "Se um cabo ethernet estiver conectado, desligue dnsmasq . Se um cabo ethernet estiver desconectado, ligue-o novamente".

Portanto, usei ifplugd para 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!

    
por owise1 06.06.2015 / 22:31

2 respostas

1

tente

except-interface=eth0

para evitar que o dnsmasq ouça a eth0

    
por 09.06.2015 / 19:47
1

Você está fazendo isso da maneira errada. dnsmasq não tem culpa nenhuma.

A maioria dos resolvedores de DNS no Linux usa /etc/resolv.conf . O que é definido lá é independente de interface. Na verdade, tem que ser: você não sabe qual interface e rota usar, 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 destinado ao host do dnsmasq, mas aos clientes WiFi ou o que for. Nesse caso, você precisa remover o respondedor DNS local de resolv.conf e fazer com que ele use upstream (seu roteador, ISP, DNS do Google, OpenDNS, ...) diretamente.

Um típico resolv.conf pode ter esta aparência quando usa o DNS do Google:

nameserver 8.8.8.8
nameserver 8.8.4.4
    
por 09.06.2015 / 19:48