如何利用Dnsmasq构建小型集群的本地DNS服务器
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
上次我们介绍了如何在Windows Server中构建DNS服务器:如何在Windows Server2008搭建DNS服务并配置泛域名解析。
不少朋友表示非常有用,但是觉得比较繁琐,在问是否还有更简单的办法。答案显然是,Yes。
那么今天我们来介绍一个更简单的办法,通过Dnsmasq来搭建DNS服务器并实现泛域名解析。讲真,这款软件搭建域名解析,是我见过的最简单的方案,已经被我成功使用到许多PoC等测试环境的中,在不超过100台服务器的集群规模情况下, Dnsmasq还是能比较好支持,服务器的性能还是有不错的表现。
当然,Dnsmasq最大的问题也是在于此,当集群的规模超过100台,还是强烈建议大家用专业的DNS服务器软件来进行域名解析。
- 内容概述
1.Dnsmasq简介
2.Dnsmasq安装
3.Dnsmasq配置
4.客户端测试
5.常见问题
- 测试环境
1.RedHat7.2
2.采用sudo权限的ec2-user用户
2.Dnsmasq简介
Dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能。Dnsmasq官网如下:
http://www.thekelleys.org.uk/Dnsmasq/doc.html
- 主要适用
Dnsmasq可以解决小范围的DNS查询问题,如用于NAT的家庭网络,用modem,cable modem,ADSL设备连接到因特网,对于那些需求低资源消耗且配置方便简单的小型网络(最多可支持1000台主机)是一个很好的选择。如果业务是跨机房、跨地区的话不建议使用Dnsmasq做为DNS解析服务器。
- 支持系统
目前支持该软件的系统包括:Linux (with glibc and uclibc), *BSD, Solaris 和 Mac OS X。
目前支持Dnsmasq的Linux平台包括:Gentoo, Debian, Slackware, Suse, Fedora, Smoothwall, IP-Cop,floppyfw, Firebox, LEAF, Freesco, fli4l, CoyoteLinux, Endian Firewall 和 Clarkconnect。也支持FreeBSD, OpenBSD 和 NetBSD 。也使用在思科的Linksys 无线路由器(dd-wrt, openwrtand the stock firmware)中还有m0n0wall 项目。
3.Dnsmasq安装
Dnsmasq既可以源码安装,同时在主流的Linux系统的repo中已经加入了Dnsmasq,因此也可以直接通过yum和apt-get方式进行安装,下面对此分别介绍下。
- 源码安装
以CentOS为例,安装步骤如下:
从Dnsmasq官网下载(http://www.thekelleys.org.uk/Dnsmasq/),如下:
1.下载Dnsmasq-2.78.tar.gz
[ec2-user@ip-172-31-26-102 ~]$ wget http://www.thekelleys.org.uk/Dnsmasq/Dnsmasq-2.78.tar.gz
2.解压Dnsmasq-2.78.tar.gz到/usr/local目录
[ec2-user@ip-172-31-26-102 ~]$ sudo tar -zxvf Dnsmasq-2.78.tar.gz -C /usr/local/
3.进入/usr/local/Dnsmasq-2.78目录执行如下命令
[ec2-user@ip-172-31-26-102 Dnsmasq-2.78]$ pwd
/usr/local/Dnsmasq-2.78
[ec2-user@ip-172-31-26-102 Dnsmasq-2.78]$ sudo make install
4.安装完毕后,查看下Dnsmasq的版本来验证安装结果。如下:
[ec2-user@ip-172-31-26-102 Dnsmasq-2.78]$ Dnsmasq -v
- yum和apt-get方式安装
1.yum方式安装,如下:
[ec2-user@ip-172-31-21-45 ~]$ sudo yum -y install Dnsmasq
验证是否安装成功
[ec2-user@ip-172-31-21-45 ~]$ Dnsmasq -v
2.apt-get方式安装,如下:
sudo apt-get -y install Dnsmasq
Dnsmasq -v
4.Dnsmasq配置
Dnsmasq安装完毕后,现在我们来配置Dnsmasq。
Dnsmasq配置选项比较多,但在实际使用中,我们实际需进行配置的选项并不多。下面介绍下,平时最常使用的配置方法。
1.打开配置文件
[ec2-user@ip-172-31-26-102 ~]$ sudo vim /etc/Dnsmasq.conf
2.在配置文件末尾添加如下配置
resolv-file=/etc/resolv.Dnsmasq.conf
strict-order
listen-address=172.31.26.102
addn-hosts=/etc/hosts
address=/cdsw-demo.cloudera.com/172.31.26.80
address=/cdsw-demo/172.31.26.80
配置说明:
resolve-file:定义Dnsmasq从哪里获取上游DNS服务器的地址,默认是从/etc/resolv.conf获取。在此我们定义的是从/etc/resolv.Dnsmasq.conf文件中获得。
strict-order:表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
listen-address:定义Dnsmasq监听的地址,默认是监控DNS本机的所有网卡上。如果想让局域网内的其他机器使用Dnsmasq解析域名的话,需要添加本机的IP地址。
address:自定义域名解析的IP地址,在此以cdsw-demo.cloudera.com这个域名为例。注意Dnsmasq是支持泛域名解析的,以上配置就是一个典型的泛域名解析实例。
address:也可以过滤某些网站,比如如果不想让客户端解析youk.com这个域名的话,我们这个把该域名解析到一台不存在的服务器上或者解析到127.0.0.1这个地址。如:address=/ cdsw-demo.cloudera.com/127.0.0.1
3.配置/etc/hosts文件
在安装Dnsmasq的服务器上(不需要在每一台客户端服务器上修改hosts文件),修改/etc/hosts文件,使得其包含集群所有的FQDN,如下图所示:
4.重启Dnsmasq
以上配置完毕后,需要重启Dnsmasq服务,重启完毕后局域网中的其他机器,就可以通过该DNS服务器解析公网的域名。
5.客户端测试
现在我们切换到客户端,修改客户端的DNS配置文件。
1.在centos6中进行解析的方法如下:
修改/etc/resolv.conf文件配置,在nameserver中增加创建的DNS服务器IP地址
测试:
[ec2-user@ip-172-31-26-80 ~]$ nslookup 172.31.26.102
[ec2-user@ip-172-31-26-80 ~]$ nslookup ip-172-31-26-102.ap-southeast-1.compute.internal
泛域名解析
[ec2-user@ip-172-31-26-80 ~]$ nslookup 172.31.26.80
[ec2-user@ip-172-31-26-80 ~]$ nslookup cdsw-demo.cloudera.com
[ec2-user@ip-172-31-26-80 ~]$ nslookup xxx.cdsw-demo.cloudera.com
2.在centos7中进行解析的方法如下:
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 ,加入:DNS1=172.31.26.102#本地DNS服务器IP地址
然后重启网络
[ec2-user@ip-172-31-26-80 ~]$ sudo systemctl restart network
查看/etc/resolv.conf,看DNS配置是否已经自动加入。
重复上述测试,确认DNS的正反向解析及泛域名解析正常工作。
6.常见问题
1.在源码安装时安装报错
解决方法:
[ec2-user@ip-172-31-26-102 ~]$ sudo yum -y install gcc
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花! 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- 对两个有序数组进行合并
- No.016 3Sum Closest
- Java中实现解码字符串的方法,实用代码
- PDF.NET SOD 开源框架红包派送活动 && 新手快速入门指引
- No.015 3Sum
- Java 8新特性——提供了一种可以看作多重继承的默认方法
- WebSocket 学习笔记--IE,IOS,Android等设备的兼容性问题与代码实现
- 关于Shell你想知道的都在这儿
- Java中使用线程时,请不要忘记Spring TaskExecutor组件
- 常见.NET功能代码汇总
- 如何通过追踪代码自动发现网站之间的“关联”
- 教你如何和使用这款强大的渗透平台-Xerosploit
- No.014 Longest Common Prefix
- Java实现解析IP地址的方法,给出一串数字,生成正确的IP地址
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python实现单链表和字典
- 关于如何做好运维管理工作的一点思考
- 2.6-Air302(NB-IOT)-基础外设-AD采集,NTC温度传感器B3950
- 2.5-Air302(NB-IOT)-基础外设-串口(485,422),CRC校验
- 2.3-Air302(NB-IOT)-基础外设-输入检测
- 2.2-Air302(NB-IOT)-基础外设-PWM输出
- API可视化管理平台YApi
- BootStrap应用开发学习入门
- 为什么要学习现代控制理论(机器人方向)?
- 2.XML之编程解析示例笔记
- XML快速入门学习笔记
- Fuzz入门以及在渗透测试中重要性
- 程序设计语言介绍及调试技巧
- 项目开发学习与总结
- Uber三代API 生命周期管理平台实现