DNS服务搭建

目录

DNS简介

DNS解析原理

DNS的相关配置

DNS主从服务

DNS缓存服务

DNS智能解析(分离解析)

DNS简介

  • DNS的功能

    DNS 域名系统(Domain Name System) 的缩写,它的功能是将域名解析成ip。我们日常上网浏览网页时,在浏览器(如:IE)的地址栏中常输入的是网站的网址,其实网址这个概念在专业的角度称为域名。即:网址=域名。                                                                                           

    而域名主要是给我们人去使用的。我们知道,在网络上,计算机与计算机之间的寻址方式是靠的ip地址。IP地址是四段数字组成的,而我们人去记忆不同网站的ip地址,这种数字化的地址很容易记错或记混,我们人的思维模式更习惯于记忆名称,如:百度、163、QQ等网站,我们可以很轻松的写出它们的网址。所以,为了方便人与主机之间的沟通,在internet上,就需要有一台服务器,记录着网站域名(即网址)与服务器ip的对应关系。类似于表格,当我们上网时,在浏览器地址栏中输入网址,客户端则会向DNS服务器发出询问请求,DNS服务器通过查表得到对应服务器的IP,返回给客户端,客户端再以这个ip地址寻址到达服务器,申请访问web页面。所以,一次上网的过程中,客户端其实会向外发送两次请求,第一次是询问DNS,查表得到web服务器的ip,第二次是按照所获得的ip,寻址找到web服务器请求访问页面。DNS上查表的过程,我们用更专业的术语表示就叫做解析。所以DNS服务器又称为域名解析服务器,其功能就是将域名解析成ip的。

    以上过程我们可以想象成生活中的手机电话簿功能:我们可以记住每个朋友的姓名,但我们是记不住每个朋友的手机号的,这就需要用电话簿记录各个朋友的手机号,当我们需要给某个朋友打电话时,一定会先查电话簿,查到电话后,即可拨号打电话了。这里的电话簿的功能就相当于DNS的功能。

    • DNS命名空间

      DNS可以负责全球网络的域名解析工作,那么全球的网络必然或有一套严谨的命名规范,那就是DNS命名空间的功能                                                                                                 

      我们假设将全球的网络资源都放到一个总的虚拟的域之下,这个总域我们称为根域即.域(点域)。在根域之下,划分为多个二级域,这些域被称为顶级域,顶级域是不允许企业或个人直接申请的,顶级域是由全球的网络维护商按照国家、地区、行业等分配的,如:.cn.表示中国地区,.hk.表示香港,.org.表示国际组织,.com.表示工商企业的,.net.表示网络提供商等等。因为所有域都在根域(即.域)之下,所以,一般书写时我们可以把最后的.省略,如:.com   .cn等                                                                                        ​​​​​作为企业或个人,只可以在顶级域下申请子域,申请到子域后即可在子域下指定自己的网络层次了。如下图:                                                                                                                                                                                                                    ​​​​​​​        ​​​​​​​        ​​​​  ​​​        ​​​​​​​​​​​​​  

    • 命名相关概念

      先来分析一下域名的格式,我们知道上网时在浏览器输入域名后,浏览器会自动在域名前写上http://字样,即指定了通信协议,这种协议+地址的格式我们称为url。

      url  统一资源定位符,即协议+完整网络路径,如:http://www.baidu.com。

      其实我们日常中常说的链接,专业称谓就是url。如:我们会给朋友要的某网店链接,某电影的下载链接等,这些都是url。

      全称域名(FQDN) 其实我们日常中说的域名(如www.baidu.com),严格来讲并不是标准的叫法。在专业的称谓中,一个完整的网址应该称为全称域名,简写FQDN(英文单词为全质量的域名)。而FQDN规定最多由255个字符组成。

      域名  标准定义中,域名的概念只是指所在域部分,如:baidu.com。

      主机名(又称NetBios名) FQDN中的www部分称为主机名部分。规定主机名最多16个字符,但最后一个字符固定为.(点),所以只有前15个字符可自定义。

      小结,可见FQDN是由主机名+域名组成。

