如何在 Linux 中为网络命名空间专门设置 DNS

jay*_*153 10 networking domain-name-system linux resolv.conf

我在 Linux 中创建了一个网络命名空间。

我以为创建的每个命名空间都有一个 resolv.conf 文件,但在我的系统上并非如此。我没有以下路径 /etc/netns/namespace_name/resolv.conf .. 文件夹 netns 不存在。

只有一个resolv.conf(/etc/resolv.conf 和另一个镜像在/run/resolv.conf 中)。此文件中的任何更改都会影响所有网络接口。有没有办法可以为主机和命名空间使用不同的 DNS?

Nik*_*Nik 14

您必须自己创建目录 /etc/netns/_namespace_name_ ,并将不同版本的 resolv.conf 放在那里。

  • 它将被自动使用,因为上面的完整路径由`ip netns` 绑定挂载到 /etc/resolv.conf,如 ip netns http://man7.org/linux/man-pages/ 的手册页中所述man8/ip-netns.8.html。因此,在给定的网络命名空间中,/etc/resolv.conf 是每个命名空间的 resolv.conf 文件,当且仅当 /etc/netns/namespace-name/resolv.conf 已被创建。否则,应用程序将看到主机的 resolv.conf,这可能不是所需的行为。 (2认同)