DNS 基本概念
一、hosts 文件
作用: 实现名字解析,主要为本地主机名、集群节点提供快速解析
数据库: 平面式结构,集中式数据库
二、域名服务 DNS
作用: 实现名字解析(例如将主机名解析为 IP)
命名空间 name space: 用于给互联网上的主机命名的一种机制
DNS 数据库 Datebase: 层次化的,分布式的数据库
权威名称服务器: 存储并提供某个区域的实际数据,例如 126.com 的 DNS 服务器,记录了 126.com 域中 所有主机的记录如: www.126.com. x.x.x.x ftp.126.com. y.y.y.y
权威名称服务器类型包括: Master: 主 DNS 服务器,包含原始区域的数据 Slave: 备份 DNS 服务器,通过(区域传输)从 Master 服务器获得区域数据的副本
非权威名称服务器: 不存储某个区域的实际数据,仅缓存 DNS 服务器,虽然可以提供查询,但查询的内 容不具有权威性
DNS 解析流程:
例如客户端解析 www.126.com
1.客户端查询自己的缓存(包含 hosts 中的记录),如果没有将查询发送/etc/resolv.conf 中的 DNS 服务器
2.如果本地 DNS 服务器对于请求的信息具有权威性,会将(权威答案)发送到客户端。
3. 否则(不具有权威性),如果 DNS 服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端
4. 如果缓存中没有该查询信息,DNS 服务器将搜索权威 DNS 服务器以查找信息: a. 从根区域开始,按照 DNS 层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获答案 DNS 服务器将信息传递给客户端 ,并在自己的缓存中保留一个副本,以备以后查找。 b. 转发到其它 DNS 服务器
DNS 服务器基本配置
=========================================================
实验环境:
aliyun 114.215.71.214
惟缓存 DNS 服务器 cache only
部署 DNS 服务器
[root@aliyun ~]# yum -y install bind bind-chroot
[root@aliyun ~]# vim /etc/named.conf
options {
listen-on port 53
{
any;
};
listen-on-v6 port 53
{
any;
};
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";
allow-query
{
any;
};
[root@aliyun ~]# systemctl restart named
[root@aliyun ~]# systemctl enable named
[root@aliyun ~]# ss -tuln |grep :53 |column -t
udp UNCONN 0 0 114.215.71.214:53 *:*
udp UNCONN 0 0 10.29.89.165:53 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 :::53 :::*
tcp LISTEN 0 10 114.215.71.214:53 *:*
tcp LISTEN 0 10 10.29.89.165:53 *:*
tcp LISTEN 0 10 127.0.0.1:53 *:*
tcp LISTEN 0 10 :::53 :::*
aliyun 默认未开启防火墙 firewalld
[root@aliyun ~]# firewall-cmd --permanent --add-service=dns
[root@aliyun ~]# firewall-cmd --reload
客户端测试 DNS 解析
[root@yang ~]# cat /etc/resolv.conf
nameserver 114.215.71.214
DNS 服务器未正常提供服务前
[root@yang ~]# dig www.sina.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.sina.com
;; global options: +cmd ;; connection timed out
; no servers could be reached
DNS 服务器正常提供服务后
[root@yang ~]# dig www.sina.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.sina.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38165
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 7, ADDITIONAL: 8
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.sina.com. IN A
;; ANSWER SECTION: www.sina.com. 22 IN CNAME us.sina.com.cn.
us.sina.com.cn. 23 IN CNAME wwwus.sina.com.
wwwus.sina.com. 23 IN A 66.102.251.33
[root@yang ~]# ping www.ifeng.com
PING c.xdwscache.ourglb0.com (123.128.14.201) 56(84) bytes of data.
64 bytes from 123.128.14.201: icmp_seq=1 ttl=52 time=15.4 ms
64 bytes from 123.128.14.201: icmp_seq=2 ttl=52 time=14.5 ms
查看 DNS 服务主配置文件
[root@aliyun ~]# vim /etc/named.conf
根提示区域 [默认]
DNS 转发 Forward [通常转发到上一级的 DNS 服务器]
options {
...
forwarders
{
114.114.114.114; 202.106.0.20;
};
};
正向区解析配置
=========================================================正向区: 提供正向解析,即将域名解析为 IP
反向区: 提供反向解析,即将 IP 解析为域名 [了解]
DNS 服务器正向区
案例 1:tianyun.com
- 主配置文件 相当于在域名服务商申请域名
[root@yangs ~]# vim /etc/named.conf
options
{
directory "/var/named"; //数据库文件存储位置
};
zone "tianyun.com"
{//创建域 tianyun.com
type master;
file "tianyun.com.zone";
};
2. 数据库文件(区域文件) 在域名服务提供的页面上做解析
[root@yangs ~]# vim /var/named/tianyun.com.zone
$TTL 600 @ IN SOA
@ root ( 2017033100 1H 15M 1W 1D )
@ IN NS dns
dns IN A 114.215.71.214 //DNS 服务器本机
IP www IN A 119.75.218.70 //网站服务器 IP
案例 2:增加 yang.com 1. 主配置文件
[root@yangs ~]# vim /etc/named.conf
zone "yang.com" {
type master;
file "yang.com.zone";
};
2. 数据库文件(区域文件)
[root@yangs ~]# vim /var/named/yang.com.zone
$TTL 600
@ IN SOA
@ root ( 2017033100 1H 15M 1W 1D )
IN NS dns
dns IN A 114.215.71.214
www IN A 1.1.1.1
bbs IN A 1.1.1.2
oa IN A 1.1.1.3
数据库文件:
@ 表示当前域名 www.tianyun.com. = www
第一个字段继承
SOA: 起始授权记录 强制
NS: DNS 服务器记录 强制
A: 主机记录
CNAME: 别名记录
客户端查询
nslookup,host,dig
客户端指定本地 DNS
[root@tianyun ~]# cat /etc/resolv.conf nameserver 192.168.2.115 [root@tianyun ~]# dig www.baidu.com
[root@tianyun ~]# nslookup www.baidu.com
[root@tianyun ~]# host www.baidu.com
dig (Linux)
[root@tianyun ~]# dig www.126.com //使用/etc/resolv.conf 设置的 DNS [root@tianyun ~]# dig @192.168.2.168 www.126.com //使用指定的 DNS [root@tianyun ~]# dig @192.168.2.100 www.126.com //使用指定的 DNS
host (Linux)
[root@tianyun ~]# host -t A www.baidu.com //正向解析,查询 A 记录
[root@tianyun ~]# host 192.168.5.100 //反向解析,查询 PTR 记录
[root@tianyun ~]# host www.baidu.com 192.168.5.240 //使用 DNS 服务器 192.168.5.240 解析
[root@tianyun ~]# host -t SOA baidu.com //查询某个域的SOA
baidu.com has SOA record ns.baidu.com. root.baidu.com. 2013081303 3600 900 604800 86400
[root@tianyun ~]# host -t NS baidu.com //查询某个域的NS
baidu.com name server ns.baidu.com. baidu.com name serverns2.baidu.com.
[root@tianyun ~]# host -t MX baidu.com //查询某个域的邮件服务器 baidu.com mail is handled by 10 mail.baidu.com.
nslookup (Linux/Windows)
[root@tianyun ~]# nslookup www.baidu.com
[root@tianyun ~]# nslookup 192.168.5.100
[root@tianyun ~]# nslookup
www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.baidu.com
Address: 192.168.5.100
192.168.5.2
Server: 127.0.0.1
Address: 127.0.0.1#53
2.5.168.192.in-addr.arpa name = www.baidu.com.
[root@tianyun ~]# nslookup
server 192.168.5.2 //使用临时指定的服务器析
Default server: 192.168.5.2 Address: 192.168.5.2#53
[root@tianyun ~]# nslookup
set q=soa > baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
baidu.com
origin = ns.baidu.com
mail addr = root.baidu.com
serial = 2013081303
refresh = 3600
retry = 900
expire = 604800 minimum = 86400
set q=nsbaidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
baidu.com nameserver = ns.baidu.com.
baidu.com nameserver = ns2.baidu.com.
[root@tianyun ~]# nslookup
set q=mx
baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
baidu.com mail exchanger = 10 mail.baidu.com.
set q=a > www.baidu.com
Server: 127.0.0.1 Address: 127.0.0.1#53
Name: www.baidu.com
Address: 192.168.5.100