IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在Mac OS X上安装dnsmasq来支持hosts泛解析

    李惟发表于 2015-03-09 11:52:45
    love 0

    最近访问谷歌系列网站越来越慢了,不探究原因,但这让我感到非常苦恼,如果连Google都使用不了的话,那我上网的意义就失去了一半了。不过好在我们有hosts,可以实现简单的翻墙,来解决大多数谷歌服务的访问问题。

    Hosts地址见:

    http://levi.cg.am/archives/3553

    可是谷歌的域名实在是太多了,我们有没有什么办法来实现类似*.google.com/*的泛解析呢?很可惜,传统的hosts文件不可以。但是有一个叫做dnsmasq的软件,它能提供类似DNS缓存的功能,可以用它来实现很强大的泛解析功能。

    下面以OS X Mavericks做例子,来讲述如何安装使用DNSMASQ,来实现谷歌服务直连。

    Mac安装DNSMASQ

    要安装dnsmasq,你需要先安装Homebrew。

    它自称“OS X不可或缺的套件管理器”。

    安装Homebrew

    请打开终端(应用程序>实用工具),并运行

    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

    你需要按照提示来继续安装。这个过程或许会很慢,受限于网络状况。如果实在很慢,你可以在VPN环境下安装。

    安装完成之后,你就可以使用brew命令来安装dnsmasq了。

    安装并配置dnsmasq组件

    仍然在终端运行

    brew install dnsmasq

    现在把/usr/local/opt/dnsmasq/dnsmasq.conf.example文件拷贝至并重命名为/usr/local/etc/dnsmasq.conf。

    在刚刚的/usr/local/etc/文件夹下新建一个resolv.dnsmasq.conf文件。

    用sublime text,textmate,bbedit等纯文本编辑器打开这个resolv.dnsmasq.conf文件,输入以下内容

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    nameserver 42.120.21.30
    nameserver 168.95.1.1

    这些都是你常用的DNS地址,你可以添加更多,比如OpenDNS。

    用sublime text,textmate,bbedit等纯文本编辑器打开同文件夹下的dnsmasq.conf文件,增加以下内容

    resolv-file=/usr/local/etc/resolv.dnsmasq.conf
    strict-order
    no-hosts
    cache-size=32768
    listen-address=127.0.0.1

    这就是最简单的配置文件。需要说明的是,listen-address后面的可以是多个IP用英文逗号隔开,例如你写listen-address=127.0.0.1,192.168.1.102,其中192.168.1.102是你的计算机的内网IP,就可以实现同一个局域网内的设备,通过设置DNS为这个IP,来实现都通过你的dnsmasq来查询dns,即局域网范围内的DNS泛解析。

    要运行并且开机自动运行dnsmasq,在终端运行

    sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
    sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

    现在,你可以通过把Mac系统的DNS改为127.0.0.1来使用dnsmasq。同局域网的用户也可以修改DNS到此台Mac的IP即可。前提是要把此台Mac的局域网IP写到listen-address里。

    dnsmasq-dns-config

    要检查运行情况,你可以在终端运行

    dig g.cn

    来检查是否在使用本地的dnsmasq进行dns解析。

    DNSMASQ 泛解析

    上面只是安装好了dnsmasq,下面来具体介绍DNSMASQ的泛解析功能,来突破墙,实现谷歌服务直连。要添加规则,只需在dnsmasq.conf文件里追加内容即可。

    DNSMASQ的泛解析规则是这样的:

    address=/baidu.com/1.1.1.1

    这意味着,*.baidu.com/*都将被引导至IP为1.1.1.1。

    Google 服务泛解析

    下面来添加适用于谷歌大多数服务的泛解析规则。

    首先需要寻找Google一个可用的IP。它最好是位于美国的服务器,这样能保证大多数服务可用。

    已知Google现在一个可用的IP是74.125. 204.166。(注意,此 IP 在您现在阅读的这段时间并不一定有效)

    追加规则:

    address=/google.com/74.125.204.166
    address=/googleapis.com/74.125.204.166
    address=/googlevideo.com/74.125.204.166
    address=/google.com.hk/74.125.204.166
    address=/youtube.com/74.125.204.166
    address=/ytimg.com/74.125.204.166
    address=/ggpht.com/74.125.204.166
    address=/googleusercontent.com/74.125.204.166

    这基本上涵盖了绝大多数谷歌服务。把这些规则追加到dnsmasq.conf文件里即可。

    Wikipedia 服务泛解析

    下面提供一组维基百科的泛解析规则:

    address=/wikipedia.org/91.198.174.192
    address=/wikimedia.org/208.80.154.224
    address=/upload.wikimedia.org/198.35.26.112

    重启dnsmasq来应用

    在修改之后你不会立即看到效果,因为有缓存效果。

    在终端运行:

    sudo launchctl stop homebrew.mxcl.dnsmasq
    sudo launchctl start homebrew.mxcl.dnsmasq
    sudo killall -HUP mDNSResponder

    即可刷新缓存并重新启动dnsmasq服务。
    Chrome用户还可以在Chrome://net-internals/#dns清理缓存。

    您可能也喜欢:
    5种方法在mac系统修改hosts文件
    Mac OS X 默认中文字体
    chrome切换hosts插件hostsadmin
    Mac 上删除键(delete)的妙用
    Mac开发者利器-Homebrew介绍及安装
    无觅


沪ICP备19023445号-2号
友情链接