Debian 기반 Linux에서 dnsmasq는 nameservers
in을 /etc/resolv.conf
다음 127.0.0.1
으로 대체하여 작동합니다("무선 엔지니어를 위한 Linux: DNS 캐싱을 위해 dnsmasq를 사용하는 방법").
그러나 나는 Alpine(및 Alpine 기반 도커)에서는 그런 식으로 작동하지 않는다는 것을 발견했습니다. dnsmasq가 시작될 때 /etc/resolv.conf
변경되지 않은 상태로 유지됩니다 . 따라서 방금 dnsmasq를 시작하면 DNS 해상도 측면에서 아무런 차이가 없습니다. dnsmasq를 시작하기 위한 스크립트를 작성했는데 어색한 느낌이 들었습니다.
cp /etc/resolv.conf /etc/resolv.dnsmasq
sed -i 's/^nameserver.*/nameserver 127.0.0.1/' /etc/resolv.conf
dnsmasq -r /etc/resolv.dnsmasq
그렇다면 Alpine에서 dnsmasq가 작동하도록 하는 더 나은("올바른") 방법이 있습니까?
답변1
데비안에서는 init 스크립트가 resolv.conf 업데이트를 담당하는 것 같습니다.https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=tree;f=debian;h=7539dd72f8ea2d8d4b60d926ffa163956e3624a5;hb=HEAD. resolvconf, systemd.service 등을 확인하십시오.
알파인에도 비슷한 가공방식이 있는지는 모르겠습니다. 내 생각에는 init 스크립트를 사용하여 alpine에서 dnsmasq를 실행해야 한다고 생각합니다 rc-service dnsmasq start
. 여기에서 스크립트를 읽을 수 있습니다.https://git.alpinelinux.org/aports/tree/main/dnsmasq/dnsmasq.initd(또는 로컬). 에 관한 귀중한 정보가 있습니다.https://wiki.alpinelinux.org/wiki/Main_Page.
DNS는 DHCP 클라이언트에 의해 변경될 수 있습니다.
이게 도움이 되길 바란다.