resolv.conf 始终为空

resolv.conf 始终为空

我有 2 个不同的嵌入式设备...一个运行 TI arago Linux 的旧设备和一个 Xilinx 设备 (petalinux)。

dns-nameservers在添加/etc/network/interfaces和重新配置网络/etc/init.d/networking restart或重新启动设备时,我在这两个设备上看到相同的结果:
文件/etc/resolv.conf始终保持为空。


系统中 不存在dhclientresolvconf软件包、network-manager守护程序 或。mdns

这里是/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和 then ,在这种情况下ifup -a都是ifup和busybox 实用程序。ifdown

如果提到不可变文件属性解决方案:我不想手动生成文件resolv.conf并更改文件属性以使其不可变(chattr +i),因为它似乎完全违背系统的设计方式。resolv.conf如果它应该是永久的,为什么首先存储在易失性内存中(由 populate-volatile.sh 生成)?

感谢您的任何提示!

更新:找到了解决方案,但会留下问题,以便有人搜索它。

答案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-nameserversPS:如果您使用除/etc/network/interfaces...for example之外的其他指令/命名my-dns,则替换$IF_DNS_NAMESERVERS$IF_MY_DNS.虽然知道很酷,但我宁愿遵守约定并使用dns-nameservers.

相关内容