Laravel Valet无法找到DNS地址问题求助(已尝试多种方案)
解决Laravel Valet DNS解析失败的问题
咱们从你给出的命令输出来揪问题根源——你严格按步骤操作后仍出错,核心原因其实很明显:
从你的命令输出看关键问题
brew info dnsmasq:显示dnsmasq已经安装到位,但注意它只是装了,没在运行!ps aux | grep dnsmasq:结果里只有grep自身的进程,说明dnsmasq服务根本没启动!这是最核心的问题——Valet依赖的本地DNS服务没跑起来,系统只能走公共DNS去解析*.test域名,自然返回了错误的第三方IP(198开头的那些)。dig something.test:SERVER显示是公共DNS209.18.47.62#53,而不是本地的127.0.0.1,进一步坐实了dnsmasq没在工作的结论。
一步步修复问题
1. 强制启动并设置dnsmasq开机自启
先停掉可能残留的无效进程,再重新启动服务:
sudo brew services stop dnsmasq sudo brew services start dnsmasq
执行完后再用ps aux | grep dnsmasq检查,应该能看到类似这样的进程(除了grep那条):
root 1234 0.0 0.1 123456 7890 ?? Ss 9:00AM 0:00.12 /usr/local/opt/dnsmasq/sbin/dnsmasq --keep-in-foreground -C /usr/local/etc/dnsmasq.conf
2. 验证Valet的DNS规则是否正确
Valet应该自动在/usr/local/etc/dnsmasq.conf里添加了*.test指向本地的规则,你打开这个文件确认下,必须有这一行:
address=/.test/127.0.0.1
如果没有,手动添加后重启dnsmasq:
sudo brew services restart dnsmasq
3. 确保系统优先用本地DNS解析*.test
检查/etc/resolver/test文件是否存在,里面应该只有一行:
nameserver 127.0.0.1
如果文件不存在,手动创建它:
sudo mkdir -p /etc/resolver sudo echo "nameserver 127.0.0.1" > /etc/resolver/test
4. 重新测试域名解析
现在执行dig something.test,正常情况下应该看到SERVER是127.0.0.1#53,ANSWER区域返回127.0.0.1,类似这样:
; <<>> DiG 9.9.7-P3 <<>> something.test ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;something.test. IN A ;; ANSWER SECTION: something.test. 0 IN A 127.0.0.1 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu May 24 17:06:34 EDT 2018 ;; MSG SIZE rcvd: 54
5. 最后重启Valet生效
完成以上步骤后,重启Valet让所有配置同步:
valet restart
内容的提问来源于stack exchange,提问作者iicaptain
相关产品推荐
相关产品推荐

