原文地址: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. java 并发——理解 wait / notify / notifyAll

    一.前言 前情简介: java 并发--内置锁 java 并发--线程 java 面试是否有被问到过,sleep 和 wait 方法的区别,关于这个问题其实不用多说,大多数人都能回答出最主要的两点区别 ...

  2. dubbo总结

     一 .Dubbo产生背景 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键. 垂直应用架构当访 ...

  3. Tomcat之并发优化

    1.位置:      (1)/opt/tomcat7/conf下的server.xml文件中<Connector>节点的配置优化,记得先备份.      (2)出厂默认(在server.x ...

  4. python3_Logging模块详解

    python的logging模块提供了通用的日志系统,可以方便第三方模块或应用使用. 简单使用 import logging # logging.config.fileConfig("./l ...

  5. spark + yarn调试问题java.nio.channels.ClosedChannelException

    spark客户端提交任务至yarn,后台抛错,FinalStatus:UNDEFINED. ./spark-submit  --class org.apache.spark.examples.Spar ...

  6. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

    1.主要完成的任务是能够将英文转译为法文,使用了一个encoder-decoder模型,在encoder的RNN模型中是将序列转化为一个向量.在decoder中是将向量转化为输出序列,使用encode ...

  7. jenkins邮箱配置以及结合ansible进行批量构建

    tomcat8.5以上版本,jenkins2.7以上版本 首先填写你的系统管理员邮件地址,否则会使用jenkins系统本身的邮箱 填写的163邮箱,通过smtp认证填写正确的账号和密码(注意这里的密码 ...

  8. 20145240《网络对抗》逆向及Bof基础实践

    逆向及Bof基础实践 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包 ...

  9. dd命令参数解析

    seek=N : 跳过N个输出块 skip=N : 跳过N个输入块 注意:sd卡的每个扇区的大小统一为512个字节

  10. set /p= 详解

    在批处理中回显信息有两个命令,echo和set /p=<nul,它们的共同点在于都是对程序执行信息的屏幕输出,区别在于echo是换行输出,而set /p=<nul是不换行追回输出,这样说大 ...