DNS解析原理

  • 客户端解析顺序

    • Windows/Linux:本地hosts文件------DNS服务器

  • DNS支持的解析模式

    • 正向解析: 客户端拿着域名,请求DNS解析,获取到ip

    • 反向解析: 客户端拿着ip,请求DNS解析,获取到域名

  • DNS的解析过程

  1. 客户机首先查看查找本地hosts文件,如果有则返回,否则进行下一步

  2. 客户机查看本地缓存,是否存在本地的缓存中,如果有则直接返回,否则进行下一步。

  3. 将请求转发给指向的DNS服务器。

  4. 查看域名是否本地解析,是则本地解析返回,否则进行下一步。

  5. 本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步。

  6. 向全球13个根域服务器发起DNS请求,根域返回org域的地址列表。

  7. 使用某一个org域的IP地址,发起DNS请求,org域返回kernel域服务器地址列表。

  8. 使用某一个kernel域IP地址,发起DNS请求,kernel域返回www.kernel.org主机的IP地址,本地DNS服务收到后,返回给客户机,并在本地DNS服务器保存一份。

  • 递归:

    • 发生在客户机与指定的DNS服务器之间

    • 返回的确定值

  • 迭代:

    • 发生在指定DNS服务器与后续DNS服务器之间

    • 返回近似的值

DNS的相关配置

  • 软件包:bind

  • 服务名:named

  • 扩展命令:nslookup

  • 扩展命令的软件包:bind-utils

  • 默认端口:

    • UDP:53端口,数据通信(域名解析)

    • TCP:53端口,数据同步(主从同步)

  • 配置文件:

    • 主配置文件:/etc/named.conf (服务运行的参数)

    • 区域配置文件:/etc/named.rfc1912.zones (正反向区域定义信息)

    • 数据配置文件:/var/named/ (主机名和IP的对应解析关系)

记录类型:

A:

地址记录,用来指定域名的IPv4地址的记录

CNAME:

将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录

TXT:

可填写任何东西,长度限制255。绝大多数的TXT记录是用来做SPF的(反垃圾邮件)

NS:

域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。

AAAA:

地址记录,用来指定域名的IPv6地址的记录

MX 3:

邮件交换记录,如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。

DNS基本功能搭建(关防护、服务器+测试机)

服务器配置 

 # 安装软件bind
 $ yum -y install bind
 $ yum -y install bind-utils  #安装nslookup
 $ vim /etc/named.conf
     #监听的连接服务器网卡:
     listen-on port 53 {any;}
     #监听的客户端的请求地址,如指定网段:20.20.20.x/24;
     allow-query {any;}
 #配置区域配置文件(注:备份文件、只留一个正向和反向配置块)
 $ vim /etc/named.rfc1912.zones
     #正向记录:
         zone "要解析成的域名,如hongfu.com" IN {
             type master;
             file "正向的数据配置文件名";
             allow-update {none;};
         }
     #反向记录:
         zone "解析网段的倒序(如:30.168.192).in-addr.arpa" IN {
             type master;
             file "反向的数据配置文件名";
             allow-update {none;};
         }
 #配置数据文件
 $ cd /var/named/
 $ cp -a named.localhost 正向的数据配置文件名
 $ cp -a named.loopback  反向的数据配置文件名      
 $ vim 正向的数据配置文件名  #注:写域名最后加上根域
     $TTL 1D
     @       IN SOA  要解析成的域名.(如hongfu.com.) rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.要解析成的域名.   #配置dns服务器的域名
     dns     A       192.168.66.74
     www     A       192.168.66.74#配置正向解析记录 DNS主服务器的IP
 $ vim 反向的数据配置文件名  #注:写域名最后加上根域
     $TTL 1D
     @       IN SOA  要解析成的域名. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.要解析成的域名.   #配置dns服务器的域名
     74      PTR     dns.要解析成的域名.   #配置反向解析记录,只输入ip最后一位
 #启动dns服务
 $ systemctl start named
