`

(转载)利用 Dnsmasq 搭建自己的 DNS 服务器

 
阅读更多

利用 Dnsmasq 搭建自己的 DNS 服务器

Oct 1st, 2012 | Comments

 

前言

最近新买了 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 看到一大片内容就吓到了.

  1. 首先配置 resolv-file=/etc/resolv.dnsmasq.conf 这个参数表示 dnsmasq 会从这个指定的文件中寻找上游 dns 服务器
  2. 将 127.0.0.1 添加到 /etc/resolv.conf 文件的第一行中, 让系统首先寻找本地的 dnsmasq 服务器取消注释的 strict-order 表示严格安装 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止
  3. 确保注释掉 no-hosts, 默认情况下这是注释掉的, dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游 dns 服务器寻找.
  4. 设置 listen-address=127.0.0.1, 表示这个 dnsmasq 本机自己使用有效.
  5. 这里有一个坑 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
# 让操作系统去 127.0.0.1 找 dnsmasq
nameserver 127.0.0.1
resolv.dnsmasq.conf
1
2
3
4
# 让 v2ex(这些) dns 的地址成为 dnsmasq 的上游 DNS
nameserver 199.91.73.222
nameserver 8.8.8.8
nameserver 8.8.4.4
dnsmasq.conf
1
2
3
resolv-file=/etc/resolv.dnsmasq.conf
strict-order
listen-address=192.168.1.100,127.0.0.1

上面设置好以后, 让我们把 dnsmasq 启动起来吧:

  1. 手动启动: sudo dnsmasq just it.
  2. 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
wyatt ~$ dig google.com
; <<>> DiG 9.7.3-P3 <<>> google.com.hk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28003
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com.          IN  A
;; ANSWER SECTION:
google.com.       0   IN  A   74.125.235.131
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 22 22:49:42 2012
;; MSG SIZE  rcvd: 47

dig baidu.com +short 仅仅查看解析的 ip

1
2
3
220.181.111.85
220.181.111.86
123.125.114.144

将电脑开启 dnsmasq, 然后将 iPad mini 连接进入局域网, 将 DNS 服务处第一个设置成 dnsmasq 服务器所在的 ip, 第二个设置成 V2EX 的, 第三个设置为 8.8.8.8 (用英文,隔开). 这回, 从 App Store 下载应用的时候, 总算能够看到明显的进度条滚动了 T.T

分享到:
评论

相关推荐

    在OpenWRT路由器上配置DNS服务器

    在这里,你可以设置DNS转发规则,例如指定主DNS服务器和备用DNS服务器,以便dnsmasq将未解决的查询转发到这些服务器。例如,添加以下行来指定Google公共DNS: ``` server=/#/8.8.8.8 server=/#/8.8.4.4 ``` 3. ...

    linux系统下DNS服务器的搭建共16页.pdf-文档整

    本教程将深入探讨如何在Linux环境下搭建DNS服务器,涵盖关键的概念、步骤以及常用命令。 首先,DNS服务器的核心组件是BIND(Berkeley Internet Name Domain),这是一个开源的、广泛使用的DNS服务器软件。在Linux...

    linux动态DNS服务器架设

    在Linux上搭建动态DNS服务器,我们通常会选择开源软件如Bind、PowerDNS或dnsmasq。本示例中,我们以Bind为例,它是最广泛使用的DNS服务器软件之一。Bind支持各种功能,包括动态更新。 1. **安装Bind**:在大多数...

    dns一键安装脚本

    使用时,管理员只需解压文件,按照文档指示运行脚本,就能快速地在本地系统上搭建起DNS服务器。这种方法对于初学者或需要快速部署DNS服务的场景非常有用,大大减少了手动配置带来的错误和时间成本。 需要注意的是,...

    DNSmasq.docx

    - **上游DNS服务器**:指定上游DNS服务器的配置文件,DNSmasq会将无法解析的请求转发给这些服务器进行处理: ```bash resolv-file=/etc/dnsmasq-resolv.conf ``` 完成上述配置后,需要重启DNSmasq服务使配置生效...

    Linux网络服务与应用实训报告.pdf

    2. **实验环境**:通常在Linux环境中,可以使用BIND或dnsmasq等软件搭建DNS服务器。实验环境可能包括一台或多台运行Linux的服务器,配置包括安装DNS服务器软件、设置区域文件、配置名称服务器等。 3. **搭建DNS...

    Linux配置邮件服务器

    - 安装dnsmasq,这是一款轻量级的DNS服务器,通过`yum install -y dnsmasq`命令进行安装。 - 修改dnsmasq配置文件,添加必要的行,然后启动并设置开机启动。 3. **系统环境配置**: - 修改主机名为`mail.mail....

    dnslog server

    它通常设置为DNS代理服务器,接收并处理来自客户端的DNS请求,然后将这些请求转发到实际的DNS服务器。在此过程中,DNSlog Server会保存所有的查询记录,包括请求的域名、查询时间、源IP地址等信息,这对于网络安全...

    Linux经典课件和实验项目

    通过配置BIND或dnsmasq等DNS服务器,学习者可以理解DNS的工作原理,学会创建区域记录,进行解析服务。 NFS服务器的配置涉及到Network File System(网络文件系统),允许不同系统间共享文件。通过配置NFS,用户可以...

    Linux下配置ipv6 dhcp

    在Linux环境下配置IPv6 DHCP服务不仅能够自动分配IPv6地址,还能提供其他重要的网络配置信息,如默认网关和DNS服务器地址等,从而进一步提高了网络的可靠性和易用性。随着IPv6的广泛应用和技术的不断成熟,未来IPv6...

    wifi-ap:Wifi-AP 为 hostapd 和 dnsmasq 及其各自的配置文件提供了一个库包装器,允许在基于 Debian 的 Linux 环境中以编程方式创建接入点

    hostapd 是一个用于将普通 Wi-Fi 接口转变为无线接入点的软件,而 dnsmasq 是一个轻量级的 DNS 和 DHCP 服务器,用于小型网络。这两个组件协同工作,为用户提供了一个能够连接到的无线网络。 **hostapd 介绍** ...

    pxe-installer:将 Ubuntu 14.04 设置为 OS 安装的 PXE 服务器

    配置dnsmasq(DHCP服务器、DNS服务器、TFTP服务器) 准备 PXE 启动文件 提取安装程序 如何使用 添加 Ubuntu 14.04 服务器 ISO(配置为:ubuntu-14.04.1-server-amd64.iso) 添加 ESXi 5.5 ISO(配置为:Vmware-...

    完全手册Linux系统管理与网络服务器电子教程

    3. **DNS服务器**:使用BIND或Dnsmasq配置域名解析服务,理解区域传输、MX记录、A记录等DNS概念。 4. **邮件服务器**:搭建Postfix或Exim邮件系统,配置SMTP和POP3服务,实现邮件收发。 5. **数据库服务器**:安装...

    局域网内网站的发布.pdf

    - 对于更高级的配置需求,可以考虑在局域网内搭建自己的DNS服务器。这通常涉及到在Linux服务器上安装并配置DNS服务器软件,如BIND或dnsmasq,并设置相应的域名解析规则。 #### 3. 如何发布静态网页到局域网 - **...

    shutit-linux-dns

    综合以上信息,"shutit-linux-dns"项目是一个利用Vagrant和VirtualBox创建虚拟环境,通过Git进行版本控制,使用Python和ShutIt自动化部署和配置Linux DNS服务器的解决方案。它可能包含用于安装、配置DNS软件(如bind...

    RedHat Linux网络服务器构架培训教程.doc

    通过本指南,用户能够掌握如何搭建一个标准的企业级开发服务器。 #### 二、文档原则与目标 1. **力求简明**:确保每一步都清晰明确,去除不必要的步骤。 2. **系统全面**:覆盖从操作系统安装到服务配置的全过程。 ...

    linux管理员教程视屏二

    本教程将涵盖网络服务的设置,包括DNS服务器(bind或dnsmasq)、DHCP服务器的配置,以及电子邮件服务器(Postfix或Exim)的搭建。你将学习如何配置Web服务器,如Apache或Nginx,以支持静态和动态内容,并理解SSL/TLS...

    UOS桌面系统PXE部署指南

    - Dnsmasq是一个轻量级的DNS和DHCP服务器,它在PXE部署中扮演重要角色。配置包括设定网络参数和DNSMASQ服务,以响应PXE客户端的IP地址请求并提供启动引导文件的位置信息。 在实际操作中,部署UOS桌面系统需要细心...

    pi-ap:Raspberry Pi接入点:此存储库自动配置hostapd,dnsmasq,dhcpcd和wpa_supplicant的配置,以将Pi转换为无线AP。 要求:具有“网络连接”或与该路由器连接的交换机的路由器上的Pi,以太网电缆和启用DHCP的端口

    在pi-ap项目中,dnsmasq负责为连接到Pi的设备分配IP地址,同时它还可以作为本地DNS解析器,将设备的域名查询转发到互联网上的公共DNS服务器。 3. **dhcpcd**: 这是一个DHCP客户端,它帮助Raspberry Pi获取来自...

Global site tag (gtag.js) - Google Analytics