저는 Arch Linux에서 dnsmasq를 실행하고 있으며 라우터에는 유선, 무선, DMZ 및 관리 인터페이스를 위한 4개의 LAN 포트가 있습니다. dnsmasq는 내 LAN용 DHCP 서버이며 DNS 기능을 제공합니다.
저는 항상 LAN 포트 4개 모두에 연결하지 않습니다. 하지만 장치를 재부팅할 때 장치가 연결된 포트, 특히 유선 LAN에 올바르게 연결되기를 원합니다.
내 구성은 다음과 같습니다.
dnsmasq가 지정된 인터페이스(및 루프백)에서만 DHCP 및 DNS 요청을 수신하도록 하려면 여기에 인터페이스 이름을 지정하세요(예: eth0). 여러 인터페이스에 대해 이 줄을 반복합니다.
interface=eth0
interface=eth1
interface=eth2
interface=eth3
제가 이 구성을 사용하는 이유는dnsmasq가 WAN 포트에서 실행되는 것을 원하지 않습니다., 이 경우에는 eth4라고 부르겠습니다.
내 문제는 예를 들어 eth1에 케이블을 연결하지 않고 시스템을 재부팅하면 dnsmasq가 eth0 또는 다른 유효한 인터페이스를 계속 사용하지 않는다는 것입니다.
Sep 16 14:16:10 router systemd[1]: Starting A lightweight DHCP and caching DNS server...
Sep 16 14:16:10 router dnsmasq[876]: dnsmasq: syntax check OK.
Sep 16 14:16:10 router dnsmasq[879]: dnsmasq: unknown interface eth1
Sep 16 14:16:10 router dnsmasq[879]: unknown interface eth1
Sep 16 14:16:10 router dnsmasq[879]: FAILED to start up
Sep 16 14:16:10 router systemd[1]: dnsmasq.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Sep 16 14:16:10 router systemd[1]: dnsmasq.service: Failed with result 'exit-code'.
Sep 16 14:16:10 router systemd[1]: Failed to start A lightweight DHCP and caching DNS server.
그 후, 내 LAN에는 DHCP 서버가 없었고 dnsmasq에서 제공하는 다른 주요 기능이 누락되었습니다. 이는 수동으로 수정하고 구성 파일을 편집하기 전까지 일시적이고 원치 않는 변경일 뿐입니다. 제 경우에는 유효한/연결된 인터페이스만 사용하여 dnsmasq를 시작하도록 하는 방법이 있습니까?
답변1
의견에 답변한 대로 옵션에 대한 전체 설명은 다음과 같습니다.DNS 수동):
-I, -- Except-interface= 지정된 인터페이스를 수신하지 않습니다. --listen-address --interface 및 --book-interface 옵션의 순서는 중요하지 않으며 --Exception-interface 옵션은 항상 다른 옵션보다 우선합니다. --listen-address 인터페이스 태그에 대한 설명이 여기에 적용됩니다.