首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使dhclient能够识别命名空间?

如何使dhclient能够识别命名空间?
EN

Stack Overflow用户
提问于 2016-06-29 14:23:24
回答 1查看 3.8K关注 0票数 14

我使用名称空间来分隔服务器上的几个物理接口。路线运作得很好。另外,我为/etc/netns/例如/etc/netns/namespaceA/ fine中的每个名称空间都有一个文件夹,这样DNS也能正常工作。

在dhclient中使用DHCP时会出现问题。我在名称空间中运行dhclient,并得到这个错误。

代码语言:javascript
复制
(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能够识别命名空间?

EN

回答 1

Stack Overflow用户

发布于 2017-03-31 12:47:57

我亲自调查了这个问题。

在创建网络命名空间时,除非创建显式的/etc/resolv.conf,否则会看到主机的/etc/netns/<namespace_name>/resolv.conf,这将在网络命名空间中查找时自动绑定到/etc/resolv.conf。因此,通过简单地创建该路径,主机的resolv.conf将不再是网络命名空间上的visibile,它将拥有自己的resolv.conf

手册页 of ip netns解释了这一点:

对于知道网络名称空间的应用程序,约定是先在/etc/netns/NAME/然后在/etc/中查找全局网络配置文件。例如,如果您想要一个用于隔离vpn的网络名称空间的/etc/ your的不同版本,您可以将它命名为/etc/netns/myvpn/surv.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。我把这个去掉了:

代码语言:javascript
复制
mv -f $new_resolv_conf /etc/resolv.conf

并代之以:

代码语言:javascript
复制
cat $new_resolv_conf > /etc/resolv.conf
rm -f $new_resolv_conf

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38102481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档