前言
最近新买了 iPad mini, 在不断折腾的过程中发现一点让我非常非常的无语… 还是与网络有关, 那就是通常情况下, iPad mini 中的 App Store 连接速度那是相当相当相当的慢的, 慢到我打开 App Store 软件的首页需要登上 20~30s 才会有可能访问成功, 那么下载一个应用的情况可想而知了. 因为在编写 wyatt_hosts 的时候, 也为了解决在 iMac 上进行 Mac OS 更新慢的问题, 所以关于 iPad mini 基本上也就同样的解决方法了.
在自己想到折腾一个 dnsmasq 之前, 也在网络上搜索过其他的解决方案, 比如 V2EX DNS 可是对我来说, 在 iPad mini 上我也需要其他的比如 Google Drive 等也能够快速的访问, 而这些问题的解决办法都在那个 hosts 文件中, 要是我能够将 iPad mini 给越狱就最好了…
初认
由于 iPad mini 没有越狱, 所以我现在能想到的办法就只有自己搭建一台 dns 服务器了, 在网络上搜索 linux dns, mac os dns 很多情况下是使用 bind 9 的软件, 当我阅读完一些配置指南以后(例如), 说实话, 我吓倒了 T.T 超级复杂…… 然后, 我在某一篇文章中看到另外一段话”使用 dnsmasq 做 dns 缓存”吸引过去了, 这才让我去搜索了一下 dnsmasq, 哈哈, It is designed to provide DNS and, optionally, DHCP, to a small network. 这太棒了, 和我的目的一样, bind 9 虽然是非常流行并且久经沙场的 dns 服务器, 同时这也意味着我需要为那用不着的 20% 功能去折腾一个庞然大物吗? 所以最后选择了更加轻便的 dnsmasq.
安装
在 *nix 下安装软件非常的方便, 因为我是 Mac OS 所以先 brew search dnsm
搜索看看有没有现成的, 果然找到, 接下来 brew install dnsmasq
, 经过一系列脚本的安装, 得到一段话:
To configure dnsmasq, copy the example configuration to /usr/local/etc/dnsmasq.conf and edit to taste.
cp /usr/local/Cellar/dnsmasq/2.61/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
To load dnsmasq automatically on startup, install and load the provided launchd item as follows:
sudo cp /usr/local/Cellar/dnsmasq/2.61/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
在 Mac OS 配置自启动除非看了这文档, 否则我还真会糊涂…
配置
看到一个 dnsmasq.conf 的文件了吧, 还是需要一点点配置的, 但非常非常的少.
- 配置 dnsmasq 的上游 dns 服务器;(这是一个 dns 缓存, 那么其还是需要有上游服务器进行一次域名解析的)
- 配置系统的 dns 服务器, 将 dnsmasq 设置在首位寻找
- 设置 dnsmasq 需要监听的 IP 地址, 让其他服务器能够找到他
对应上面的三个事情, 只有 4 条配置即可, 不要打开 dnsmasq.conf 看到一大片内容就吓到了.
- 首先配置 resolv-file=/etc/resolv.dnsmasq.conf 这个参数表示 dnsmasq 会从这个指定的文件中寻找上游 dns 服务器
- 将 127.0.0.1 添加到 /etc/resolv.conf 文件的第一行中, 让系统首先寻找本地的 dnsmasq 服务器取消注释的
strict-order
表示严格安装 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止 - 确保注释掉
no-hosts
, 默认情况下这是注释掉的, dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游 dns 服务器寻找. - 设置
listen-address=127.0.0.1
, 表示这个 dnsmasq 本机自己使用有效. - 这里有一个坑 listen-addres , 我爬了好长时间才爬出来..
在这些配置中, listen-address 的参数坑了我好长时间, 最后才能明白如何配置. 例如, 我还需要让局域网内其他的服务器也能够首先访问这个 dnsmasq 来进行域名解析如何配置? listen-address=192.168.1.100
(dnsmasq 所在服务器局域网内 ip), 好吧, 这样你本机配置的 127.0.0.1 就没效果了… 如果设置为 listen-address=127.0.0.1
那局域网内其他服务器就无法访问到这个 dnsmasq 了, 其实应该这样设置 listen-address=192.168.1.100,127.0.0.1
这样你就能双方都满足了, 不过需要注意的一点是, 如果 dnsmasq 所在服务器在局域网的 ip 地址变更了与配置文件中的不一样, 那么理所当然的再使用配置文件中的那个 ip, 局域网内其他服务器也就找不到这台 dnsmasq ,也就无法利用本地的 dns 缓存了.
汇总
最后来汇总一下, 能够快速的部署起来.
resolv.conf
1 2 |
|
1 2 3 4 |
|
1 2 3 |
|
上面设置好以后, 让我们把 dnsmasq 启动起来吧:
- 手动启动:
sudo dnsmasq
just it. - Mac OS 开机自启动, 这也是我现在设置的方式. 首先运行
brew info dnsmasq
查看软件信息, 看到有一句话To load dnsmasq: sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
照做就好了, 注意 使用不同版本的 Homebrew 会略有不同, 在版本 0.9.4 的时候, 简化了, 不需要自己去 copy 一个 Mac OS 下的 plist 文件了(具体答案可在 /usr/local/Library/Formula/dnsmasq.rb 中找到).
关闭
如果想关闭, 就按照 *nix 的常规用 ps ax | grep dns
找到 pid 然后 kill -9 [pid]
就行, 因为 -9 是 SIGKILL 信号. 同时如果想让 dnsmasq 清理掉所有缓存的 dns 记录, 发送一个 SIGHUP(1) 信号给 pid 就好 kill -1 [pid]
这些可通过 man dnsmasq
来看到.
测试
最后就是来测试测试是否起作用了. 这个最简单啦, 直接使用 dig
命令吧, 执行大于 2 次, 查看其中返回的 “Query time: x msec” 的结果就好, 如果第二次以后 x=0, 那么就配置成功了.
例子: dig google.com
查看详细的结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
dig baidu.com +short
仅仅查看解析的 ip
1 2 3 |
|
将电脑开启 dnsmasq, 然后将 iPad mini 连接进入局域网, 将 DNS 服务处第一个设置成 dnsmasq 服务器所在的 ip, 第二个设置成 V2EX 的, 第三个设置为 8.8.8.8 (用英文,隔开). 这回, 从 App Store 下载应用的时候, 总算能够看到明显的进度条滚动了 T.T
相关推荐
dnsmasq,dhcp dns源码
dnsmasq为某个域名配置单独的DNS.txt
课程概述课程以Dnsmasq为主线,突出实战应用性,全面深入讲解如何基于Dnsmasq搭建企业生产级易用易维护的DNS服务,包括DNS的常见解决方案介绍,Dnsmasq与Bind的对比等基础知识,以及实战部署、应用测试高可用Dnsmasq...
参考博文:http://blog.csdn.net/u013097499/article/details/50893438
glider glider是具有多种协议支持的转发代理,也是具有ipset管理功能(如dnsmasq)的dns转发服务器。 我们可以将本地侦听器设置为代理服务器,并且对interne glider glider的转发请求是具有多种协议支持的转发代理,...
k8s-dns-dnsmasq镜像,镜像使用方法: docker load -i k8s-dns-dnsmasq-nanny-amd64-1.14.8.tar.gz
Dnsmasq 为小型网络提供网络基础设施:DNS、DHCP、路由器通告和网络引导。它被设计为轻量级且占用空间小,适用于资源受限的路由器和防火墙。它还广泛用于智能手机和便携式热点的网络共享,以及支持虚拟化框架中的...
Masq是一个简单的本地dns服务器,例如 。 第一版摘自 。 请注意:Masq目前仅适用于macOS。 本地DNS 由于无法在/etc/hosts文件中使用通配符,因此我们无法指定以下内容: 127.0.0.1 *.dev. 要解决此问题,我们将...
与dnsmasq的所有服务器不同,smartdns返回的是访问速度变频器的解析结果。(详细差异请看 ) 支持树莓派,openwrt,华硕路由器,windows等设备。 目录 软件效果展示 阿里DNS使用阿里DNS查询百度IP,并检测结果。 pi...
DNSmasq CentOS 一键安装DNSmasq搭建公共DNS 安装 wget https://raw.githubusercontent.com/helloxz/dnsmasq/master/dns.sh --no-check-certificate chmod +x dns.sh ./dns.sh
Dnsmasq是一种轻巧的小型DHCP和DNS服务器。 您可以在其页面上阅读有关它的更多信息。 Dnsmasq可以回答来自本地文件的DNS查询,也可以转发给上游服务器。 此Stubby + Dnsmasq Docker映像将两者打包在一起。 它设置...
最近国外的服务器本地DNS总是出故障,闪断一会儿都会影响业务。于是在机房里找了两台Server,安装上keepalived和dnsmasq实际本地的DNS缓存
dnsmasq源码
glider是具有多种协议支持的前向代理,也是具有ipset管理功能(例如dnsmasq)的dns / dhcp服务器。 我们可以将本地侦听器设置为代理服务器,并通过转发器将请求转发到Internet。 | Forwarder ----------------- > | ...
Ubuntu配置DNS,设置Ubuntu DNS缓存 1. 安装dnsmasq: # 安装dnsmasq的软件包 ...2.设定dnsmasq接管本机的DNS解析请求: # 修改dnsmasq的配置文件 [xport@ubuntu ~] $ sudo gedit /etc/dnsmasq.conf
k8s
dnsmasq-2.85.tar.xz dnsmasq-2.85.tar.xz dnsmasq-2.85.tar.xz
由UniFi控制器中的别名/名称替代填充的dnsmasq。 但为什么? 为了弥补UniFi USG对客户端没有主机名别名/替代的事实。 这个怎么运作 它轮询UniFi控制器,并将客户端名称和IP地址写入dnsmasq拾取的文件中。 配置 统一...
DNSmasqWeb基于DNSmasq的开源轻量级DNS解析,DHCP地址分配的开源系统设计【Python运维圈】微信公众号也可以微信搜索Python运维圈技术交流QQ群459457262加群时请注明来自Github一,应用说明本系统可同时提供DNS解析...