我在一个使用 glibc 运行 busybox 的 IoT 设备上。当我设置了 DHCP 后/etc/network/interfaces
会udhcpc
自动更新/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"