使用静态配置时如何自动填充 /etc/resolv.conf

使用静态配置时如何自动填充 /etc/resolv.conf

我在一个使用 glibc 运行 busybox 的 IoT 设备上。当我设置了 DHCP 后/etc/network/interfacesudhcpc自动更新/etc/resolv.conf。我可以通过清除/etc/resolv.conf然后启动来看到这一点udhcpc

# udhcpc -i wlan0 --pidfile /tmp/udhpcp.pid
udhcpc: started, v1.26.2
udhcpc: sending discover
udhcpc: sending select for 172.20.53.151
udhcpc: lease of 172.20.53.151 obtained, lease time 46800
deleting routers
SIOCDELRT: No such process
adding dns 172.20.62.208
adding dns 172.20.108.123

但是,当我有一个静态配置设置时,/etc/network/interfaces没有任何更新/etc/resolv.conf/etc/resolv.conf使用静态 IP 配置时什么时候可以自动添加 DNS 服务器?这可能吗?目前,当此模块配置静态 IP 时,不会提供 DNS 主机名或 IP。如果使用静态IP配置是否需要提供?

编辑:

为了进一步解释,设备从 XML 配置文件获取其网络设置。该文件有四个字段:

<NetworkConfig>
  <IP>1.2.3.4</IP>
  <NETMASK>255.255.240.0</NETMASK>
  <GATEWAY>1.2.3.1</GATEWAY>
  <DHCP>0</DHCP>
</NetworkConfig>

设备上的程序会获取此信息并生成一个/etc/network/interfaces文件,如果 DHCP=0,则创建一个条目,如下所示:

auto wlan0
iface wlan0 inet static
   address 1.2.3.4
   netmask 255.255.240.0
   gateway 1.2.3.1

如果 DHCP=1,则类似这样的条目

auto wlan0
iface wlan0 inet dhcp

因此,当尝试使用静态 IP 配置设备时,不会发生任何更新/etc/resolv.conf,XML 文件中也不会提供 DNS 信息。有没有可以自动更新的应用程序/etc/resolv.conf?如何/udhcpc从哪里获取其 dns 信息?

答案1

udhcpc 使用脚本:/usr/share/udhcpc/default.script在收到 DHCP 回复后配置您的接口。脚本中有一个变量:$dns它是一个名称服务器数组。您可以编辑脚本做任何您喜欢的事情;包括将$dns变量覆盖为您选择的两个名称服务器,即:

dns="8.8.8.8 8.8.4.4"

来源:http://forum.tinycorelinux.net/index.php?topic=8019.0

相关内容