原文地址:http://jirry.me/2016/04/19/dnsmasq-on-aliyun/

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

安装

执行如下命令安装 DNSmasq:

1
yum install dnsmasq -y

安装成功后,启动 DNSmasq 服务:

1
service dnsmasq start   # stop / restart

如果启动没有报错,说明 DNSmasq 已经安装成功。

配置

DNSmasq 的默认配置文件是 /etc/dnsmasq.conf,在修改前,为了防止操作失误可以将配置文件备份一下:

1
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

配置 dnsmasq.conf 文件

  1. 使用 vim 打开配置文件
  2. 找到 #resolv-file= 将其修改为 resolv-file=/etc/resolv.dnsmasq.conf。表示从该文件中读取上游 DNS 服务器
  3. 找到 #strict-order 将其前面的注释 # 号去掉。表示强制按照 resolv.dnsmasq.conf 中的上游 DNS 服务器顺序来进行解析
  4. 确认 #no-hosts 是注释状态(前面有 # 号),这样 DNSmasq 才会读取服务器中的 hosts 文件(关于 hosts 的另一个作用,请看这里
  5. 找到 #addn-hosts=/etc/banner_add_hosts 将其修改为 addn-hosts=/etc/dnsmasq.hosts。表示使用 dnsmasq.hosts 代替系统 hosts,这样就可以保证服务器本身的 hosts 文件不受影响
  6. 找到 #listen-address= 将其修改为 listen-address=127.0.0.1,123.45.67.89。这个是重要选项,监听地址,要写上 127.0.0.1 和服务器的外网地址,如:123.45.67.89
  7. 到此,dnsmasq.conf 文件的必要配置已经修改完了,保存并退出配置文件

配置 resolv.dnsmasq.conf 文件

依次执行如下命令来创建 resolv.dnsmasq.conf 文件:

1
2
3
4
5
6
7
# 备份原始 resolv.conf
cp /etc/resolv.conf /etc/resolv.conf.bak echo 'nameserver 127.0.0.1' > /etc/resolv.conf
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' >> /etc/resolv.dnsmasq.conf
echo 'nameserver 114.114.114.114' >> /etc/resolv.dnsmasq.conf

在配置过程中,我并没有执行最后两行命令,而是直接在 /etc/dnsmasq.conf 的最后追加了下面两行内容(据说使用 5353 端口可以避免 DNS 污染):

1
2
server=208.67.222.222#5353
server=208.67.220.220#5353

配置 dnsmasq.hosts 文件

依次执行如下命令来创建 /etc/dnsmasq.hosts 文件:

1
2
cp /etc/hosts /etc/dnsmasq.hosts
echo '127.0.0.1 test.com' > /etc/dnsmasq.hosts

到此,DNSmasq 的所有配置基本已经完成。

开机启动

将 DNSmasq 设置为开机自启动:

1
chkconfig dnsmasq on

重启 DNSmasq 服务:

1
service dnsmasq restart

测试

将本地计算机的 DNS 服务器设为刚配置好的服务器 IP 地址,并清除本地 DNS 缓存,具体清除方法可参考:

打开命令行窗口或终端窗口,执行 ping test.com 并查看 IP 是否为之前设置的 127.0.0.1:

