我可以创建类似于在 /etc/hosts 中写入而无需 root 访问权限的覆盖 dns

xen*_*ide 53 dns not-root-user http

我想设置一个我的浏览器将使用的 dns 记录,但我没有 root 访问权限,所以我无法修改/etc/hosts. 我需要这样做以使用 apache 测试虚拟主机,其 dns 尚未设置。我可以访问 Firefox 和 chrome,所以如果有一个插件可以促进它;或其他选项有帮助。

更新:覆盖 dns 的替代方法可能是修改 HTTP 标头,如果将正确的标头发送到 apache,则应返回正确的内容。

mat*_*ann 70

我正在寻找一种方法来运行具有修改 DNS 解析的程序以进行测试。对我来说,解决方案是使用HOSTALIASES环境变量:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo
Run Code Online (Sandbox Code Playgroud)

hostname(7)

(旁注:示例中HOSTALIASES环境变量只影响wget进程,当然你也可以export HOSTALIASES让它对当前shell的所有子进程生效。)

  • 好像只支持hosts到hosts别名,不支持ip,hosts不能包含“.”。 (8认同)
  • 非常感谢!在大多数情况下,示例应该在 `export` 前面加上:`export HOSTALIASES=~/.hosts`。 (3认同)

chr*_*ris 11

您可以围绕 libc 函数编写一个包装器来解析主机名,并在与 /etc/hosts 不同的文件中查找它们。然后运行任何你想使用你的主机文件的应用程序

LD_PRELOAD=wrapper.so firefox
Run Code Online (Sandbox Code Playgroud)

  • 最有用的是,让你的包装器重定向 [`/etc/nsswitch.conf`](http://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html#Name-Service -Switch) 到`~/.nsswitch.conf`,并创建一个`~/.nsswitch.conf` 来查询你的DNS 数据库。 (5认同)

jsb*_*ngs 6

我认为最好的方法是设置 SOCKS5 代理并告诉 firefox 通过 SOCKS5 代理(network.proxy.socks_remote_dns)发送 DNS 请求。您可以相当轻松地使用 openssh 设置 socks5 代理(-D 选项),并使用自定义 /etc/hosts 或DNSMasq 之类的东西运行远程主机以进行更复杂的 DNS 设置。但是,这实际上是将 DNS 设置的配置推送到您可以进行系统范围更改的系统。


max*_*zig 5

在超级用户处查看以下问题:

https://superuser.com/questions/184643/override-dns-in-firefox

如果讨论的选项和 SO 链接不是可行的解决方案,请查看:

https://superuser.com/questions/100239/hostname-override-in-firefox

特别是检查:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

听起来这个插件可以提供帮助 - 但我取决于它的实际实现。