一、DNS的由来

  1. 因为IP地址不容易记忆,所以有了DNS。<br />简单举例:<br />我们平常访问百度都是www.baidu.com,但是我们知道百度的IP地址吗? 我们直接输入地址39.156.66.14也是 可以访问百度的。<br />

二、域名

  1. 由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNSDomain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。<br />顶级域名为.com 顶级域名如 baidu.com 再往下以此类推例如百度翻译 [fanyi.baidu.com](https://fanyi.baidu.com/) 但是要去掉www<br />更多关于域名的了解可以访问[https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D/2152551?fr=aladdin](https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D/2152551?fr=aladdin)<br />

三、hosts文件

windows和Linux系统都有一个hosts文件。
win10的文件位置是在C:\Windows\System32\drivers\etc
centos7的文件位置是在/etc/hosts
hosts文件的作用:其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。

四、为什么要学DNS服务器?

假设在一家中小型公司我们有很多的web服务。例如:
10.30.59.239/nextcloud/ 班级网盘
10.30.59.192/ vcenter
10.30.59.191 esxi
10.30.59.251 zabbix
10.30.59.245:8443 堡垒机
这些IP地址混乱无章,记忆起来是不是很麻烦。
如果我换成www.esxi.com 这样会方便记忆

五、DNSmasq简介

1.DNSmasq介绍

  1. DNSmasq是一个小巧且方便地用于配置DNSDHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

2.原理

$EY(C8F7V_FF{I7K@{J9}FE.png

六、DNSmasq安装配置

1、基础环境准备

新建一台虚拟机,可以链接外网。
修改网络配置文件
① 打开VMware 虚拟网络编辑器 选择相应的网络
NAT或host-only
② 打开Windows对应的虚拟网卡
vmnet1(host-only) 和 vmnet8(NAT)
③ 配置虚拟网络编辑器对应的ip段
192.168.100.0
④ 进入Linux,打开终端,修改配置文件

  1. vim /etc /sysconfig /network-scripts/ifcfg-ens33
  2. **修改内容如下**:
  3. BOOTPROTO=static ###
  4. ONBOOT=yes ###
  5. IPADDR=192.168.100.10 ###
  6. NETMASK="255.255.255.0" # centos7可以不配
  7. GATEWAY=192.168.100.2 ###
  8. DNS1=8.8.8.8 ###
  9. DNS2=114.114.114.114 # 可以不配置

⑤ 重启网络
systemctl restart network
克隆如果网络启动不了:
查看

  1. systemctl status network,如果是control process exit这个错误,需要关闭网络管理工具
  2. systemctl stop NetworkManager //临时关闭 即时生效
  3. systemctl disable NetworkManager //永久关闭 重启以后才生效,要不然光设置此项没效果

⑥ 关闭Linux的防火墙

  1. systemctl stop firewalld //临时修改
  2. systemctl disable firewalld //永久修改

⑦ 关闭selinux

  1. getenforce //查看
  2. setenforce 0 //临时修改
  3. vim /etc/selinux/config //永久修改
  4. SELINUX=disabled

2. DNSmasq安装

  1. yum install -y dnsmasq
  2. Complete!

3. 修改主配置文件

  1. [root@localhost ~]# vim /etc/dnsmasq.conf
  2. conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig //在这一行下面加入以下内容
  3. port=53
  4. cache-size=1000
  5. log-queries
  6. log-facility=/var/log/dnsmasq.log
  7. conf-dir=/etc/dnsmasq.d
  8. addn-hosts=/etc/hosts
  9. resolv-file=/etc/dnsmasq-resolv.conf

port=53 #dnsmasq使用53号端口。
cache-size=1000 #缓存解析记录1000条。
log-queries #日志显示每一条的解析记录。
log-facility=/var/log/dnsmasq.log #log日志的所在位置。
conf-dir=/etc/dnsmasq.d #dnsmasq.d/*.conf文件的绝对路径
addn-hosts=/etc/hosts #添加额外读取的hosts文件。
resolv-file=/etc/dnsmasq-resolv.conf #定义dnsmasq从哪里获取上游DNS服务器的地址。

4. 复制系统的DNS服务配置为dnsmasq的上游DNS服务器地址

  1. cp /etc/resolv.conf /etc/dnsmasq-resolv.conf

5. 编写映射文件

  1. 映射文件,所有在/etc/dnsmasq.d/目录下的以.conf结尾的文件都可以被解析
  1. [root@localhost ~]# cd /etc/dnsmasq.d/
  2. [root@localhost dnsmasq.d]# vim jumpserver.conf
  3. address=/www.jumpserver.com/10.30.59.245
  4. ptr-record=10.30.59.245.in-addr.arpa,www.jumpserver.com
  5. [root@localhost dnsmasq.d]# cat jumpserver.conf
  6. address=/www.jumpserver.com/10.30.59.245
  7. ptr-record=10.30.59.245.in-addr.arpa,www.jumpserver.com

6. 编写hosts文件

  1. [root@localhost dnsmasq.d]# vi /etc/hosts
  2. 10.30.59.245 www.jumpserver.com

7. 测试

  1. [root@localhost dnsmasq.d]# systemctl restart dnsmasq //启动服务
  2. [root@localhost dnsmasq.d]# systemctl stop firewalld //关闭防火墙
  3. [root@localhost dnsmasq.d]#

七、Dnsmasq的后期维护

1. 添加解析记录

首先,在hosts里面添加记录,格式为IP空格域名。
其次,编写dnsmasq.d/*.conf的配置文件,格式为
address=/域名/IP
ptr-record=IP.in-addr.arpa,域名
最后,重启dnsmasq,systemctl restart dnsmasq。

2. 配置dnsmasq的日志轮转

  1. 由于打开了dnsmasq的日志功能,而且每一条解析都会产生一条记录,经观察,log文件一天能写8M左右,所以配置日志轮转防止系统因存储不足而崩溃,logrotate.d下面的dnsmasq配置如下:
  1. [root@localhost dnsmasq.d]# vim /etc/logrotate.d/dnsmasq
  2. /var/log/dnsmasq.log {
  3. daily
  4. copytruncate
  5. missingok
  6. rotate 30
  7. compress
  8. notifempty
  9. dateext
  10. size 200M
  11. }

/var/log/dnsmasq.log {
daily #指定转储周期为每天。
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断。
missingok #日志轮转期间,任何错误都将被忽略。
rotate 30 #保留30天。
compress #通过gzio压缩转储旧的日志。
notifempty #如果是空文件的话,不转储。
dateext #日志轮转时会在文件后面添加时间。
size 200M #日志到达200M时才轮转。
}