zoukankan      html  css  js  c++  java
  • DNS服务器

     
    一、DNS(Domain  Name  System,域名系统)万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。(正向解析)DNS协议运行在ECP/UDP协议之上,使用端口号53。
    DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。.
    >正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。..
    >反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,如可用于反垃圾邮件的验证。

    域名解析流程:
    1,浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
    2,如果浏览器缓存中没命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过。盘里hosts文件来设置,如果你在这里指定了一个域名对应的ip.地址,那浏览器会首先使用这个IP地址。但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。.
    3,如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。.
    4,如果LDNS仍然没有命中,就直接跳到根域名服务器请求解析.
    5,根域名服务器返回给LDNS一个所查询域的主域名服务器(GTLD Server,国际顶尖域名服务器如.com.cn.org等)地址。
    6,此时LDNS再发送请求给上一步返回的CTLD.
    7,接受请求的GTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。+
    8,Name Server根据映射关系表找到目标ip,返回给LDNS。
    9,LDNS缓存这个域名和对应的ip..
    10,LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程完毕。
    二、安装和控制DNS服务器:
    1.安装BIND软件。
    在Centos7.x系统中,系统光盘自带了BIND服务的多个安装文件,各软件包的主要作用如下。
    bind:提供了域名服务的主要程序及相关文件。
    bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
    bind-libs:提供了bind,bind-utils需要使用的库函数。
    bind-chroot:可选软件包,为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND的根目录),以提高安全性。也称为jail(监牢)机制.
    #前三个是必须装的软件。
    yum   -y   install    bind
    #默认已安装bind-utils和bind-libs,所以只需要安装bind即可。
    !!!!!!!!!!!!!!!!!!!
    服务名是“named”  和软件名称不一样!
    启动服务: systemctl   start   named
    2.BIND服务的配置文件。
    (1)主配置文件: /etc/named.conf
    (2)区域配置文件: /var/named
    主配置文件:
    主配置文件named.sonf通常位于etc 目录下,在naned.eonf、文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号";"表示结束,以“#”号或者"//"开始的部分表示注释文字(大段注释可以使用"/*......*/"的格式)。.
    vim   /etc/named.conf
    options {
    listen-on port 53 { 127.0.0.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";
    allow-query { localhost; };   //允许使用本DNS服务器的网段
    recursion yes;
    };

    区域配置部分
    区域配置参数使用"zone...... {}; "的配置格式,一台DNS服务器可以为多个区域提供解析,因此在naned.conf文件中也可以有很多个zone配置段。区域类型按照解析方向可分为正向区域、反向区域。.
    vim named.conf.
    .......
    zone"crushlinux.com"IN{   //正向"crushlinux.com"区域
     type  master;   //类型为主区域.
     file   "crushlinux.zheng"  //区域数据文件为crushlinux.com.zone.
     allow-transfer{192.168.200.112;}; //允许下载的从服务器地址
    };
    zone"200.168.192.in-addr.arpa"  IN {   //反向"192.168.200.0/24"区域
     type master;
     file  "crushlinux.fan";
    };

    主配置文件写完之后,可以使用下面命令验证主配置文件的正确性。
    named-checkconf   -z   /etc/named.conf
     
    构建主DNS域名解析服务器。
    确认本机的网络地址、主机映射、默认DNS服务器地址。
    yum   -y  install  bind   bind-utils   bind-libs
    cat  /etc/resolv.conf
    nameserver 192.168.200.181
    nameserver 192.168.200.182
    cat  /etc/hosts
    192.168.200.181 ns1.crushlinux.com
    192.168.200.182 ns2.crushlinux.com
    cat   /etc/named.conf
    options {
    directory "/var/named";
    };
    zone "crushlinux.com" IN {  //正向区域
    type master;   //类型为主要文件
    file "crushlinux.zheng";  //区域数据文件
    allow-transfer { 192.168.200.112; }; //允许下载的服务器地址
    };
    zone "200.168.192.in-addr.arpa" IN { //反向区域
    type master;
    file "crushlinux.fan";
    allow-transfer { 192.168.200.112; };
    };
    之后配置区域配置文件。
    cat /var/named/crushlinux.zheng
    $TTL 86400  //有效记录的生命周期
    @ IN SOA crushlinux.com. admin.crushlinux.com. ( 域名 认证授权 域名 管理员邮箱 
    20190817  //更新序号
    3H  //更新时间间隔
    15M  //更新失败再次尝试的间隔
    1W //若一直失败,尝试一周后结束
    1D  //失败解析记录缓存时间
    )
    IN NS ns1.crushlinux.com.
    IN NS ns2.crushlinux.com.
    IN MX 10 mail.crushlinux.com.
    ns1 IN A 192.168.200.111
    ns2 IN A 192.168.200.112
    mail IN A 192.168.200.113
    www IN A 192.168.200.114
    * IN A 192.168.200.111
    ftp IN CNAME www
    反向区域文件:
    cat /var/named/crushlinux.fan
    $TTL 86400
    @ IN SOA crushlinux.com. admin.crushlinux.com. (
    20190817
    3H
    15M
    1W
    1D
    )
    IN NS ns1.crushlinux.com.
    IN NS ns2.crushlinux.com.
    IN MX 10 mail.crushlinux.com.
    111 IN PTR ns1.crushlinux.com.
    112 IN PTR ns2.crushlinux.com.
    113 IN PTR mail.crushlinux.com.
    114 IN PTR www.crushlinux.com.
    111 IN PTR ns1.crushlinux.com.
     
    chown :named /var/named/crushlinux.*  修改区域配置文件的属组。
    named-checkconf -z /etc/named.conf  检查主配置文件。
    named-checkzone crushlinux.com /var/named/crushlinux.zheng
    named-checkzone crushlinux.com /var/named/crushlinux.fan #检查正反区域数据文件。
    确认无错后启动DNS。
    systemctl   start   named
    构建从DNS域名解析服务器
    cat /etc/resolv.conf
    nameserver 192.168.200.111
    nameserver 192.168.200.112
    cat /etc/hosts
    192.168.200.111 ns1.crushlinux.com
    192.168.200.112 ns2.crushlinux.com
    cat /etc/named.conf
    options {
    directory "/var/named";
    };
    zone "crushlinux.com" IN {
    type slave;
    file "slaves/crushlinux.zheng";  #会在/var/named/出现slaves的文件。
    masters { 192.168.200.111; };  #指定主服务器的地址。
    };
    zone "200.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/crushlinux.fan";
    masters { 192.168.200.111; };
    };
    保存退出
    systemctl restart named #启动从的DNS服务

    三、构建分离解析域名服务器。
    和DNS服务器区别在于针对不同的局域网访问输出不同的解析结果。
    修改/etc/named.conf主配置文件中为不同网络的客户机地址准备不同的1.zone区域设置,各自使用独立的数据文件
    vi /etc/named.conf
    options {
    directory "/var/named";
    };
    view "LAN" {   //view定义一个局域网。
    match-clients { 192.168.200.0/24; };  //匹配局域网(200网段)的客户端
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.lan";
    };
    };
    view "WAN" {
    match-clients { any; };   //匹配互联网(any指所有)的客户端
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.wan";
    };
    };
    2.分别建立不同的区域数据文件。
    cd /var/named/
    vi            crushlinux.zheng.lan
    $TTL 86400
    @ IN SOA crushlinux.com. admin.crushlinux.com. (
    2019011001
    3H
    15M
    1W
    1D
    )
    IN NS ns.crushlinux.com.
    ns IN A 192.168.200.111
    www IN A 192.168.200.112
    mail IN A 192.168.200.113
    vi           crushlinux.zheng.wan
    $TTL 86400
    @ IN SOA crushlinux.com. admin.crushlinux.com. (
    2019011001
    3H
    15M
    1W
    1D
    )
    IN NS ns.crushlinux.com.
    ns IN A 172.16.1.1
    www IN A 172.16.1.1
    mail IN A 172.16.1.1
    chgrp  named   crushlinux.zheng.*  #将两个文件的属组修改为named。
    systemctl  restart  named #重启服务
    3.DNS view的多种应用方式:
    (1)match-clients直接指定地址
    vi   /etc/named.conf
    options {
    directory "/var/named";
    };
    view "LAN" {
    match-clients { 192.168.200.0/24; };  //匹配局域网的客户端
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.lan";
    };
    };
    view "WAN" {
    match-clients { any; };   //匹配互联网的客户端
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.wan";
    };
    };
    (2)基于acl访问控制列表
    vi /etc/named.conf
    options {
    directory "/var/named";
    };
    acl lan { 192.168.200.0/24; };   //先定义一个局域网
    acl wan { any; };
    view "LAN" {   
    match-clients { lan; };   //在这儿直接引用上面定义的局域网
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.lan";
    };
    };
    view "WAN" {
    match-clients { wan; };  //匹配互联网的客户端
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.wan";
    };
    };
    (3)基于访问控制文件
    vi   /var/named/lan.txt  //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
    acl lan {
    192.168.200.0/24;
    };
    vi /var/named/wan.txt  //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
    acl wan {
    any;
    };
    vim /etc/named.conf
    options {
    directory "/var/named";
    };
    include "/var/named/lan.txt";  //直接应用所写的文件来定义。
    include "/var/named/wan.txt";
    view "LAN" {
    match-clients { lan; };
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.lan";
    };
    };
    view "WAN" {
    match-clients { wan; };
    zone "crushlinux.com" IN {
    type master;
    file "crushlinux.zheng.wan";
    };
    };
     
  • 相关阅读:
    CentOS7 Failed to start LSB: Bring up/down解决方法
    【转】Java包管理器Maven学习
    Android开发-API指南-<category>
    Android开发-API指南-<application>
    Android开发-API指南-<activity-alias>
    Android开发-API指南-<activity>
    Android开发-API指南-<action>
    Android开发-API指南-Android简介
    Android开发-API指南-Activity
    Android开发-API指南-应用程序开发基础
  • 原文地址:https://www.cnblogs.com/flff/p/12513023.html
Copyright © 2011-2022 走看看