1
2
3
4
5
6
~  ping test.com
PING test.com (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.123 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.119 ms

如果是,则表名 DNSmasq 已经配置成功并可以正常使用了。

调优

打开 dnsmasq.conf 文件,在最下方可以添加指定的 DNS 解析,例如:

1
2
3
4
5
6
# 所有 cn 域名全部使用 114 解析
server=/cn/114.114.114.114 # 指定部分网站使用 114 解析,/qq.com/ 表示所有的 qq.com 域名全部使用 114 解析
server=/qq.com/114.114.114.114
server=/baidu.com/114.114.114.114

技巧

在 配置 dnsmasqconf 文件 小结中的第 4 条提到了 hosts 文件的另一个作用:将 /etc/dnsmasq.hosts 设置好以后,使用该 DNS 服务的计算机就可以无缝翻**了,甚至可以直接将 DNS 配置到无线路由器中,那么所有的移动设备也可以直接无缝翻** 。

DNSmasq搭建DNS服务器的更多相关文章

  1. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  2. 第一次搭建dns服务器

    CentOS 7 搭建DNS服务器 主要参考的是小左先森的一篇博客:https://blog.51cto.com/13525470/2054121. 1.搭建过程中遇到的几个问题说一下: a.在重启服 ...

  3. [转]DNS服务器原理详解与Centos6.x下搭建DNS服务器

    转自:http://blog.it985.com/8958.html DNS 数据库的记录:正解,反解, Zone 的意义 通过DNS解析过程详解这篇文章,我们知道了要想访问www.zmit.cn,最 ...

  4. Centos7 搭建DNS服务器与原理配置详解

    在搭建我们自己DNS服务器之前,先必须了解下DNS服务器的作用和原理. DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP ...

  5. Windows Server 2008 R2 搭建DNS服务器(转)

    Windows Server 2008 R2 搭建DNS服务器将本机IP设为首选DNS服务器的地址在dos 下分别输入 nslookup www.mydns.com 和 nslookup 192.16 ...

  6. centos搭建dns服务器

    前言:搭建dns服务器,dns服务器我就不多说什么了,大家都懂,就是域名解析,就将ip装换为域名,域名就可以理解为类似这样的www.baidu.com网址,接下来我就直接上图了.这里面最重要的是修改u ...

  7. Linux系统下搭建DNS服务器——DNS原理总结

    2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公 ...

  8. 快速搭建 DNS 服务器: skydns + etcd

    参考: [ skynetservice github ] [ skydns 测试记录 CSDN ] etcd 安装配置 安装 yum install etcd 配置 sed -i 's@ETCD_LI ...

  9. Centos7.3搭建DNS服务器--BIND

    1.系统环境说明 [root@dns-server etc]# cat /etc/redhat-release CentOS Linux release (Core) 防火墙和Selinux关闭 [r ...

随机推荐

  1. 多路选择I/O

    多路选择I/O提供另一种处理I/O的方法,相比于传统的I/O方法,这种方法更好,更具有效率.多路选择是一种充分利用系统时间的典型. 1.多路选择I/O的概念 当用户需要从网络设备上读数据时,会发生的读 ...

  2. QML Image Element

    QML Image Element The Image element displays an image in a declarative user interface More... Image元 ...

  3. 深入学习js之——词法作用域和动态作用域

    开篇 当我们在开始学习任何一门语言的时候,都会接触到变量的概念,变量的出现其实是为了解决一个问题,为的是存储某些值,进而,存储某些值的目的是为了在之后对这个值进行访问或者修改,正是这种存储和访问变量的 ...

  4. java问卷调查

    你对自己的未来有什么规划?做了哪些准备? 我对自己今后五年有一定的规划,那就是多学一些信息技术上的知识,当今的社会高度信息化,且在以后也有高速发展的势头,所以我认为只有学习足够的专业知识,才可以适应未 ...

  5. 20162314 Sortingtest-work after class

    20162314 Sortingtest-work after class Content Data : 90 8 7 56 123 235 9 1 653. Use JDB or IDEA to t ...

  6. POJ 2051 argus(简单题,堆排序or优先队列)

    又是一道数据结构题,使用堆来进行权值调整和排序,每次调整都是o(n)的复杂度,非常高效. 第一眼看题觉得可以用优先队列来做,应该也很简单. 事实上多数优先队列都是通过堆来实现的. 写的时候还是出了一些 ...

  7. PHP设计模式(四):生成器模式

  8. 爬虫框架Scrapy之Downloader Middlewares

    反反爬虫相关机制 Some websites implement certain measures to prevent bots from crawling them, with varying d ...

  9. dijkstra算法理解+模板

    2017-09-17 21:10:45 writer:pprp 看了看dijkstra算法,用自己语言总结一下主要过程吧, 首先,明确这个算法用处是在于计算单源最短路径问题并且边权非负,给出一个起点可 ...

  10. Dokcer ELK

    使用 docker 搭建 ELK  非常简单 docker run --name myes -d -p 9200:9200 -p 9300:9300 elasticsearch:2.4.4   运行  ...