程序员ios-第三方框架/SDK

在 Mac 上配置 DNSmasq

2018-05-04  本文已影响974人  a42b20451301

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

来自百度百科

首先你的 Mac 应该已经安装了 Hombrew,如果还没有,点击这里:Install Homebrew


以下操作均在终端进行

1、通过 Homebrew 安装 DNSmasq

brew install dnsmasq

经过漫长的等待之后,你可能会看到一个来自Homebrew的错误信息:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink sbin/dnsmasq
/usr/local/sbin is not writable.

You can try again using:
  brew link dnsmasq

因为你的 Mac 上不存在 /usr/local/sbin 或当前用户没有这个路径读写权限。

在上面的操作进行完后,重新执行 brew link dnsmasq

你会看到没有任何错误提示:

Linking /usr/local/Cellar/dnsmasq/2.79... 2 symlinks created

2、进行一些简单的配置

对配置文件进行编辑:

vi /usr/local/etc/dnsmasq.conf

插入下面几行:

resolv-file=/usr/local/etc/resolv.dnsmasq.conf
strict-order
listen-address=127.0.0.1
addn-hosts=/usr/local/etc/dnsmasq.hosts
conf-dir=/usr/local/etc/dnsmasq.d
cache-size=10000

解释:

配置上游DNS服务器信息

vi /usr/local/etc/resolv.dnsmasq.conf

resolv.dnsmasq.conf中插入一些DNS服务器的地址:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.114
nameserver 1.1.1.1
nameserver 1.0.0.1

由于配置了strict-order,服务会首先连接 8.8.8.8 尝试解析,如果 8.8.8.8 没有返回任何消息,则会请求 8.8.4.4,以此类推。

配置一些你需要本地解析的域名,比如这些域名在DNS服务器中不存在或你处于某种原因想要将一个网址映射到本地:

vi /usr/local/etc/dnsmasq.hosts

插入解析(我没有用到):

address=/foo.com/192.168.1.1
address=/域名/你期望的ip地址

3、添加到开机启动

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

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

4、启动服务

sudo brew services start dnsmasq

sudo brew services stop dnsmasq // 停止服务

sudo brew services restart dnsmasq // 重新启动服务

顺利启动后,配置本机的DNS127.0.0.1

系统偏好设置 -> 网络 -> 高级 -> DNS

一切就绪后,刷新一下已经存在的DNS缓存

sudo killall -HUP mDNSResponder

使用 dig 命令测试一下:

dig www.sina.cn

; <<>> DiG 9.10.6 <<>> www.sina.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62540
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.sina.cn.           IN  A

;; ANSWER SECTION:
www.sina.cn.        59  IN  CNAME   sina.cn.
sina.cn.        59  IN  A   180.149.136.228

;; Query time: 104 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri May 04 18:57:35 CST 2018
;; MSG SIZE  rcvd: 70

dig www.sina.cn

; <<>> DiG 9.10.6 <<>> www.sina.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42734
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.sina.cn.           IN  A

;; ANSWER SECTION:
www.sina.cn.        36  IN  CNAME   sina.cn.
sina.cn.        36  IN  A   180.149.136.228

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri May 04 18:57:58 CST 2018
;; MSG SIZE  rcvd: 77


第一次 104 毫秒,第二次 0 毫秒。感觉上网都变快了许多呢。

上一篇 下一篇

猜你喜欢

热点阅读