
Raspbian이 포함된 라즈베리 파이에서 dnsmasq를 실행하고 있습니다. 파이는 wlan0에 Wi-Fi 스틱이 있고 eth0의 로컬 네트워크/인터넷에 연결되어 있습니다. 내 목표는 dnsmasq가 Wi-Fi 연결에 대해서만 모든 호스트를 파이의 고정 IP로 확인하도록 하는 것입니다. 이것은 내 dnsmasq.conf입니다.
address=/#/192.168.42.1
interface=wlan0
그러나 이제 eth0을 통해 pi에 ssh를 연결하고 google.com을 ping하면 192.168.42.1로 확인됩니다. 아마도 그 이유는 다음과 같습니다(맨 페이지 참조).
Dnsmasq는 --interface 옵션이 사용될 때 사용할 인터페이스 목록에 루프백(로컬) 인터페이스를 자동으로 추가합니다.
그렇다면 dnsmasq가 Wi-Fi 연결만 수신하도록 하려면 어떻게 해야 합니까?
해결 방법
dnsmasq
내 목적으로는 "이더넷 케이블이 연결되어 있으면 끄십시오 . 이더넷 케이블이 연결되어 있지 않으면 다시 켜십시오"라는 논리는 괜찮습니다.
그래서 제가 ifplugd
그 과정을 관리하곤 했어요. 파일에서 "up" 케이스와 "down" 케이스에 /etc/ifplugd/ifplud.action
추가했습니다 . 완전 성공!service dnsmasq stop
service dnsmasq start
답변1
대신 시도해 보세요
except-interface=eth0
dnsmasq가 eth0을 듣는 것을 방지하려면
답변2
당신은 잘못된 방향으로 가고 있습니다. dnsmasq에는 전혀 잘못이 없습니다.
Linux의 대부분의 DNS 확인자는 /etc/resolv.conf
. 거기에 정의된 것은 인터페이스 독립적입니다. 실제로 다음과 같아야 합니다. 숫자로 된 IP 주소가 없으면 어떤 인터페이스와 경로를 사용해야 할지 알 수 없습니다.
따라서 기본적으로 원하는 것은 이루어질 수 없습니다.
물론 실제로 dnsmasq 호스트를 위한 것이 아니라 WiFi 클라이언트 등을 위한 것이 아니라면 말입니다. 이 경우 로컬 DNS 응답자를 제거 resolv.conf
하고 업스트림(라우터, ISP, Google DNS, OpenDNS 등)을 직접 사용하도록 해야 합니다.
resolv.conf
Google DNS를 사용할 때 일반적인 모습은 다음과 같습니다.
nameserver 8.8.8.8
nameserver 8.8.4.4