DNS(domain name system ) 域名管理系统
域名:
由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。
计算机 => IP地址,互联网中的计算机都是通过IP地址进行互相访问的。(IP地址过于复杂)
域名:代替IP实现计算机的访问(高级 => 上层应用,底层还是IP地址)
每个域名 => DNS服务器 => 对应的IP地址
dns作用:将域名解析成ip地址
域名的正向解析
将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机
域名——>IP A记录
域名的反向解析
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名
IP——>域名 PTR记录
· 在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),也叫”根域“。
· 根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。)
com net edu gov org cc io| cn uk us ru ja ko
.com : 商业公司
.net :互联网公司
.edu :教育(中小学、高中、大学…)
.gov :政府
.io :存储设备,redis
.cn :中国域名(国家域)
qq.com**.** baidu.com. google.com.
收费(新网|万网) 老牌免费域名:TK顶级域名、TK域名DNS、TK域名商
如果询问一次得到结果 递归查询 C-S 如果询问多次得到结果 迭代查询 S-S
一次递归 多次迭代
# dig +trace www.baidu.cn 追踪DNS的解析过程
# dig www.baidu.cn 正向解析
# dig -x IP地址 反向解析
DNS 的域名解析都是 udp/53 . 主从之间的数据传输默认使用**tcp/53**
DNS服务器端软件:
**Bind**是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
编号 | 主机名称 | IP地址 | 备注信息 |
---|---|---|---|
1 | client.hd.com | 192.168.1.11 | client客户端,用于测试 |
2 | dns.hd.com | 192.168.1.12 | dns服务器,用于实现域名解析 |
3 | www.hd.com | 192.168.1.13 | web服务器,用于搭建内部web服务 |
① 更改主机名称与IP地址
# hostnamectl set-hostname client.hd.com
# hostnamectl set-hostname dns.hd.com
# hostnamectl set-hostname www.hd.com
# su
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=192.168.1.11/12/13
更改UUID编号的后3位,必须是唯一的
② 使用MX进行连接
③ 关闭防火墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
④ 配置YUM源(有网配置公网YUM源、无网就配置光盘或自建YUM源)
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
DNS服务器1.12上安装:
# yum install bind -y
安装完毕后,可以使用rpm -q查询是否安装成功:
# rpm -q 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
find主要用来搜索计算机中的文件,rpm主要用来检查计算机中是否安装过某个软件
/etc/named.conf主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)
/etc/named.rfc1912.zones主要定义域名如何解析(正向解析),解析到具体哪个IP地址
① 对named.conf以及named.rfc1912.zones进行备份
cp /etc/named.conf /etc/named.conf.bak
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
② named.conf主配置文件详解(访问权限控制)
# vim /etc/named.conf
添加任何主机都可以访问的权限:
1、 zones子配置文件详解(域名应该指向哪个IP地址)
# vim /etc/named.rfc1912.zones
...
zone "hd.com" IN {
type master;
file "hd.com.zone";
allow-update { none; };
};
2、 在/var/named目录创建hd.com.zone文件定义正向解析
# cd /var/named
# cp -p named.localhost hd.com.zone
扩展:-p代表复制文件时保留文件的原有属性
3、 编辑hd.com.zone文件,定义域名的指向
# vim hd.com.zone
扩展:zone文件的格式说明
zone文件详解
# $TTL 缓存的生存周期
# @ = zonename = hd.com 当前域
# 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
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
检查hd.com.zone文件
# cd /var/named
# named-checkzone hd.com.zone hd.com.zone
# systemctl restart named
# netstat -tnlp |grep named
# yum install httpd -y
# systemctl start httpd
# echo 'DNS Test ...' > /var/www/html/index.html
#
echo 'nameserver 192.168.1.12' > /etc/resolv.conf
或者
# 永久添加
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.1.12
# nslookup www.hd.com
# nslookup client.hd.com
# yum install elinks -y
# elinks
输入www.hd.com
# curl www.hd.com
正向解析:把域名解析为对应的IP地址
反向解析:把IP地址解析为对应的域名
目标:把192.168.1.13这个IP地址通过DNS服务器指向www.hd.com域名
第1步:在zones文件中定义zone文件
# vim /etc/named.rfc1912.zones
#49行
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
allow-update { none; };
};
第2步:cd /var/named进入到DNS zone配置文件目录,复制named.loopback文件
# cd /var/named
# cp -p named.loopback 192.168.1.zone
第3步:编辑192.168.1.zone文件,把IP地址=>192.168.1.13指向www.hd.com域名
$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.1.13 => PTR => www.hd.com
13 PTR www.hd.com
第4步:检查与客户端测试
DNS服务器:
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
# cd /var/named
# named-checkzone 192.168.1.zone 192.168.1.zone
# systemctl restart named
客户端检测(1.11):
# echo 'nameserver 192.168.1.12' > /etc/resolv.conf
# nslookup 192.168.1.13
13.1.168.192.in-addr.arpa name = www.hd.com.
DNS的临时配置方式 => echo ‘nameserver 10.1.1.12’ > /etc/resolv.conf
注:当VMware关闭或者挂起时,临时设置的DNS会被重置
CentOS7版本中,有的时候,在网络配置时,明明设置了静态IP,但是无论重启网络、重启网卡,其设置的IP地址都没有生效。
出现以上问题的主要原因在于图形化界面中的NetworkManager服务没有关闭!
解决方案:
# systemctl stop NetworkManager
# systemctl disable NetworkManager
主(192.168.1.12)从部署的核心思路:
1. master和slave的系统时间保持一致
2. slave服务器上安装相应的软件(系统版本、软件版本保持一致)
3. 根据需求修改相应的配置文件(master和slave都应该去修改)
4. 主从同步的核心是slave同步master上的区域文件(zone文件)
master:主 slave:从
第一步:准备一台slave从服务器(192.168.1.11)
第二步:更改主dns服务器,允许其他的从服务器下载同步资源
# vim /etc/named.conf
12 options {
13 listen-on port 53 { 127.0.0.1;any; };
14 listen-on-v6 port 53 { ::1; };
15 allow-transfer {192.168.1.11; }; => 允许从服务器的IP地址过来同步资源
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
第三步:SLAVE从服务器配置
# yum install bind -y
# vim /etc/named.conf
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
zone "hd.com" IN {
type slave;
file "slaves/hd.com";
masters { 192.168.1.12; };
};
# 检测配置文件是否有错(略)
# named-checkconf ...
# systemctl restart named
第四步:在Client客户端,把Slave从服务器的IP设置为DNS
# echo 'nameserver 192.168.1.11' > /etc/resolv.conf
# nslookup www.hd.com
#
echo 'nameserver 192.168.1.12' > /etc/resolv.conf
或者
# 永久添加
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.1.12