루프백 인터페이스에서만 수신하도록 (버전 2.66) 시도 중이지만 dnsmasq
수신에만 집착합니다.모두사용 가능한 주소, 즉0.0.0.0:53다음과 같은 주장에도 불구하고:
# dnsmasq -ilo --pid-file=/run/dnsmasq-lo.pid
dnsmasq: failed to create listening socket for port 53: Adress already in use
하나의 IP 주소만 수신하는 것처럼 보이는 다른 dnsmasq 프로세스가 실행 중입니다.
# netstat -ltaupn | sed -rne 2p -e '/:53\b/p'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.125.1:53 0.0.0.0:* LISTEN 4224/dnsmasq
tcp 0 0 192.168.124.1:53 0.0.0.0:* LISTEN 4221/dnsmasq
udp 0 0 192.168.125.1:53 0.0.0.0:* 4224/dnsmasq
udp 0 0 192.168.124.1:53 0.0.0.0:* 4221/dnsmasq
모든 인스턴스를 종료 dnsmasq
하고 명령을 다시 실행하면 다음과 같은 결과가 나타납니다.
# dnsmasq -ilo --pid-file=/run/dnsmasq-lo.pid
# netstat -ltaupn | sed -rne 2p -e '/:53\b/p'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 4452/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 4452/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 4452/dnsmasq
udp6 0 0 :::53 :::* 4452/dnsmasq
다음 인수는 단독으로 또는 결합하여 아무것도 변경하지 않습니다.
--local=//
-a127.0.0.1
-Ieth0 -Ieth1 -Ivirbr0 -Ivrbr1
어떻게 강제로 dnsmasq
듣게 할 수 있나요?오직내가 원하는 하나의 인터페이스, 루프백 인터페이스?
답변1
감사해요스티븐 차제라스, 가능한 대답 중 하나는 추가하는 것입니다 --bind-interfaces
. 저는 명령줄 도움말을 읽지 못하도록 제한했기 때문에 이 옵션을 무시했습니다.
# dnsmasq --help | grep bind-interfaces
-z, --bind-interfaces Bind only to interfaces in use.
나는 본능적으로 매뉴얼 페이지를 다시 확인하지 않았습니다. IMHO 이 도움말은 여전히 혼란스럽습니다.
그러나 매뉴얼 페이지에는 다음과 같이 명시되어 있습니다.
-z, --bind-interfaces
On systems which support it, dnsmasq binds the wildcard address,
even when it is listening on only some interfaces. It then dis-
cards requests that it shouldn't reply to. This has the advan-
tage of working even when interfaces come and go and change
address. This option forces dnsmasq to really bind only the
interfaces it is listening on. About the only time when this is
useful is when running another nameserver (or another instance
of dnsmasq) on the same machine. Setting this option also
enables multiple instances of dnsmasq which provide DHCP service
to run in the same machine.
이것이 더 명확합니다.