原文地址: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. XDU 1011

    解法1:TLE #include<stdio.h> int main() { long long n; //freopen("in.txt","r" ...

  2. Jmeter中解决中文乱码问题

    在使用JMeter过程中,执行结果响应断言总是提示失败,但是使用英文字母可以成功,表示逻辑和其它地方没有问题,问题可能出在编码上,细看了响应数据和日志,其中中文参数被编码成了类似URL编码格式,如下图 ...

  3. $ 一步一步学Matlab(1)——初识Matlab

    本文分四步走策略:第一,Matlab是个什么玩意:第二,为什么要学Matlab:第三,怎样轻松.无痛.少走弯路地学习Matlab:第四,怎样写一个Matlab的Hello World.通过这四步走,达 ...

  4. tomcat进程意外退出的问题分析(转)

    原文链接:http://hongjiang.info/why-kill-2-cannot-stop-tomcat/ 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm ...

  5. urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html

    1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=Fals ...

  6. 详解Java中的clone方法 -- 原型模式

    转自: http://blog.csdn.net/zhangjg_blog/article/details/18369201 Java中对象的创建   clone顾名思义就是复制, 在Java语言中, ...

  7. android - Session 'app': Error Installing APK

    File->Settings->Build,Execuion,Deployment->Instant Run 然后把Enable Instant Run to...那一项的勾去掉就好 ...

  8. jquery 报错 $.cookie is not a function()

    jquery 报错 $.cookie is not a function() ——我是之前可以运行的项目,突然报这个错误,很奇怪. 这是jquery的cookie插件报错. 插件名: jquery.c ...

  9. 如何将JS里变量的值赋给文本框

    举个栗子: <html><HEAD><script type="text/javascript" language="Javascript1 ...

  10. Java环境搭建指南

    1.1 配置Java环境 1.  下载并安装Jdk1.7或Jdk1.8 http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...