如何使dhclient意识到命名空间



我正在使用名称空间将服务器上的一些物理接口分开。该路由完美地工作。另外,我有一个/etc/netns/e.g的每个命名空间的文件夹。/etc/netns/namespacea/resolv.conf,以便DNS也可以正常工作。

将DHCP与DHClient一起使用时出现了问题。我正在从一个命名空间内运行DHCLIENT,并且会遇到此错误。

(namespaceA)root@tc-vm:~#dhclient
RTNETLINK answers: File exists
mv: cannot move '/etc/resolv.conf.dhclient-new.2740' to '/etc/resolv.conf': Device or resource busy

我发现/etc/resolvconf/update.d/libc中的MV包含可能引起问题的MV。

如何使dhclient识别名称空间?

我自己研究了问题。

发生的事情是,当您创建网络名称空间时,您会看到主机计算机的/etc/resolv.conf,除非您明确创建/etc/netns/<namespace_name>/resolv.conf,否则在内部网络名称空间时,它将自动绑定到/etc/resolv.conf。因此,通过简单地创建该路径,主机的resolv.conf将不会在网络名称空间上进行可见,该网络名称空间将具有其自己的resolv.conf

ip netns的手动页面解释了以下内容:

对于了解网络名称空间的应用程序, 是首先查找全局网络配置文件 /etc/netns/name/in in/etc/。例如,如果您想要其他 用于隔离的网络名称空间的/etc/resolv.conf的版本 您的VPN您会命名/etc/netns/myvpn/resolv.conf。

IP Netns Exec自动处理此配置,文件 网络名称空间的约定应用程序,通过创建一个 安装名称空间并绑定每个网络名称空间所有的安装 将文件配置到其传统位置/etc。

就更新resolv.conf而言,dhclient在存在/etc/netns/<namespace_name>/resolv.conf时在网络名称空间中不起作用(另一方面,当它不存在时,它将覆盖主机计算机的resolv.conf,因为它是只有一个可用,但这并不是真正的)。正如上面问题中的错误所示,发生了什么事是dhclient/etc/resolv.conf.dhclient-new.2740中使用新名称服务器详细信息准备了一个临时文件,然后试图将其重命名为/etc/resolv.conf。它会生成错误,因为/etc/resolv.conf已经被绑定了,并且显然不允许mv执行此技巧。

为了使dhclient在网络名称空间中工作,应修改/sbin/dhclient-script。我删除了:

mv -f $new_resolv_conf /etc/resolv.conf

并替换为:

cat $new_resolv_conf > /etc/resolv.conf
rm -f $new_resolv_conf

否则,dhcpcd似乎正确地完成了此工作。

相关内容

  • 没有找到相关文章

最新更新