resolv.conf는 항상 비어 있습니다.

resolv.conf는 항상 비어 있습니다.

저는 2개의 다른 임베디드 장치를 가지고 있습니다. 하나는 TI arago Linux를 실행하는 오래된 장치이고 다른 하나는 Xilinx 장치(petalinux)입니다.

dns-nameservers/etc/network/interfaces네트워크를 추가 및 재구성 /etc/init.d/networking restart하거나 장치를 다시 시작할 때 두 장치 모두에서 동일한 결과가 나타납니다.
파일은 /etc/resolv.conf항상 비어 있습니다.


패키지, 데몬 또는 .domain이 시스템에 존재하지 않습니다 dhclient.resolvconfnetwork-managermdns

여기있어 /etc/network/interfaces:

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1

그리고 resolv.conf:

[root@linux:~] ls -l /etc/resolv.conf 
lrwxrwxrwx    1 root     root           20 Feb  3 18:17 /etc/resolv.conf -> /var/run/resolv.conf
[root@linux:~] ls -l /var/run/resolv.conf
-rw-r--r--    1 root     root            0 Feb  3 18:17 /var/run/resolv.conf

실행되면 /etc/init.d/networking restart두 장치 모두 기본적으로 호출 ifdown -a한 다음 이 경우 및 busybox 유틸리티를 ifup -a모두 호출합니다.ifupifdown

불변 파일 속성 솔루션이 언급된 경우: 시스템 설계 방식과 완전히 반대되는 것처럼 보이기 때문에 수동으로 파일을 생성 resolv.conf하고 파일 속성을 변경하여 불변( )으로 만들고 싶지 않습니다 . 영구적이어야 한다면 애초에 휘발성 메모리(populate-휘발성.sh에 의해 생성됨)에 저장되는 이유는 무엇입니까?chattr +iresolv.conf

어떤 팁이라도 감사드립니다!

업데이트: 해결책을 찾았지만 누군가 검색할 경우를 대비해 질문을 열어 두겠습니다.

답변1

/etc/network/if-up.d/dns다음 내용으로 스크립트를 만듭니다(이 예에서만 고려됨 eth0).

#!/bin/sh
if [ "$IFACE" = "eth0" ];then
for NS in $IF_DNS_NAMESERVERS; do
R="${R}nameserver $NS
"
done
echo "$R" > /etc/resolv.conf
fi

실행 가능하게 만드십시오 chmod +x /etc/network/if-up.d/dns.

장치를 다시 시작하거나 네트워크 서비스를 다시 시작할 때마다 resolv.conf다시 생성됩니다 . 기적적으로 작동합니다!

dns-nameservers/etc/network/interfacesPS: 예를 들어 ... 이외의 다른 지시어/명명을 사용하는 경우 로 my-dns바꾸 십시오. 알아두면 좋지만 규칙을 고수하고 를 사용하는 것이 좋습니다 .$IF_DNS_NAMESERVERS$IF_MY_DNSdns-nameservers

관련 정보