您可以在 /usr/share/udhcpc/default.script 文件中添加以下代码来为每个网卡指定不同的 resolv.conf 位置:
case "$1" in
deconfig)
# delete the old resolv.conf file
rm -f /etc/resolv.conf.${INTERFACE}
;;
renew|bound)
# create a new resolv.conf file with the DNS servers obtained from DHCP server
echo "domain ${DOMAIN}" > /etc/resolv.conf.${INTERFACE}
for i in $DNS; do
echo "nameserver $i" >> /etc/resolv.conf.${INTERFACE}
done
;;
esac
# link the new resolv.conf file to /etc/resolv.conf
ln -sf /etc/resolv.conf.${INTERFACE} /etc/resolv.conf
该脚本会在续租或绑定成功时创建一个名为 /etc/resolv.conf.{INTERFACE}
的新文件,并将从 DHCP 服务器获取的 DNS 服务器列表写入该文件。最后,它会将 /etc/resolv.conf
软链接到新创建的文件。这样,每次 udhcpc 运行时,都会使用正确的 resolv.conf 文件。
请注意,在这个示例中,我们使用了 ${INTERFACE}
变量来构建不同的文件名。如果您想要为每个接口设置不同的 DNS 服务器,请在启动 udhcpc 命令时使用 -i
参数并设置相应的接口名称。例如:
udhcpc -i eth0 ...
这将使 $IFACE
环境变量被设置为 eth0
,因此 ${INTERFACE}
变量将被替换为 eth0
。您可以根据需要在脚本中修改这些变量名。