我想设置我的浏览器将使用的 dns 记录,但我没有 root 访问权限,因此无法修改/etc/hosts
.我需要这样做来使用 apache 测试虚拟主机,其 dns 尚未设置。我可以使用 Firefox 和 chrome,所以如果有一个插件可以简化它;或其他选项有帮助。
更新:覆盖 dns 的替代方法可能是修改 HTTP 标头,如果将正确的标头发送到 apache,则应返回正确的内容。
答案1
我正在寻找一种方法来运行具有修改后的 DNS 解析的程序以进行测试。对我来说,解决方案是使用HOSTALIASES
环境变量:
$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo
看hostname(7)
。
(附注:在示例中,HOSTALIASES
环境变量仅影响wget
进程。当然,您可以export HOSTALIASES
让它对当前 shell 的所有子进程生效。)
答案2
您可以围绕 libc 函数编写一个包装器来解析主机名,并在与 /etc/hosts 不同的文件中查找它们。然后运行您想要使用主机文件的任何应用程序
LD_PRELOAD=wrapper.so firefox
答案3
我认为最好的方法是设置一个 SOCKS5 代理并告诉 Firefox 通过 SOCKS5 代理(network.proxy.socks_remote_dns)发送 DNS 请求。你可以使用 openssh 相当轻松地设置一个ocks5代理(-D选项),并让一个远程主机使用自定义的/etc/hosts运行,或者类似的东西DNS掩码对于更复杂的 DNS 设置。但实际上,这会将 DNS 设置的配置推送到您可以进行系统范围更改的系统。
答案4
要测试虚拟主机,您可以将 Apache 服务器设置为 Firefox 中的代理。您输入的名称将转发给 Apache。这将中断浏览其他网站,因此完成后请重新设置代理。