Linux——DNS(正向解析+反向解析+多域配置+主从配置)
Posted 何翰宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux——DNS(正向解析+反向解析+多域配置+主从配置)相关的知识,希望对你有一定的参考价值。
文章目录
一、DNS概念
1. 什么是DNS
DNS(domain name system ) 域名管理系统
域名:
由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。
计算机到IP地址,互联网中的计算机都是通过IP地址进行互相访问的,但是由于ip地址太过复制不方便记忆。就用域名来代替IP实现计算机的访问。
从域名经过DNS服务器的转换变成IP地址
2. DNS的正向解析
域名的正向解析:将域名转换为ip地址
将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机
3. DNS的反向解析
域名的反向解析:将IP转换为对应的域名
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名
4. DNS的结构
域名:www.baidu.com
DNS结构:www.baidu.com.
=> 从右向左解析
1)根域名(.)
- 在整个DNS系统的最上方一定是
.
(小数点)这个DNS服务器称为root,就叫根域 - 根域:全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。
2)一级域名
-
.com
: 商业公司 -
.net
:互联网公司 -
.edu
:教育(中小学、高中、大学…) -
.gov
:政府 -
.io
:存储设备,redis -
.cn
:中国域名(国家域)
3)二级域名
说法不一样,有些可能说baidu.com是一级域名也有的说,www.baidu.com才是二级域名
qq.com.
baidu.com.
google.com
5. DNS工作原理
6. dig工具
dig工具可以用来查看dns的解析过程
安装命令: yum install bind-utils -y
- 追踪DNS的解析过程:
dig +trace [域名]
[root@samba ~]# dig -trace www.baidu.com
;; Warning, ignoring invalid type race
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -trace www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21383
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 564 IN CNAME www.a.shifen.com.
www.a.shifen.com. 149 IN A 183.232.231.174 #ip1
www.a.shifen.com. 149 IN A 183.232.231.172 #ip2
;; Query time: 9 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) #DNS服务器
;; WHEN: Mon Jul 18 21:27:36 CST 2022
;; MSG SIZE rcvd: 90
[root@samba ~]#
- 正向解析:
dig [域名]
- 反向解析:
dig -x [ip]
二、DNS服务器的搭建
1. DNS服务器软件介绍(Bind)
DNS 的域名解析都是 udp/53
, 主从之间的**数据传输默认使用tcp/53
DNS服务器端软件:
Bind
是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
2. 环境准备
三台LInux主机
主机名 | ip | 作用 |
---|---|---|
client | 192.168.44.150 | client客户端,用来测试dns |
dns | 192.168.44.151 | dns服务器,用来实现域名解析 |
web | 192.168.44.152 | web服务器,用于搭建内部web服务 |
关闭防火墙和SELinux
命令:systemctl stop firewalld
systemctl disable firewalld
关闭SELinux
命令:setenforce 0
修改vim /etc/selinux/config
SELINUX=disabled
3. 安装DNS软件
在dns机器上:yum install bind -y
查看软件是否安装成功
[root@dns ~]# rpm -q bind
bind-9.11.4-26.P2.el7_9.9.x86_64
查看已经安装的软件的文件列表
命令:rpm -ql bind
# rpm -ql bind
# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named
三、 DNS正向解析配置
/etc/named.conf
主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)
-/etc/named.rfc1912.zones
主要定义域名如何解析(正向解析),解析到具体哪个IP地址
1)对配置文件进行备份
为了防止配置文件被改坏,我们先对named.conf
以及named.rfc1912.zones
配置文件进行备份。
[root@dns etc]# cp /etc/named.conf /etc/named.conf.bak
[root@dns etc]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
2)修改named.conf主配置文件
修改配置文件:vim /etc/named.conf
修改第13行和21行,添加any;
# 定义监听端口、监听方式、允许查询来源
options
// 定义监听方式 any代表全网监听
listen-on port 53 127.0.0.1;any; ;
listen-on-v6 port 53 ::1; ;
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// 允许任何人来查询
allow-query localhost;any; ;
3)修改子配置文件
子配置文件named.rfc1912.zones
定义DNS服务器管理哪些领域
zones子配置文件(域名应该指向哪个IP地址)
命令:vim /etc/named.rfc1912.zones
在文件末尾添加
# 正向 ,表示linux.com这个域名从linux.com.zone这个配置文件中获取ip
zone "linux.com" IN
type master;
file "linux.com.zone";
allow-update none; ;
;
在vim 中
:13, 17 co 42,
表示把13到17行复制到42行以后
4)定义正向解析
在/var/named
目录创建test.hhy.zone文件定义正向解析
[root@dns etc]# cd /var/named/
[root@dns named]# cp -p named.localhost linux.com.zone
-p
表示保留文件的原有属性
5)编辑test.hhy.zone文件,定义域名的指向
vim test.hhy.zone
在最后一行添加:www A web主机ip
zone文件的格式说明
zone文件详解
# $TTL 缓存的生存周期
# @ = zonename = test.hhy 当前域
# IN 互联网
# SOA 开始授权
# NS dns服务端 nameserver
# A ipv4 正向
# AAAA IPV6
# CNAME 别名
# MX 邮件交互记录 5 数字代表优先级 数字越小优先级越高
# 0 ; serial 更新序列号
# 1D ; refresh 更新间隔(从服务器下载数据)
# 1H ; retry 失败重试
# 1W ; expire 区域文件的过期时间
# 3H ) ; minimum 缓存的最小生存周期
# D Day(天)、H Hour(时)、W Week(周)
6)检查named.conf与zones文件
命令:named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones
只有没有错误提示就说明没问题
检查test.hhy.zone
文件
注意:named-checkzone
格式要求写两遍文件
[root@dns named]# cd /var/named/
[root@dns named]# named-checkzone test.hhy.zone test.hhy.zone
zone test.hhy.zone/IN: loaded serial 0
OK
7)启动DNS服务(named)
命令:systemctl restart named
通过命令:ss -tnlp | grep named
可以看到named
服务器的端口号为53
1. Web服务搭建
在Web服务器上安装httpd
并启动服务
命令:yum -y install httpd
启动服务:systemctl start httpd
[root@web html]# touch /var/www/html/index.html
[root@web html]# echo "<h1>DNS测试</h1>" >> /var/www/html/index.html
2. 测试DNS服务器的正向解析
1)添加DNS服务器
临时添加
命令:echo 'nameserver 192.168.44.151' > /etc/resolv.conf
永久添加
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS=192.168.44.151
2)使用nslookup检测正向解析是否生效
安装:yum install bind-utils -y
测试
[root@client ~]# clear
[root@client ~]# nslookup www.linux.com
Server: 192.168.44.151
Address: 192.168.44.151#53
Name: www.linux.com
Address: 192.168.44.152
3)使用elinks命令行浏览器或curl来实现访问
安装:yum install elinks -y
输入:elinks
输入配置文件里的域名
就会出现web服务器/var/www/html/index.html
的信息
或者直接使用cutl命令
curl http://www.linux.com
三、DNS反向解析
示例:把web服务器192.168.44.152
这个IP地址通过DNS服务器指向www.linux.com
域名
在DNS服务器上:
1)开启网络的访问控制权限
vim /etc/named.conf
2)在zones文件中定义zone文件
命令:vim /etc/named.rfc1912.zones
注意:这里是把web主机的ip192.168.44.152
反过来写的,且没有写最后一个主机号位置
这个ip通过192.168.44.zone
这个配置文件来获取域名
zone "44.168.192.in-addr.arpa" IN
type master;
file "192.168.44.zone";
allow-update none; ;
;
3)复制named.loopback文件
cd /var/named进入到DNS zone配置文件目录,复制named.loopback文件
[root@dns named]# cd /var/named/
[root@dns named]# cp -p named.loopback 192.168.44.zone
4)编辑192.168.44.zone文件
vim 192.168.44.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
# 增加一条反向解析:把192.168.44.152通过PTR解析成www.linux.com
152 PTR www.linux.com
PTR:反向解析
5)检查配置文件和测试
在DNS服务器上测试
[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones
[root@dns named]# cd /var/named
[root@dns named]# named-checkzone 192.168.44.zone 192.168.44.zone
zone 192.168.44.zone/IN: loaded serial 0
OK
[root@dns named]#
再重启named
服务
命令:systemctl restart named
接着在client主机上测试
# 将dns服务器的ip设置为测试机的DSN
[root@client ~]# echo 'nameserver 192.168.44.151' > /etc/resolv.conf
[root@client ~]# nslookup 192.168.44.152
152.44.168.192.in-addr.arpa name = www.linux.com.44.168.192.in-addr.arpa.
[root@client ~]#
四、多域DNS服务器搭建
需求:搭建一个DNS服务器,可以同时解析www.testdns.net
和www.testlinux.cc
域名 | ip地址 |
---|---|
www.testdns.net | 192.168.44.152 |
www.testlinux.com | 192.168.44.152 |
也就是无论是通过www.testdns.net
还是bbs.testlinux.com
来访问,都是访问到192.168.44.152
这台Web主机
1. 修改named.conf配置文件
在dns服务器上修改
vim /etc/named.rfc1912.zones
修改配置文件来设置网络访问权限
zone "44.168.192.in-addr.arpa" IN
type master;
file "192.168.44.zone";
allow-update none; ;
;
2. 添加域
vim /etc/named.rfc1912.zones
添加testdns
和testlinux
域
zone "testdns.net" IN
type master;
file "testdns.net.zone";
allow-update none; ;
;
zone "testlinux.com" IN
type master;
file "testlinux.com.zone";
allow-update none; ;
;
3. 创建配置文件
进入/var/named目录,复制named.localhost
就是创建testdns
和testlinux
这两个域的配置文件
[root@dns ~]# cd /var/named/
[root@dns named]# cp -P named.localhost testdns.net.zone
[root@dns named]# cp -P named.localhost testlinux.cc.zone
4. 编写配置文件
编写 testdns.net.zone和testlinux.cc.zone这两个配置文件
vim /var/named/testdns.net.zone
在配置文件的末尾添加
www A 192.168.44.152
vim /var/named/testlinux.com.zone
bbs A 192.168.44.152
5. 检测配置文件
检测配置文件
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
# cd /var/named
# named-checkzone testdns.net.zone testdns.net.zone
# named-checkzone testlinux.cc.zone testlinux.com.zone
重启named
服务
命令:systemctl restart named
6. 连接测试
在测试机clinet上测试
在cd /etc/sysconfig/network-scripts/
修改对应网卡的DNS为
我们测试的额DNS服务器的IP192.168.44.151
通过命令进行正向解析
测试www.testdns.net
[root@client ~]# nslookup www.testdns.net
Server: 192.168.44.151
Address: 192.168.44.151#53
Name: www.testdns.net
Address: 192.168.44.152
测试bbs.testlinux.com
[root@client ~]# nslookup bbs.testlinux.com
Server: 192.168.44.151
Address: 192.168.44.151#53
Name: bbs.testlinux.com
Address: 192.168.44.152
五、NTP服务器搭建
虽然通过ntpdate cn.ntp.org.cn
虽然以上方式,可以实现对时间的校对!但是由于需要连接外网,其同步需要消耗一定的时间,那有没有更好的解决办法呢?
1. 环境准备
一台NTP时间服务器
主机名 | ip | 作用 |
---|---|---|
ntp | 192.168.44.153 | NTP内网时间服务器 |
安装ntp服务软件
yum install ntp -y
2. 更改配置文件
更改配置文件,开启ntp服务
vim /etc/ntp.conf
13 restrict 127.0.0.1
14 restrict ::1
# 在15行手动添加192.168.44.0网段,表示范围为192.168.44.1 ~ 192.168.44.254
15 restrict 192.168.44.0 mask 255.255.255.0
3. 关闭防火墙和SELInux
[root@ntp ~]# setenforce 0
[root@ntp ~]# systemctl stop firewalld
3. 启动ntpd服务
同步网络时间命令:ntpdate cn.ntp.org.cn
启动服务:systemctl restart ntpd
到此NTP时间服务器配置完毕,以后所有的计算机都可以直接使用ntpdate同步此NTP服务器
通过命令:ntpdate 192.168.44.153
命令+ntp主机ip就可以在内网同步ntpdate时间了
[root@web ~]# date -s 2002-03-04
Mon Mar 4 00:00:00 CST 2002
[root@web ~]# date -s 08:30
Mon Mar 4 08:30:00 CST 2002
[root@web ~]# date
Mon Mar 4 08:30:05 CST 2002
[root@web ~]# ntpdate 192.168.44.153
20 Jul 10:03:55 ntpdate[7338]: step time server 192.168.44.153 offset 643080786.390525 sec
[root@web ~]# date
Wed Jul 20 10:04:05 CST 2022
[root@web ~]#
除此以外,我们还可以使用计划任务,定期进行时间的同步(针对所有的客户端)
命令:crontab -e
# 表示每2两小时从 192.168.44.153 这台ntp服务器同步一次时间
*/2 * * * * /usr/sbin/ntpdate 192.168.44.153 &>/dev/null
六、DNS主从部署
1. 思路
主从部署的核心思路:
- master和slave的系统时间保持一致
- slave服务器上安装相应的软件(系统版本、软件版本保持一致)
- 根据需求修改相应的配置文件(master和slave都应该去修改)
- 主从同步的核心是slave同步master上的区域文件(zone文件)
2. 环境准备
准备一台服务器
主机名 | ip | 作用 |
---|---|---|
dns | 192.168.44.151 | dns主服务器 |
slave | 192.168.44.160 | dns 从服务器 |
配置静态ip+关闭防火墙和SELInux
3. 更改主DNS服务器配置
更改主dns服务器,允许其他的从服务器下载同步资源
vim /etc/named.conf
在第15添加一行allow-transfer 192.168.44.160;
运行从服务器IP地址过来同步资源
12 options
13 listen-on port 53 127.0.0.1;any; ;
14 listen-on-v6 port 53 ::1; ;
15 allow-transfer 192.168.44.160; ;
16 directory "/var/named";
17 dump-file "/var/named/data/cache_dump.db";
18 statistics-file "/var/named/data/named_stats.txt";
19 memstatistics-file "/var/named/data/named_mem_stats.txt";
20 recursing-file "/var/named/data/named.recursing";
21 secroots-file "/var/named/data/named.secroots";
22 allow-query localhost;any; ;
重启服务:systemctl restart named
4. 从服务器配置
安装DNS软件:yum -y install bind
修改配置文件:
12 options
13 listen-on port 53 127.0.0.1;any; ;
14 listen-on-v6 port 53 ::1; ;
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query localhost;any; ;
修改:vim /etc/named.rfc1912.zones
在43到53行添加下面的配置文件
43 zone "testdns.net" IN
44 type slave;
45 file "slaves/testdns.net";
46 masters 192.168.44.151; ;
47 ;
48
49 zone "testlinux.com" IN
50 type slave;
51 file "slaves/testlinux.com";
52 masters 192.168.44.151; ;
53 ;
5. 测试
检测配置文件是否有问题
命令:named-checkconf /etc/named.rfc1912.zones
重启服务:systemctl restart named
在Client客户端,把Slave从服务器的IP设置为DNS
vim /etc/sysconfig/network-scripts/ifcfg-ens33
重启网卡systemctl restart network
测试域名
[root@client ~]# nslookup www.testdns.net
Server: 192.168.44.160
Address: 192.168.44.160#53
Name: www.testdns.net
Address: 192.168.44.152
[root@client ~]# nslookup bbs.testlinux.com
Server: 192.168.44.160
Address: 192.168.44.160#53
Name: bbs.testlinux.com
Address: 192.168.44.152
[root@client ~]#
以上是关于Linux——DNS(正向解析+反向解析+多域配置+主从配置)的主要内容,如果未能解决你的问题,请参考以下文章
Linux Centos7DNS解析(正向解析,反向解析,主从复制)你想要的这都有