警告:本教程具有一定的危险性,不熟悉Android和Linux系统请勿使用,否则可能会导致手机变砖。
提示:本操作基于HTC Desire(Oxygen 2.3,Android 2.3.7)进行,同时需要ROOT权限和ADB开发环境,不能保证所有手机都能适用。
注意:使用该方法后,手机自带的Wifi热点会失效!
首先,将手机设置为开发模式,然后通过数据线接入电脑。
本站提供了2个模板文件和一个修改版的dnsmasq,请先下载该压缩包:
http://www.chenshaoju.com/downloads/blogbus/dnsmasq.zip
下在回来后,解压,会看到三个文件,分别是 dnsmasq , dnsmasq.conf , resolv.conf 。
首先,需要对域名解析进行基本配置。
用高级文本编辑器(比如PSPad)打开 dnsmasq.conf 文件。
注意:请勿使用Windows自带的记事本打开,该文件使用的是Linux的换行符,不兼容Windows的换行符,用记事本打开可能会都堆在一起没有换行。
找到:#address=/double-click.net/127.0.0.1 ,并新起一行,然后添加内容,比如:
address=/www.baidu.com/119.75.218.45
address=/www.sina.com.cn/202.102.75.147
如果,有域名需要泛域名解析,那么可以这样:
address=/vnet.cn/127.0.0.1
如果如上配置,所有以 .vnet.cn 结尾的域名都会解析到127.0.0.1上。
请按照自己所需的实际情况一行行的添加解析。
当所需要映射的服务器配置完成后,再往下翻或按Ctrl + F,找到 #no-hosts ,并删掉前面的#号。
这样做是为了避免dnsmasq去读取本机的Hosts文件。
配置完成后,保存文件,然后打开 resolv.conf 。
打开 resolv.conf 文件后,可以看到有四行内容,这四行是中国骨干网的DNS,一般情况下不用修改,如果你在国外,或者使用的是特殊的网络,可以删掉原有的IP地址,设置为你所在地的DNS。
当都配置完成后,保存文件,然后退出。
启动adb shell,然后运行:
mount -t yaffs2 -o rw,remount /dev/block/mtdblock3 /system
注意:不同的手机和系统可能会不一定,该命令是将 system分区挂载为读写,也许你的手机可能不是这个分区和类型,请注意判断并按照实际情况填写。
运行结束后,输入 exit 退出 adb shell,然后用 adb push 命令将 dnsmasq.conf 和 resolv.conf 推送到 /etc/ 目录下:
adb push D:\dnsmasq.conf /etc/dnsmasq.conf
adb push D:\resolv.conf /etc/resolv.conf
注意:路径可能不一样,请按照实际情况填写。
当文件都推送完成后,请注意,以下步骤是用于判断你手机内置的DNSMasq是否存在并且工作正常。
开启两个 adb shell 窗口,其中一个运行 top –m 9 命令,该命令会检测当前手机的负载情况。
然后在第二个 adb shell 窗口运行:
dnsmasq –pid-file=/cache/dnsmasq.pid
注意,按下回车后请留意运行 top –m 9 命令的窗口,看是否有一个名为 dnsmasq 的进程占用了超过90%的CPU资源,如果没有,则继续,如果是,请再启动一个 adb shell ,然后运行:
killall dnsmasq
并继续往后看。
如果没有出现CPU爆满的情况,请回到第二个运行dnsmasq的窗口,然后按下Ctrl + C,并回到运行 top-m 9 命令的窗口,看是否有一个名为 dnsmasq 的进程占用了超过90%的CPU资源,如果没有,则继续,如果是,请再启动一个 adb shell ,然后运行:
killall dnsmasq
并继续往后看。
如果出现了以上CPU爆满的情况,则说明手机内置的dnsmasq存在问题,需要更换。在本篇文章上方提供的压缩包下载里有一个修改版的dnsmasq,解决了该问题。
用 adb push 将该 dnsmasq 推送到 /system/bin/ 目录下:
adb push d:\dnsmasq /system/bin/dnsmasq
然后启动一个 adb shell ,并设置其权限为751:
cd /system/bin/
chmod 751 dnsmasq
推送完成后,回到 adb shell ,然后创建开机启动项:
cd /etc/init.d/
echo dnsmasq –pid-file=/cache/dnsmasq.pid >>89dnsmasq
chmod 750 89dnsmasq
输入完毕后,就创建了开机启动项,这样在系统启动的时候,会自动启动dnsmasq。
最后,我们需要用第三方的软件来开机自动配置DNS,将DNS指向127.0.0.1:
访问安卓电子市场,并安装 DNS Changer:
https://market.android.com/details?id=com.eddypcz.dnschanger
安装后,在界面上可以看到配置主要DNS的地方,我们将其输入为127.0.0.1,第二个输入框保持空白,然后点击SET按钮。
然后,按下Menu键,点击Setting,选中Auto apply for WIFI 和 Auto apply for 3G,并且点击Set Primary DNS,输入127.0.0.1,然后选中Auto set primary DNS。最后,按返回键返回。
现在,你的手机就按照内置的DNSMasq进行工作了。
补充:
默认情况,该配置文件会使得dnsmasq绑定在 0.0.0.0 的IP上,也就是说手机所在的Wifi局域网里都能使用该手机作为DNS服务器(一般情况),如果你不希望这样,可以在修改 dnsmasq.conf 文件的时候,搜索:
# server=10.1.2.3@eth1
并新起一行,输入:
server=127.0.0.1
那么DNSMasq就只会监听127.0.0.1,不会让其他人访问到了。
参考资料:
修改版DNSMasq: http://forum.xda-developers.com/showpost.php?p=17744219&postcount=2
DNSMasq默认配置文件: http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example
提示:本操作基于HTC Desire(Oxygen 2.3,Android 2.3.7)进行,同时需要ROOT权限和ADB开发环境,不能保证所有手机都能适用。
注意:使用该方法后,手机自带的Wifi热点会失效!
首先,将手机设置为开发模式,然后通过数据线接入电脑。
本站提供了2个模板文件和一个修改版的dnsmasq,请先下载该压缩包:
http://www.chenshaoju.com/downloads/blogbus/dnsmasq.zip
下在回来后,解压,会看到三个文件,分别是 dnsmasq , dnsmasq.conf , resolv.conf 。
首先,需要对域名解析进行基本配置。
用高级文本编辑器(比如PSPad)打开 dnsmasq.conf 文件。
注意:请勿使用Windows自带的记事本打开,该文件使用的是Linux的换行符,不兼容Windows的换行符,用记事本打开可能会都堆在一起没有换行。
找到:#address=/double-click.net/127.0.0.1 ,并新起一行,然后添加内容,比如:
address=/www.baidu.com/119.75.218.45
address=/www.sina.com.cn/202.102.75.147
如果,有域名需要泛域名解析,那么可以这样:
address=/vnet.cn/127.0.0.1
如果如上配置,所有以 .vnet.cn 结尾的域名都会解析到127.0.0.1上。
请按照自己所需的实际情况一行行的添加解析。
当所需要映射的服务器配置完成后,再往下翻或按Ctrl + F,找到 #no-hosts ,并删掉前面的#号。
这样做是为了避免dnsmasq去读取本机的Hosts文件。
配置完成后,保存文件,然后打开 resolv.conf 。
打开 resolv.conf 文件后,可以看到有四行内容,这四行是中国骨干网的DNS,一般情况下不用修改,如果你在国外,或者使用的是特殊的网络,可以删掉原有的IP地址,设置为你所在地的DNS。
当都配置完成后,保存文件,然后退出。
启动adb shell,然后运行:
mount -t yaffs2 -o rw,remount /dev/block/mtdblock3 /system
注意:不同的手机和系统可能会不一定,该命令是将 system分区挂载为读写,也许你的手机可能不是这个分区和类型,请注意判断并按照实际情况填写。
运行结束后,输入 exit 退出 adb shell,然后用 adb push 命令将 dnsmasq.conf 和 resolv.conf 推送到 /etc/ 目录下:
adb push D:\dnsmasq.conf /etc/dnsmasq.conf
adb push D:\resolv.conf /etc/resolv.conf
注意:路径可能不一样,请按照实际情况填写。
当文件都推送完成后,请注意,以下步骤是用于判断你手机内置的DNSMasq是否存在并且工作正常。
开启两个 adb shell 窗口,其中一个运行 top –m 9 命令,该命令会检测当前手机的负载情况。
然后在第二个 adb shell 窗口运行:
dnsmasq –pid-file=/cache/dnsmasq.pid
注意,按下回车后请留意运行 top –m 9 命令的窗口,看是否有一个名为 dnsmasq 的进程占用了超过90%的CPU资源,如果没有,则继续,如果是,请再启动一个 adb shell ,然后运行:
killall dnsmasq
并继续往后看。
如果没有出现CPU爆满的情况,请回到第二个运行dnsmasq的窗口,然后按下Ctrl + C,并回到运行 top-m 9 命令的窗口,看是否有一个名为 dnsmasq 的进程占用了超过90%的CPU资源,如果没有,则继续,如果是,请再启动一个 adb shell ,然后运行:
killall dnsmasq
并继续往后看。
如果出现了以上CPU爆满的情况,则说明手机内置的dnsmasq存在问题,需要更换。在本篇文章上方提供的压缩包下载里有一个修改版的dnsmasq,解决了该问题。
用 adb push 将该 dnsmasq 推送到 /system/bin/ 目录下:
adb push d:\dnsmasq /system/bin/dnsmasq
然后启动一个 adb shell ,并设置其权限为751:
cd /system/bin/
chmod 751 dnsmasq
推送完成后,回到 adb shell ,然后创建开机启动项:
cd /etc/init.d/
echo dnsmasq –pid-file=/cache/dnsmasq.pid >>89dnsmasq
chmod 750 89dnsmasq
输入完毕后,就创建了开机启动项,这样在系统启动的时候,会自动启动dnsmasq。
最后,我们需要用第三方的软件来开机自动配置DNS,将DNS指向127.0.0.1:
访问安卓电子市场,并安装 DNS Changer:
https://market.android.com/details?id=com.eddypcz.dnschanger
安装后,在界面上可以看到配置主要DNS的地方,我们将其输入为127.0.0.1,第二个输入框保持空白,然后点击SET按钮。
然后,按下Menu键,点击Setting,选中Auto apply for WIFI 和 Auto apply for 3G,并且点击Set Primary DNS,输入127.0.0.1,然后选中Auto set primary DNS。最后,按返回键返回。
现在,你的手机就按照内置的DNSMasq进行工作了。
补充:
默认情况,该配置文件会使得dnsmasq绑定在 0.0.0.0 的IP上,也就是说手机所在的Wifi局域网里都能使用该手机作为DNS服务器(一般情况),如果你不希望这样,可以在修改 dnsmasq.conf 文件的时候,搜索:
# server=10.1.2.3@eth1
并新起一行,输入:
server=127.0.0.1
那么DNSMasq就只会监听127.0.0.1,不会让其他人访问到了。
参考资料:
修改版DNSMasq: http://forum.xda-developers.com/showpost.php?p=17744219&postcount=2
DNSMasq默认配置文件: http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example