如何利用Dnsmasq构建小型集群的本地DNS服务器

时间:2022-05-06
本文章向大家介绍如何利用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实操