NetworkManager를 통해 DHCP에서 얻은 네임서버는 어디에서 찾을 수 있나요?

NetworkManager를 통해 DHCP에서 얻은 네임서버는 어디에서 찾을 수 있나요?

배우기 위해 저는 자체 캐싱 DNS 서버를 작성하고 있습니다(dnsmasq와 유사하지만 대신 Python으로). NetworkManager는 DHCP에서 업스트림 이름 서버를 가져와 이를 배치합니다 . 내 시스템은 쿼리할 이름 서버 /etc/resolv.conf도 찾습니다 ./etc/resolv.conf

내 시스템이 쿼리할 수 있도록 자체 DNS 서버( 127.0.0.1)를 배치해야 하지만 NetworkManager가 파일을 덮어씁니다. /etc/resolv.conf재정의 없이 NetworkManager를 비활성화/구성하면 /etc/resolv.confNetworkManager가 캐시된 이름 서버를 거기에 기록하지 않기 때문에 내 DNS 서버가 캐시된 이름 서버를 찾을 수 없습니다.

/etc/resolv.conf거기에 대한 심볼릭 링크가 있는 것 같으니 /var/run/NetworkManager/resolv.conf내 DNS 서버가 거기에서 업스트림 서버를 찾도록 할 수 있을까요? chattr -i /etc/resolv.confNetworkManager가 덮어쓰는 것을 방지하고 싶습니다 . 이 방법으로 해야 합니까, 아니면 더 좋은 방법이 있습니까?

답변1

chattr이 작동합니다. 이는 NM에게 resolv.conf를 그대로 두도록 지시합니다. 또는 을 rc-manager참조하십시오 man NetworkManager.conf.

NM은 항상 var/run의 내부 resolv.conf에 기록하므로 이를 얻을 수 있습니다. 을 사용 nmcli -f all device show하거나 스케줄러 스크립트( man NetworkManager)를 사용하십시오.

마지막으로 자신만의 DNS 플러그인을 작성할 수 있습니다. 하지만 이를 위해서는 소스에서 NM을 다시 빌드해야 하며 플러그인 API는 공개/안정적이지 않습니다.

관련 정보