(DNS)dnsmasq部署DNS
转自:https://www.hi-linux.com/posts/30947.html
Dnsmasq提供DNS缓存和DHCP服务、Tftp服务功能。作为域名解析服务器(DNS),Dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器,Dnsmasq可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。Dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个PXE服务器。
Dnsmasq工作原理
当接受到一个DNS请求时,Dnsmasq首先会查找/etc/hosts
这个文件,然后查找/etc/resolv.con
f中定义的外部DNS。所以说Dnsmasq是一个很不错的外部DNS中继。
配置Dnsmasq为DNS缓存服务器,同时在/etc/hosts
文件中加入本地内网解析,这样一来每当内网机器查询时就会优先查询hosts文件,这就等于将/etc/hosts
共享给全内网机器使用,从而解决内网机器互相识别的问题。相比逐台机器编辑hosts文件或者添加Bind DNS记录,仅编辑一个hosts文件,这简直太容易了。
安装Dnsmasq
- Ubuntu/Debian
1 |
$ apt-get install dnsmasq |
- Centos/RHEL
1 |
$ yum install dnsmasq |
配置Dnsmasq
Dnsmasq处理DNS设置与BIND等其他DNS服务有所不同。所有的配置都在一个文件中完成/etc/dnsmasq.conf
。默认情况下dnsmasq.conf中只开启了最后include项,可以在/etc/dnsmasq.d
中自己写任意名字的配置文件。
配置文件说明
Dnsmasq配置文件是/etc/dnsmasq.conf
,下面对Dnsmasq中和DNS相关的配置项进行说明。
1 |
用指定的端口代替默认的DNS 53端口,如果设置为0,则完全禁止DNS功能,只使用dhcp服务 |
配置实例
配置上游服务器地址
resolv-file配置Dnsmasq额外的上游的DNS服务器,如果不开启就使用Linux主机默认的/etc/resolv.conf
里的nameserver。
- 通过下面的选项指定其他文件来管理上游的DNS服务器
1 |
$ vi /etc/dnsmasq.conf resolv-file=/etc/resolv.dnsmasq.conf |
- 在指定文件中增加转发DNS的地址
1 |
$ vi /etc/resolv.dnsmasq.conf nameserver 8.8.8.8 |
本地启用Dnsmasq解析
1 |
$ vi /etc/resolv.conf nameserver 127.0.0.1 |
添加解析记录
- 使用系统默认hosts
编辑hosts文件,简单列举一下格式
1 |
$ vi /etc/hosts 127.0.0.1 localhost |
hosts文件的强大之处还在于能够劫持解析,譬如mirror.centos.org是CentOS仓库所在,几乎是机器正常必访问一个域名,我将它解析成一个内网地址,搭建一个内网镜像站,不仅内网机器也可以及时得到安全更新,每月还可以节省很多流量。
- 使用自定义hosts文件
修改配置,增加自定义hosts文件位置。
1 |
$ vi /etc/dnsmasq.conf addn-hosts=/etc/dnsmasq.hosts |
在/etc/dnsmasq.hosts文件中添加DNS记录
1 |
$ vi /etc/dnsmasq.hosts 192.168.101.107 web01.mike.com web01 |
- 使用自定义conf
1 |
$ vi /etc/dnsmasq.d/address.conf # 指定dnsmasq默认查询的上游服务器,此处以Google Public DNS为例。 |
注:也可以直接添加到/etc/dnsmasq.conf中,不过/etc/dnsmasq.d/*.conf的优先级大于/etc/dnsmasq.conf。
修改iptables配置
- 允许本机的53端口可对外访问
1 |
$ iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT |
- 转发DNS请求
1 |
# 开启流量转发功能 |
- 保存规则并重启
1 |
$ service iptables save |
测试Dnsmasq
- 启动Dnsmasq
1 |
$ service dnsmasq start |
- 测试Dnsmasq
将其他机器的DNS换成dnsmasq所在的IP即可,就这么容易。
1 |
$ dig @192.168.101.104 www.hi-linux.com |
一些Dnsmasq技巧
Dnsmasq性能优化
我们都知道Bind不配合数据库的情况下,经常需要重新载入并读取配置文件,这是造成性能低下的原因。根据这点教训,我们可以考虑不读取/etc/hosts
文件。而是另外指定一个在共享内存里的文件,比如/dev/shm/dnsrecord.txt
,这样就不费劲了,又由于内存的非持久性,重启就消失,可以定期同步硬盘上的某个内容到内存文件中。
具体实现步骤
- 配置dnsmasq
1 |
$ vim /etc/dnsmasq.conf no-hosts |
- 解决同步问题
1 |
# 开机启动 |
Dnsmasq选择最快的上游DNS服务器
经常会有这样的情景,Dnsmasq服务器配了一堆上游服务器,转发本地的dns请求,缺省是Dnsmasq事实上是只挑了一个上游dns服务器来查询并转发结果,这样如果选错服务器的话会导致DNS响应变慢。
解决方法
1 |
$ vi /etc/dnsmasq.conf all-servers |
all-servers表示对以下设置的所有server发起查询,选择回应最快的一条作为查询结果返回。
上面我们设置了两个dns server,8.8.8.8(谷歌dns)和219.141.136.10(移动的dns),会同时查询这两个服务器,询问dns地址谁返回快就采用谁的结果。
dnsmasq-china-list项目
dnsmasq-china-list项目维护了一张国内常用但是通过国外DNS会解析错误的网站域名的列表,保证List中的国内域名全部走国内DNS服务器解析。
项目地址: https://github.com/felixonmars/dnsmasq-china-list
dnsmasq-china-list使用
- 取消dnsmasq.conf里conf-dir=/etc/dnsmasq.d这一行的注释
- 获取项目文件
1 |
$ git clone https://github.com/felixonmars/dnsmasq-china-list.git |
- 将accelerated-domains.china.conf, bogus-nxdomain.china.conf,google.china.conf(可选)放到/etc/dnsmasq.d/目录下(如目录不存在则建立一个)。
- 将
dnsmasq-update-china-list
放到/usr/bin/
,这是一个批量修改DNS服务器的工具(可选)。
参考文档
http://www.google.com
http://purplegrape.blog.51cto.com/1330104/1083354
https://i-meto.com/archives/iptables_PREROUTING.html
http://blog.itphp.org/archives/225
(DNS)dnsmasq部署DNS的更多相关文章
- DNSmasq – 配置DNS和DHCP
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络.它提供了DNS功能和可选择的DHCP功能可以取代dhcpd(DHCPD服务配置)和bind等服务,配置起来更简单,更适用 ...
- docker快速部署DNS,实现快速上线
概念Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.这里我将使用do ...
- Kubernetes集群部署DNS插件
准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...
- DNS单机部署以及智能dns部署
dns理论 dns的出现 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linu ...
- Linux 自动化部署DNS服务器
Linux 自动化部署DNS服务器 1.首先配置主DNS服务器的IP地址,DNS地址一个写主dns的IP地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加 ...
- 《linux就该这么学》第十四节课:第13章,部署DNS域名解析服务(bind服务)
(借鉴请改动) 第十二章收尾 12.2.nfs网络文件系统 RHEL7默认安装了nfs,配置文件在 /etc/export 写入格式:共享目录 允许的客户端(参数) ro ...
- linux系统下部署DNS正向解析
DNS服务概述: DNS(Domain Name System)域名系统,能够提供域名与IP地址的解析服务. 正向解析 正向解析是指域名到IP 地址的解析过程. 部署DNS正向解析 DNS服务的三个配 ...
- DNS解析原理与Bind部署DNS服务
DNS是什么? DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址.反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提 ...
- k8s部署dns
硬件环境: 两台虚拟机, 10.10.20.203 部署docker.etcd.flannel.kube-apiserver.kube-controller-manager.kube-schedule ...
随机推荐
- MySQL表名不区分大小写的设置方法
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...
- html5+php实现文件拖动上传功能
界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选择文件上传 ...
- sublime 技巧与快捷键篇
技巧大全:https://www.zhihu.com/question/24896283 项目排除文件夹,更便于ctrl + p的搜索,比如可恶的node_modules "folder ...
- Android之四大组件、六大布局、五大存储 总结
Android之四大组件.六大布局.五大存储 一.四大组件:Android四大组件分别为activity.service.content provider.broadcast receiver. ...
- 谈谈MySQL的黑暗语法
[MySQL在SQL标准下实现了自己的一套SQL语句] 每种数据库都会在继承标准SQL的基础上有所发展,比如SQL-SERVER在这个基础之上发展出来的SQL“方言”就叫“T-SQL”,MySQL 发 ...
- MySQL 忘记root密码的两种处理方法
[背景] 由于各个原因,我遇到过不只一次我服务的客户忘记了MySQL的root密码:如果是普通用户还好,我们可以用root用户去改它的密码,要命 的是把root给丢了! 对于MySQL来说如果你忘记了 ...
- ubuntu 14.04安装mysql数据库
1. apt-get install mysql-server mysql-client 输入root的密码: 确认root的密码: 2. 连接测试是否成功:mysql –hlocalhost –ur ...
- Mysql Server系统架构介绍
总的来说,MySQL可以看成是二层架构. 第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query ...
- 在 Unity 中基于 Oculus DK1 的开发
开发环境: Windows 10 专业版 64位(GeForce GTX 970M,驱动版本:378.72) 大朋助手 1.3.2.10,大朋E2(http://www.deepoon.com/dap ...
- [sql]mysql指引(整理中...)-对db的分类
参考 db存储及分层 一个db一个文件夹. 一张表两个文件frm是存表结构的,ibd是存数据的 连接层: sock ip sql层: 存储层: 2018年4月1日 20:53:54小结: 时间太久,抓 ...