gpt4 book ai didi

linux - 如何让 dhclient 知道 namespace ?

转载 作者:IT王子 更新时间:2023-10-29 00:06:54 25 4
gpt4 key购买 nike

我正在使用 namespace 来分隔服务器上的一些物理接口(interface)。路由工作完美。另外,我在/etc/netns/中为每个 namespace 都有一个文件夹,例如/etc/netns/namespaceA/resolv.conf 以便 DNS 也能正常工作。

在 dhclient 中使用 DHCP 时会出现问题。我正在从命名空间内部运行 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 能够识别 namespace ?

最佳答案

我自己调查了这个问题。

当您创建网络 namespace 时,会发生什么情况,您会看到 /etc/resolv.conf除非您显式创建 /etc/netns/<namespace_name>/resolv.conf ,这将自动绑定(bind)挂载到 /etc/resolv.conf在网络命名空间内部查找时。因此,通过简单地创建该路径,resolv.conf主机的名称将不再在网络命名空间中可见,它将拥有自己的 resolv.conf .

manual pageip netns解释这个:

For applications that are aware of network namespaces, the convention is to look for global network configuration files first in /etc/netns/NAME/ then in /etc/. For example, if you want a different version of /etc/resolv.conf for a network namespace used to isolate your vpn you would name it /etc/netns/myvpn/resolv.conf.

Ip netns exec automates handling of this configuration, file convention for network namespace unaware applications, by creating a mount namespace and bind mounting all of the per network namespace configure files into their traditional location in /etc.

至于更新resolv.conf , dhclient/etc/netns/<namespace_name>/resolv.conf 时,在开箱即用的网络 namespace 中不起作用存在(另一方面,当它不存在时,它将覆盖主机的 resolv.conf,因为它是唯一可用的,但这并不是真正可取的)。正如上面问题中的错误所示,发生的是 dhclient。在 /etc/resolv.conf.dhclient-new.2740 中准备一个包含新名称服务器详细信息的临时文件然后尝试将其重命名为 /etc/resolv.conf .它会产生一个错误,因为 /etc/resolv.conf已经绑定(bind)安装并且显然是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似乎正确地完成了这项工作。

关于linux - 如何让 dhclient 知道 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com