在更新Yosemite之前(在Mavericks上)我能够通过apache访问我本地托管的网站,即使完全关闭了wifi。我根据本教程设置了我的AMP堆栈:http://wizardmode.com/2012/06/apache-php-mysql-dev-on-os-x-lion-with-a-minimum-of-pain/
来自指南
还有一件事。如果您未连接到网络(在某些情况下),OS X将拒绝进行DNS查找。有一个简单的方法,分两步:
首先,安装VirtualBox。创建一个新的虚拟机,并为其提供一个仅限主机的网络适配器。 (如果您实际上不需要任何虚拟机,则可以使用FreeDos映像。它很小。)至少启动一次虚拟机。
您可以使用此代码段从命令行执行此操作(安装VirtualBox之后):
(ifconfig | grep -s vboxnet) || VBoxManage hostonlyif create ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
This prevents OS X from disabling normal DNS resolution when you’re not connected to a network.
其次,创建一个'dev'域解析器条目:
sudo mkdir -p /etc/resolver
sudo tee /etc/resolver/dev <<EOT
nameserver 127.0.0.1
domain dev
search_order 1
EOT
这告诉OS X,当它没有其他DNS服务器时,它总是可以向localhost(您的dnsmasq服务器)请求.dev域的域解析。 现在,如果您在终端中键入ifconfig,其中一行应以vboxnet0开头: - 如果是,那就太棒了!即使您在飞机上,OS X也会很乐意进行DNS查找,因此无论您身在何处,都可以继续使用.dev域名。
END TUTORIAL SECTION
更新后我经历了地狱以使我的所有本地网站都运行,现在 只有我有互联网连接才能正常工作
我正在根据教程运行dnsmasq,我做了整个VirtualBox技巧。这是ifconfig的相关输出:
vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255
vboxnet1: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:01
我不确定出了什么问题。这是我的wifi网络设置的屏幕截图:
您可以查看opendns服务器,然后查看localhost以进行DNS解析。
此外,这里是scutil --dns输出: DNS配置
resolver #1
nameserver[0] : 208.67.222.222
nameserver[1] : 208.67.220.220
nameserver[2] : 127.0.0.1
flags : Request A records, Request AAAA records
reach : Reachable
resolver #2
domain : dev
nameserver[0] : 127.0.0.1
flags : Request A records, Request AAAA records
reach : Reachable,Local Address
order : 1
DNS configuration (for scoped queries)
resolver #1
nameserver[0] : 208.67.222.222
nameserver[1] : 208.67.220.220
nameserver[2] : 127.0.0.1
if_index : 4 (en0)
flags : Scoped, Request A records, Request AAAA records
reach : Reachable
我真的不知道发生了什么和出错了什么。我已经尝试从教程中调试一些shell脚本,看看它们是否会导致问题,但我无法弄明白。这应该像馅饼IMO一样简单。为什么这是一场噩梦?
任何帮助都会受到极大的赞赏,因为我浪费了宝贵的时间,可以用来在这个烂摊子上建造有用的东西。谢谢!!!!
答案 0 :(得分:1)
从10.10开始,发现当您与所有网络断开连接时,无法进行DNS解析。
您可以通过连接时运行scutil --dns一次确认这一点,并在断开连接时再次运行。
以下视频显示了10.9和10.10 https://www.youtube.com/watch?v=3m9OI_AjCx8
之间的行为差异我试图通过Apple升级这个问题,回应是它的预期行为。
我所知道的唯一解决方法是按照http://arstechnica.com/apple/2015/01/why-dns-in-os-x-10-10-is-broken-and-what-you-can-do-to-fix-it/重新添加mDNSResponder