原文地址: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. 自己写个 Drools 文件语法检查工具——栈的应用之编译器检测语法错误

    一.背景 当前自己开发的 Android 项目是一个智能推荐系统,用到 drools 规则引擎,于我来说是一个新知识点,以前都没听说过的东东,不过用起来也不算太难,经过一段时间学习,基本掌握.关于 d ...

  2. modelform 使用

    modelForm (1) model的知识点: class UserInfo(AbstractUser): tel = models.CharField(max_length=32) gender ...

  3. 了解Java应用中的开发攻击

    注入式(Inject)攻击是一类非常常见的攻击方式,其基本特征是允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果. 下面是几种主要的注入式攻击途径 ...

  4. 新linux系统上rz 与sz命令不可用

    使用命令进行安装:yum install lrzsz  即可使用

  5. Zstack中任务,事件,消息之间的关系

    Zstack是Zigbee协议的具体实现,在实现的过程中为了能够更好的对各个模块和功能进行管理,所以加入了OSAL(Operating System Abstraction Layer 操作系统抽象层 ...

  6. oracle中的异常处理方法

    异常处理create or replace procedure prc_get_sex (stuname student.name%type) as stusex student.sex%type; ...

  7. JS等比例缩放图片,限定最大宽度和最大高度

    JS等比例缩放图片,限定最大宽度和最大高度 JavaScript //图片按比例缩放 var flag=false; function DrawImage(ImgD,iwidth,iheight){ ...

  8. kafka监控搭建

    1. 下载 wget https://github.com/quantifind/KafkaOffsetMonitor/releases/download/v0.2.1/KafkaOffsetMoni ...

  9. 自动配置@Resource与@Autowired

    总结自:https://www.cnblogs.com/kuotian/p/8795812.html 试用情形:bean的某个成员变量是另一个bean 如果使用配置: <bean id=&quo ...

  10. mybatis家族

    mybatis 优秀的持久层框架,它支持定制化SQL.存储过程以及高级映射. 备注:通过mapper实现数据库与实体类相互映射 MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果 ...