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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rui574081323/article/details/50070467

公司工作中遇到的一个问题。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

猜你喜欢

转载自blog.csdn.net/rui574081323/article/details/50070467
今日推荐