/etc/resolv.conf 이외의 파일을 사용하여 DNS 서버 지정

/etc/resolv.conf 이외의 파일을 사용하여 DNS 서버 지정

/etc/resolv.conf를 사용하는 것 외에 DNS 서버의 주소를 지정하는 다른 방법이 있습니까?

이유: (누군가 물었기 때문에) 저는 LDME 1을 실행하는 시스템을 가지고 있습니다. 새 드라이브를 설치하고 여기에 LDME 2를 설치했습니다.

이제 LDME 1 시스템의 모든 것이 내가 원하는 대로 구성되었으므로 시스템에 로그인하고 chroot에서 LDME 2를 잘라냅니다.

문제는 LDME 2에서 /etc/resolv.conf가 /run 디렉토리에 있는 파일에 대한 심볼릭 링크라는 것입니다. LDME 2가 시작될 때 생성되었을 수 있는 이 파일은 LDME 1에 존재하지 않습니다.

LDME 2 /etc/resolv.conf가 일반 파일이었다면 기꺼이 이를 백업하고 LDME 1 버전으로 교체한 후 작업을 수행하고 복원하겠습니다. 하지만 나는 시스템에서 새로 생성된 심볼릭 링크를 엉망으로 만들고 싶지 않습니다. 특히 chroot 감옥 밖을 가리키는 것.

답변1

경로 이름은 glibc에 하드코딩되어 있으므로 변경하기가 어렵습니다. 그러나 바인드 마운트를 사용하여 디렉터리( ) 대신 파일을 마운트할 수 있습니다 mount -B /tmp/my.resolv.conf /etc/resolv.conf. 안타깝게도 일반 파일을 일반 파일에 바인드 마운트하거나 디렉토리를 디렉토리에 바인드 마운트하는 것만 가능하므로 손상된 심볼릭 링크에서는 작동하지 않습니다. 그런데 /run에 바인드 마운트할 수 있는 것이 있나요?

답변2

DNS 캐싱(합리적임)을 사용하는 경우 로컬 DNS 캐시 서버에서 사용할 다른 파일을 지정할 수 있습니다. 예를 들어 dnsmasq다음을 사용하도록 구성할 수 있습니다.

resolv-file=/etc/resolv.dnsmasq.conf

이것은 심볼릭 링크가 아닐 수도 있습니다.

127.0.0.1이제 이를 실제 에 포함 해야 /etc/resolv.conf하지만 이미 존재하고 이름 서버를 추가하려는 경우에는 이것이 도움이 될 수 있습니다. 또한 일부 dhcp 클라이언트는 resolv.conf빌드 시 추가/추가하는 "헤더" 및 "트레일러" 파일을 인식합니다. 그들이 도움을 줄 수도 있습니다. 하지만 resolv.conf유용한 줄 수에는 제한이 있으므로 주의하세요 (보통 3줄이라고 생각하고 그 다음에는 무시됩니다).

관련 정보