这是关于 Ubuntu 的,但在所有 Linux 版本上应该都差不多。假设我在我的目录中添加了一个条目,/etc/hosts
例如
127.0.1.12 facebook.com
以及 Apache 虚拟主机,例如
<VirtualHost 127.0.1.12>
ServerName facebook.com
DocumentRoot /var/www
</VirtualHost>
当我打开浏览器并向 facebook.com 发送 GET 请求时,firefox 将浏览我的 /var/www 文件夹。
问题:我怎样才能获取(即在 bash 中使用 wget)真实的 facebook.com 域名 - 而不删除 /etc/hosts 中的条目或我的 Apache VirtualHost - 换句话说,我怎样才能绕过内部 DNS?
答案1
通常,最好的设置是反过来的 - 设置一个 DNS 服务器,其中包含您要欺骗的站点的区域,并将客户端指向您的 DNS 服务器。然后,您可以在 Web 服务器上的 /etc/resolv.conf 中设置一组外部服务器,或者添加指向真实站点的主机条目。
答案2
在 中/etc/nsswitch.conf
,替换此内容:
hosts: files dns
有了这个:
hosts: dns