测试机配置

 # 测试机(服务器本机或其他机器)在网卡配置中添加DNS1
 $ vim  /etc/sysconfig/network-scripts/ifcfg-ens33
     DNS1 = dns服务器ip
 $ systemctl restart network
 $ yum -y install bind-utils  #安装nslookup
 $ nslookup 要解析的域名
 # 确认物理机的DNS
 $ cat /etc/resolv.conf

DNS主从服务

DNS主从服务搭建(关防护、主服务器+从服务器+测试机)

主服务器配置

 $ yum -y install bind
 $ vim /etc/named.conf
     #监听的连接服务器网卡:
     listen-on port 53 {any;}
     #监听的客户端的请求地址,如指定网段:20.20.20.x/24;
     allow-query {any;}
 #配置区域配置文件(注:备份文件、只留一个正向和反向配置块)
 $ vim /etc/named.rfc1912.zones
     #正向记录:
         zone "要解析成的域名,如hongfu.com" IN {
             type master;
             file "正向的数据配置文件名";
             allow-transfer {从服务器IP;};
         }
     #反向记录:
         zone "解析网段的倒序(如:30.168.192).in-addr.arpa" IN {
             type master;
             file "反向的数据配置文件名";
             allow-transfer {从服务器IP;};
         }
 $ cd /var/named
 #配置数据文件
 $ cd /var/named/
 $ cp -a named.localhost 正向的数据配置文件名
 $ cp -a named.loopback  反向的数据配置文件名      
 $ vim 正向的数据配置文件名  #注:写域名最后加上根域
     $TTL 1D
     @       IN SOA  要解析成的域名.(如hongfu.com.) rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.要解析成的域名.   #配置dns服务器的域名
     dns     A       192.168.66.74
     www     A       192.168.66.74#配置正向解析记录 DNS主服务器的IP
 $ vim 反向的数据配置文件名  #注:写域名最后加上根域
     $TTL 1D
     @       IN SOA  要解析成的域名. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.要解析成的域名.   #配置dns服务器的域名
     67      PTR     dns.要解析成的域名.   #配置反向解析记录,只输入ip最后一位
 #启动dns服务
 $ systemctl start named
从服务器配置

 $ yum -y install bind
 $ vim /etc/named.conf
     listen-on port 53 {any;}
     allow-query {any;}
 $ vim /etc/named.rfc1912.zones
     #正向记录:
         zone "要解析成的域名" IN {
             type slave;
             masters { 主服务器ip; };
             file "slaves/正向的数据配置文件名";
             masterfile-format text;
         }
     #反向记录:
         zone "解析网段的倒序.in-addr.arpa" IN {
             type slave;
             masters { 主服务器ip; };
             file "slaves/反向的数据配置文件名";
             masterfile-format text;
         }
 #无需配置数据文件,启动服务自动同步到/var/named/slaves文件中,slaves文件中存在两个数据文件就说明从服务器搭建好了
测试机

 # 安装解析工具nslookup
     $ yum -y install bind-utils
 # 修改网卡配置,添加DNS1=从服务器IP
     $ vim  /etc/sysconfig/network-scripts/ifcfg-ens33
         DNS1 = 从dns服务器ip
 $ nslookup 要解析的域名
