zoukankan      html  css  js  c++  java
  • DNS

    DNS(Domain Name System)域名服务系统

    DNS定义

    DNS is a hierarchical decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical IP addressesneeded for locating and identifying computer services and devices with the underlying network protocols. By providing a worldwide, distributed directory service, the Domain Name System is an essential component of the functionality on the Internet, that has been in use since 1985

    从上述的定义中可以看出DNS功能和特点如下:

    • IP到人类易读和易记的域名的翻译如访问www.baidu.com可以通过此域名或IP61.135.169.125访问
    • 层级架构
    • 分布式部署

    本地名称解析配置文件:hosts

    /etc/hosts
    %WINDIR%/system32/drivers/etc/hosts
    122.10.117.2 www.magedu.com
    93.46.8.89 www.google.com

    如果事先知道IP和域名的关系,则可以在本地主机上直接配置IP和域名的对应关系,此时访问hosts里的域名是不需要经过DNS的解析。因为客户端云访问域名时,第一步是到本地的/hosts的文件时查找。但是互联网上的如此碰的域名和IP的解析关系通过配置本地的hosts文件是不可行的,还是需要依赖DNS。

    DNS:Domain Name Service 应用层协议

    53/udp, 53/tcp

    DNS服务器类型

    • 主DNS服务器:管理和维护所负责解析的域内解析库的服务器
    • 从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
    • 缓存DNS服务器(转发器)

    主DNS服务器和从DNS服务器同步的工作机制:

    “通知”机制:主服务器解析库发生变化时,会主动通知从服务器

    • 序列号:解析库版本号,主服务器解析库变化时,其序列递增 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    • 过期时长:从服务器联系不到主服务器时,多久后停止服务

    对应在配置文件/var/named/linuxdevops.net.zone 

    0 serial (解析库版本号,只要有变化就要手动加1)
    1D ; refresh (刷新时间)
    1H ; retry(重试时间 )
    1W ; expire(过期时间)
    3H ) ; minimum(否定答案的TTL值:查找不到的缓存时间,如用户查找wwww.baidu.com,因为这是一个错误的查询,缓存DNS服务器会告诉用户这是一个错误查询,如果用户后几次的请求还是同样的错误,缓存DNS服务器会直接通知此用户结果查询错误,减少向主DNS服务器查询的负担)

    DNS解析

    一次完整的查询请求经过的流程:
    Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

    DNS查询类型

    递归查询:小区DNS缓存DNS服务器收到客户端的请求后,把请求转发至根DNS服务器,特点是负责到底
    迭代查询:根DNS服务器根据域名的类型如.com,转发至相应的DNS服务器,特点是不负责到底

    DNS基本配置

    /etc/named.conf DNS的主配置文件

    listen-on port 53 { localhost; };  localhost代表所有本机的IP

    allow-query { localhost; any; }; 可以查询的客户端,localhost代表本机。

      最佳实践:把上述两行comment out

    /etc/named.rfc1912.zones

    zone "linuxdevops.net" IN {
    type master;
    file "linuxdevops.net.zone";
    };

    /var/named/linuxdevops.net.zone (区域解析数据库文件)

    资源记录定义的格式:
    语法:name [TTL] IN rr_type value

    注意:

    • TTL可从全局继承
    • 后面记录可以继承上一行的值(如A记录中的TTL和IN都可以省略)
    • @可用于引用当前区域的名字
    • 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
    • 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

    例子

    $TTL 1D
    @ IN SOA master.linuxdevops.net. admin.linuxdevops.net. (
                                                                                0 ; serial
                                                                               1D ; refresh
                                                                               1H ; retry
                                                                               1W ; expire
                                                                                3H ) ; minimum
                  NS    master
    master    A    172.20.42.145
    www   A    172.20.103.43

    $TTL 1D 全局TTL值,默认是秒为单位;DNS的缓存时间

    @代表当前域名本身,在本例子中是linuxdevops.net,@也可以用精确的域名linuxdevops.net代替,但是必须加dot,如linuxdevops.net.

    admin.linuxdevops.net. (邮件记录,应该是admin@linuxdevops.net,但是@在bind配置中有特殊意,所以用dot代替)

    DNS别名配置

    在dig www.linuxdevops.net,别名记录会解析到相对应的两个A记录,如果部署是web服务器,可以起到负载均衡的作用。

    DNS主从配置

    • 在从服务器上安装bind

    • /etc/named.rfc1912.zones(masters是主DNS服务器的IP,从服务器的文件生成路径是/var/named/slaves/系统默认的)

    • 在主DNS服务器的区域数据库文件linuxdevops.net.zone中加入从DNS服务器的NS记录以及从DNS服务器的A记录

    • 启动从DNS服务器的named服务 systemctl start named
    • reload主DNS服务器
    • 检查从服务器的/var/named/slaves,会看到解析库文件自动从主同步成功

    也可以通过systemctl status named -l查看详细的同步过程

     智能DNS

    • 智能DNS是CDN网络的基础
    • 能够通过配置view来区别客户请求的IP把用记的请求发送到最近的边缘节点
    • 可以实现不同的区域内容发布的个性化

    实验目标:

    来自不同网段的IP访问事先分配好的网站:192.168.30.0/24网段访问172.20.103.43的web站点,172.20.0.0/16网段访问172.20.42.143的web站点,两个站点的URL相同www.linuxdevops.net但是主页内容有差别(192.168.30.201和172.20.42.145分别为主DNS的两个IP)

    配置过程

    主配置文件named.conf

    named.rfc1912.zones

    把根域从主配置文件移动到此文件,一旦启用了view,所有的zone都只能定义在view中。

    named.rfc1912.zones.bj

    named.rfc1912.zones.sh

    /var/named

    linuxdevops.net.zone

     linuxdevops.net.zone.bj

    linuxdevops.net.zone.sh

    测试

    通过192网段云查询DNS:dig www.linuxdevops.net @192.168.30.201

    通过172网段:dig www.linuxdevops.net @172.20.42.145

     DNS实验

    需求:

    建立公司内部的DNS,client通过DNS proxy来查询访问www.linuxdevops.net,通过自已的根域,com域,以及主备DNS访问web1, web2,在此实验中,web server和DNS部署在同一服务器上。

    准备:

    • 5 台CentOS7服务器,一台windowns客户端
    • 把SElinux, Firewall disabled
    • 编写脚本,在Ansible堡垒机上运行,完成到所有客户端的ssh验证

    vim ip.txt

    172.20.103.43
    172.20.42.200
    172.20.42.201
    172.20.42.202
    172.20.42.203
    172.20.42.204

     #!/bin/bash
    rpm -q expect &> /dev/null || yum install expect -y
    ssh-keygen -P "" -f "/root/.ssh/id_rsa"
    password=verimatrix
    while read ipaddr;do
    expect <<EOF
    set timeout 10
    spawn ssh-copy-id $ipaddr
    expect {
    "yes/no" { send "yes ";exp_continue }
    "password" { send "$password " }
    }
    expect eof
    EOF
    done < ip.txt

    • ansible dnsservers -m yum -a 'name=bind' 安装bind在5台服务器上
    • 确认安装成功

    配置各DNS

    根DNS

    配置文件:/etc/named.rfc1912.zones

     COM DNS服务器

     

    主DNS服务器

     

    从DNS服务器

    同时在主从DNS服务器上安装httpd, 建立两个不同的页面,显示server1 server2

    DNS proxy服务器

     

    Windows客户端

      把DNS指向DNS proxy IP:

          访问www.linuxdevops.com

     

  • 相关阅读:
    拉格朗日插值
    [数论] hdu 5974 A Simple Math Problem (数论gcd)
    混合图欧拉回路
    上下界网络流
    HDU 6623 Minimal Power of Prime(数学)
    图的连通度
    最小点权覆盖和最大点权独立集
    最大权闭合子图(最小割,蕴含式最大获利问题)
    CodeForces Goodbye 2017
    网络流建模汇总
  • 原文地址:https://www.cnblogs.com/liangjindong/p/9115472.html
Copyright © 2011-2022 走看看