解决手机连接Mac mini 共享的WiFi,mac的hosts不生效的问题

本文介绍如何通过将Macmini配置为DNS服务器,并结合修改hosts文件,实现iPhone在未越狱情况下对特定域名的访问切换。文章详细记录了安装Brew、dnsmasq的过程及配置dnsmasq.conf的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司工作中遇到的一个问题。Mac端可以修改hosts文件实现访问域名的切换,而对于未越狱的iPhone来说,这是无法实现的。安卓可以通过Root的方式开启修改hosts文件的权限。

起初,我想到的是,利用Mac mini共享WiFi, Mac mini修改了hosts。然后,用iPhone连接Mac mini共享的wifi。iPhone上装了ping工具,当我ping指定域名的时候,发现hosts并没有生效。后来咨询同事,他说是因为DNS的问题。

解决问题的思路是,将Mac mini作为DNS解析服务器,iPhone连接Mac mini共享的Wifi时,设置DNS为我的Mac mini的IP地址。方法如下:

  1. 将Mac mini作为DNS解析服务器
  • 安装Brew
sudo su 
curl -L http://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C /usr/local
  • 安装dnsmasq
brew install dnsmasq

  • 安装完成后,在/usr/local/文件下新建一个etc文件夹。
  • /usr/local/opt/dnsmasq/dnsmasq.conf.example文件拷贝至并重命名为/usr/local/etc/dnsmasq.conf
  • 编辑dnsmasq.conf,内容如下:

resolv-file=/etc/resolv.conf

strict-order

addn-hosts=/etc/hosts

cache-size=32768

listen-address=127.0.0.1,192.168.xx.154

其中,listen-address后面的可以是多个IP用英文逗号隔开。这里以我自己的IP地址为例,192.168.xx.154是我的Mac mini的内网IP,这样就可以实现同一个局域网内的设备,通过设置DNS为这个IP,来实现都通过我的Mac mini上的dnsmasq来查询dns,即局域网范围内的DNS泛解析。


  • 重启dnsmasq应用

sudo launchctl stop homebrew.mxcl.dnsmasq


sudo launchctl start homebrew.mxcl.dnsmasq


sudo killall -HUP mDNSResponder


  • 可通过以下代码设置开机自动运行dnsmasq:

sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

2. 最后,使用iPhone连接Mac mini共享的wifi,同时设置dns为我的Mac mini的内网IP地址,即192.168.xx.154。这样再ping以下,你就能看到效果啦。



参考:http://blog.netsh.org/posts/mac-os-x-dnsmasq_1762.netsh.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值