作为非 root 用户,我可以在 Linux 中更改 DNS 吗?

作为非 root 用户,我可以在 Linux 中更改 DNS 吗?

环境是红帽

有特权

但现在/etc/resolv.conf是:

# Generated by NetworkManager


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

我可以仅由我(单个用户)更改我的 DNS 吗?

我怎样才能做到这一点?

答案1

一般不会。但是,在某些特殊情况下,您可以编写一个程序来LD_PRELOAD伪装您拥有权限(以及您自己的配置)的 C 运行时库。

这在使用 cwrap 在没有 root 权限的情况下测试您的软件堆栈:

迄今为止,cwrap.org 系列的最新成员是 resolv_wrapper。该库使测试使用 libresolv API 的应用程序成为可能 - 一个典型的示例是使用 SRV DNS 记录来定位要连接的服务器的程序。此包装器与 nss_wrapper 的主机支持不同,后者包装 NSS 调用(例如 getaddrinfo())。相比之下,resolv_wrapper 支持 libresolv 低级 API。

resolv_wrapper 允许您设置自定义 DNS 服务器并使用环境变量将测试指向该服务器,甚至设置一个虚假的 DNS 数据库文件,应用程序将使用该文件来构建测试 DNS 回复。第一个选项对于测试 DNS 服务器或包含 DNS 的集成服务器(例如 FreeIPA 或 Samba)非常有用。第二个选项对于测试客户端更有用,您需要测试客户端服务的自动发现。

文章继续说它将展示一个完整的示例(但它只是一个片段)。您可能会发现完整的解决方案很难实施。

相关内容