设置主从服务器的实时同步

 # 主DNS服务上的主配置文件(/etc/named.conf)不需要更改
 # 在主DNS服务上添加实时同步的设置
 $ vim /etc/named.rfc1912.zones
     # 正向记录:
         zone "要解析成的域名" IN {
             type master;
             file "正向的数据配置文件名";
             allow-transfer {从服务器IP};
             # 添加实时同步配置
             allow-update {从服务器IP};
             also-notify {从服务器IP};
         }
     # 反向记录:
         zone "解析网段的倒序.in-addr.arpa" IN {
             type master;
             file "反向的数据配置文件名";
             allow-transfer {从服务器IP};
             # 添加实时同步配置
             allow-update {从服务器IP};
             also-notify {从服务器IP};
         }
 # 在主DNS服务上更改数据
 $ vim 正向的数据配置文件名
     $TTL 1D
     @       IN SOA  要解析成的域名.(如hongfu.com.) rname.invalid(
                                         1       ; serial
                                     #序列号每次数据修改都需要增加
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.要解析的域名. 
     dns     A       192.168.30.67
     www     A       192.168.30.68   # 添加或修改一条数据
 # 重启named服务
 $ systemctl restart named
 # 从服务器上不需要做任何修改,查看数据文件数据就被同步过来了
 # 客户机上配置从服务器IP为DNS1,能正常解析出更改的域名

DNS缓存服务

DNS缓存服务搭建(关防护、主服务器+从服务器+测试机)

主服务器

 # 同主从实验中的主服务器配置
缓存服务器

 # 安装缓存软件
 $ yum -y install dnsmasq
 # 配置缓存
 $ vim /etc/dnsmasq.conf
     domain=要解析的域名
     server=主dns服务器IP
     cache-size=15000
 # 启动服务
 $ systemctl start dnsmasq
测试机

 # 修改网卡配置,添加DNS1=缓存服务器IP
 $ vim  /etc/sysconfig/network-scripts/ifcfg-ens33
     DNS1 = 缓存dns服务器ip
 # 安装解析工具nslookup
     $ yum -y install bind-utils
 # 关闭主服务器,仍能解析主服务器解析过的域名、但主配置了但没解析过的缓存也不能解析
 $ nslookup 要解析的域名

DNS智能解析(分离解析)

  • 解析原理:智能DNS就是将对用户发起的查询进行判断出是哪个运行商的用户查询,然后将请求转发给相应的运营商IP处理,减少跨运营访问的时间,提高访问速度。

  • 应用场景:一些网站为了让用户有更好的体验、更快的解析速度,会把来自不同运营商的用户解析成对应地域的服务器上,大大提升了访问速度。

智能DNS搭建(关防护、双网卡且DNS服务+内网测试机+外网测试机)

实验环境

 DNS服务器:
     ens33(vmnet1):192.168.30.67
     ens34(vmnet2):192.168.88.75
     开启路由转发
 网站服务器:
     ens33(vmnet1):192.168.30.68
     ens34(vmnet2):192.168.88.76
     开启路由转发
 内网测试机:
     ens33(vmnet1):192.168.30.xx 
     网关和DNS1都设置为DNS服务器的内网IP(192.168.30.67)
 外网测试机:
     ens34(vmnet2):192.168.88.xx
     网关和DNS1都设置为DNS服务器的外网IP(192.168.88.75)
服务器配置

 # 按上面的实验环境,配置相应的物理网卡和网卡信息
 ​
 # 安装DNS软件包
 $ yum -y install bind
 # 修改主配置文件
 $ vim /etc/named.conf
     view lan{
         match-clients{192.168.30.0/24;};
         zone "." IN {
             type hint;
             file "named.ca";
         }
         include "/etc/lan.zones";
     }
     view wan{
         match-clinets{any;};
         zone "." IN {
             type hint;
             file "named.ca";
         }
         include "/etc/wan.zones";
     }
     #include "/etc/named.rfc1912.zones"; # 注释掉默认的区域配置文件
 ​
 # 配置区域文件、配置同上
 $ cp -a /etc/named.rfc1912.zones /etc/lan.zones
 $ cp -a /etc/named.rfc1912.zones /etc/wan.zones
 $ vim /etc/lan.zones
     zone "hongfu.com" IN {
         type master;
         file "hongfu.zheng.lan";
         allow-update { any; };
     };
     zone "30.168.192.in-addr.arpa" IN {
         type master;
         file "hongfu.fan.lan";
         allow-update { any; };
     };
 $ vim /etc/wan.zones
     zone "hongfu.com" IN {
         type master;
         file "hongfu.zheng.wan";
         allow-update { any; };
     };
     zone "88.168.192.in-addr.arpa" IN {
         type master;
         file "hongfu.fan.wan";
         allow-update { any; };
     };
 ​
 # 配置数据文件
 $ cd /var/named
 $ cp -a named.localhost hongfu.zheng.lan
 $ cp -a named.loopback hongfu.fan.lan
 $ cp -a named.localhost hongfu.zheng.wan
 $ cp -a named.loopback hongfu.fan.wan
 $ vim hongfu.zheng.lan
     $TTL 1D
     @       IN SOA  hongfu.com. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.hongfu.com.
     www     A       192.168.30.68
     dns     A       192.168.30.67
 $ vim hongfu.fan.lan
     $TTL 1D
     @       IN SOA  hongfu.com. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.hongfu.com.
     67      PTR     dns.hongfu.com.
     68      PTR     www.hongfu.com.
 $ vim hongfu.zheng.wan
     $TTL 1D
     @       IN SOA  hongfu.com. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.hongfu.com.
     www     A       192.168.88.76
     dns     A       192.168.88.75
 $ vim hongfu.fan.wan
     $TTL 1D
     @       IN SOA  hongfu.com. rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
             NS      dns.hongfu.com.
     75      PTR     dns.hongfu.com.
     76      PTR     www.hongfu.com.
 ​
 # 重启服务
 $ systemctl restart named
 ​
 # 开启路由转发
 # CentOS7:
 $ vim /usr/lib/sysctl.d/50-default.conf
     net.ipv4.ip_forward=1
 # 验证开启成功
 $ grep ip_forward /usr/lib/sysctl.d/50-default.conf
 $ reboot
 ​
 # CentOS6:
 $ vim /etc/sysctl.conf
     net.ipv4.ip_forward=1
 # 验证开启成功
 $ sysctl -p  
网站服务器

 # 按上面的实验环境,配置相应的物理网卡和网卡信息
 ​
 #:
 $ yum -y install httpd
 $ systemctl start httpd
 $ ss -antp | grep :80
 $ cd /var/www/html   # 写测试界面
     echo "test pages~" > index.html
 $ curl localhost    # 模拟浏览器访问网站
 ​
 # 开启路由转发
 # CentOS7:
 $ vim /usr/lib/sysctl.d/50-default.conf
     net.ipv4.ip_forward=1
 # 验证开启成功
 $ grep ip_forward /usr/lib/sysctl.d/50-default.conf
 $ reboot
 或:
 # CentOS6:
 $ vim /etc/sysctl.conf
     net.ipv4.ip_forward=1
 # 验证开启成功
 $ sysctl -p  
内网测试机

 # 按上面的实验环境,配置相应的物理网卡(vmnet1)和网卡信息
 ​
 # 配置网卡信息
 $ vim /etc/sysconfig/network-scripts/ifcfg-eth0
     IPADDR=192.168.30.xx
     GATEWAY=192.168.30.67
     DNS1=192.168.30.67
 $ service network restart
 ​
 # 安装解析工具
 $ yum -y install bind-utils
 # 测试DNS解析功能
 $ nslookup 配置的域名
 ​
 # 测试网页功能:
 $ curl 网站服务器域名
外网测试机

 # 按上面的实验环境,配置相应的物理网卡(vmnet2)和网卡信息
 ​
 # 配置网卡信息
 $ vim /etc/sysconfig/network-scripts/ifcfg-eth0
     IPADDR=192.168.88.xx
     GATEWAY=192.168.88.75
     DNS1=192.168.88.75
 $ service network restart
 ​
 # 安装解析工具
 $ yum -y install bind-utils
 # 测试DNS解析功能
 $ nslookup 配置的域名
 ​
 # 测试网页功能
 $ curl 网站服务器域名

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1拾柒7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值