作用
DNS(Domain Name System)是互联网上的一项服务,用于将域名和IP地址进行相互映射,使人 更方便的访问互联网 正向解析:域名->IP 反向解析:IP->域名
连接方式
DNS使用53端口监听网络 查看方法: DNS默认以UDP这个较快速的数据传输协议来查询,但没有查询到完整的信息时,就会再次以TCP 协议重新查询则启动DNS时,会同时启动TCP以及UDP的port53
分类
国家顶级域名:采用ISO3166的规定:
cn代表中国,us代表美国,uk代表英国,等等。国家域 名又常记为CCTLD(country code top-level domains,cc表示国家代码contry-code)。
通用顶级域名:
最常见的通用顶级域名有7个 com (公司企业)、 net (网络服务机构) 、org (非营利组织) 、int (国际组织)、 gov (美国的政府部门) 、mil (美国的军事部门) 、edu(教育机构)。
DNS域名解析过程
递归解析:DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果 提交给用户
迭代解析(反复):DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一 台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,依次反复,直到返回查询结果
搭建DNS域名解析服务器
一般需要修改三部分:
listen-on port 53 { 127.0.0.1; }; 即监听ip及端口
allow-query { localhost; }; 允许那些客户端访问
recursion yes; 是否开启递归查询
区域配置文件
正向解析(根据计算机的DNS名称即域名,解析出相应的IP地址)
zone "localhost.localdomain" IN { # 正向解析域名 type master; # 服务类型:master表示主服务器,slave表示从服务器,hint根服务器
file "named.localhost"; # 域名与IP地址规则文件存储位置
allow-update { none; }; # 允许那些客户端动态更新本机域名解析 };
# allow-update:允许更新解析库内容,一般关闭
# allow-query: 允许查询的主机,白名单
# allow-tranfter : 允许同步的主机,白名单,常用
# allow-recursion: 允许递归的主机
反向解析(根据计算机的IP地址解析其DNS名称,多用来为服务器进行身份验证)
zone "1.0.0.127.in-addr.arpa" IN { # 表示127.0.0.1的反向解析配置,IP地址需要倒置书写,只 需书写网段即可
type master;
file "named.loopback"; # 反向解析的规则文件保存位置
allow-update { none; };
};
解析资源文件
正向解析资源文件
[root@server ~]# vim /var/named/named.localhost #查看
$TTL 1D # 设置生存周期时间,为1天,$表示宏定义
@ IN SOA @ rname.invalid. (
# @ :表示zone域,现在表示域名,如baidu.com
# IN SOA : 授权信息开始
# rname.invalid. : 域名管理员的邮箱(不能使用@,使用点替代邮件分隔符@)
0 ; serial # 序列号,10位以内的整数
1D ; refresh # 更新频率为1天
1H ; retry # 失败重试时间为1小时
1W ; expire # 失效时间1周
3H ) ; minimum # 缓存时间为3小时
IN NS ns.域名.
ns IN A 域名解析服务器IP地址
www IN A 域名解析服务器IP地址
bbs IN A 域名解析服务器IP地址
mail IN A 域名解析服务器IP地址
# A:表示IPv4地址, AAAA表示IPv6地址
反向解析资源文件
[root@server ~]# vim /var/named/named.loopback
$TTL 1D
@ IN SOA
@ rname.invalid. (
0 ;
serial 1D ;
refresh 1H ;
retry 1W ;
expire 3H ) ; minimum
IN NS ns.域名. # 域名服务器记录,注意结尾的点
ns IN A 域名解析服务器的IP地址
IP地址 PTR 域名. # PTR 指针记录,用于反向解析
实验:
正向解析
服务端
[root@server ~]# setenforce 0 #SElinux改为宽容模式
[root@server ~]# systemctl stop firewalld #关闭防火墙
[root@server ~]# yum install bind -y # 服务端安装bind软件
# 服务端配置静态IP
[root@server ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses 192.168.48.130/24 ipv4.gateway 192.168.88.8 ipv4.dns 114.114.114.114
[root@server ~]# nmcli c reload
[root@server ~]# nmcli c up ens32
客户端
# 客户端设置静态IP
[root@node1 ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses 192.168.48.131/24 ipv4.gateway 192.168.88.9 ipv4.dns 114.114.114.114
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens32
DNS配置
第一步:服务端操作,编辑bind主配置文件
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件
options {
listen-on port 53 { 192.168.88.0/24; }; #配置监听ip及端口
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; }; #配置允许访问的IPrecursion yes; # 重要,允许递归查询,若删除则为迭代查询
第二步:服务端操作,编辑区域配置文件
[root@localhost etc]# vim named.rfc1912.zones #区域配置文件
zone "openlab.com" IN { #配置管理区域
type master;
file "openlab.com.zone"; #数据文件名称
allow-update { none; };
};
第三步: 配置数据文件
[root@localhost etc]# cd /var/named
[root@localhost named]# cp named.localhost openlab.com.zone #复制源文件,重命名为数据文件名称再进行修改[root@localhost named]# vim openlab.com.zone
$TTL 1D # 设置生存周期时间,为1天,$表示宏定义
openlab.com. IN SOA openlab.com. admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
openlab.com. (域名) IN NS (地址类型) ns.openlab.com.(服务器IP地址)
ns.openlab.com. IN A 192.168.88.8
www.openlab.com. IN A 192.168.88.8
第四步 服务端重启
[root@localhost named]# systemctl restart named
测试(客户端)
[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 #网络配置文件
DNS1=192.168.88.8 #修改DNS为服务端IP地址
[root@client ~]# nslookup openlab.com
[root@client ~]# nslookup www.openlab.com
反向解析
服务端
恢复快照,避免正反向解析冲突
[root@server ~]# setenforce 0 #SElinux改为宽容模式
[root@server ~]# systemctl stop firewalld #关闭防火墙
[root@server ~]# yum install bind -y # 服务端安装bind软件
第一步 编辑主配置文件
[root@localhost named]# vim /etc/named.conf
options {
listen-on port 53 { any; }; # 配置监听IP与端口
listen-on-v6 port 53 { ::1; };n-on 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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { 192.168.88.9; }; #允许IP访问
第二步 配置区域文件
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "88.168.192.in-addr.arpa" IN { #配置区域文件
type master;
file "192.168.88.arpa"; #编辑数据文件名称
allow-update { none; };
};
第三步 配置数据文件
[root@localhost named]# cp -a named.localhost 192.168.88.arpa #复制源文件,改为数据文件名称
[root@localhost named]# vim /etc/named.conf
$TTL 1D
@ IN SOA ns.openlab.com. admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.openlab.com.
ns.openlab.com. IN A 192.168.88.8
8 IN PTR www.openlab.com.
8 IN PTR openlab.com.
第四步 重启服务
[root@localhost named]# systemctl restart named
测试
客户端
[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 #网络配置文件
DNS1=192.168.88.8 #修改DNS为服务端IP地址
[root@client ~]# nslookup 192.168.88.8