我已经在我的 Linux 系统(内核版本 3.10)上设置了几个网络命名空间,现在我想配置每个网络命名空间以拥有自己的 DNS 设置。
我resolv.conf
在每个/etc/netns/[namespace]
目录中创建了文件,现在我想让我的系统按以下方式工作:
在 bash 命令行中,每当我nsenter --net=/run/netns/[namespace name]
使用/etc/netns/[namespace name]/resolv.conf
.
如果我像这样运行我的命令:
"ip netns exec [namespace name] [command]"
Run Code Online (Sandbox Code Playgroud)
然后应用命名空间的 DNS 设置。
但是,在不带“ip netns exec”的情况下运行命令时/etc/resolv.conf
,即使运行“netns get cur”表示上下文已设置为所需的网络命名空间,也会从 中获取 DNS 设置。
我尝试mount --bind /etc/netns/[namespace name]/resolv.conf /etc/resolv.conf
在适当的网络命名空间的上下文中执行此操作,但这适用于整个系统中的挂载,而不是仅在该网络命名空间的上下文中。
我怀疑使用 mount 命名空间可能会有所帮助,所以我尝试阅读 mount 命名空间的手册页,但是在我致力于它的短时间内无法从中做出任何事情。
有没有一种简单而优雅的方法来实现这个目标?
对解决方案的任何帮助/方向将不胜感激!