当前位置: 首页 > 编程日记 > 正文

DNS高速缓存

DNS相关资料:

1.什么是DNS
 DNS(Domain Name System域名系统)
       是互联网上存储域名和ip映射关系的一个分布式数据库,它负责把域名转换成ip地址,或ip地址转换为域名。DNS运行于TCP/UDP的53端口上。
2.什么是高速缓存DNS
       DNS服务器可以高速缓存从其他DNS服务器收到的DNS记录,也可以在DNS客户服 务中使用高速缓存,将其作为DNS客户端保存在最近的查询过程中得到的信息高速缓存的方法
3.DNS高速缓存的作用
       当某个访问请求解析过一个域名以后,该解析记录就放置在缓存中,以后再有同样的解析请求,就直接从缓存中提供结果,加快了访问者的应答速度。

DNS服务器部署

简介:

        DNS(Domain Name Server)是基于tcp和udp协议的服务;实现IP与域名之间的映射;就像我们生活中的身份证号与名字之间的 映射一样。

在互联网这个大环境中,我们平时上网使用的都是类似于www.baidu.com的域名,这是我们人类易读的互联网,但是在实际的数据传输中,我们用到的都是ip地址,计算机无法直接识别我们常用的域名,因此我们就需要一个在我们和计算机之间做翻译的服务,而这个服务就是DNS。DNS是基于tcp和udp协议的服务,用于我们日常的域名解析帮助我们在域名和ip地址中相互转换,DNS所用端口为53端口,在linux中dns服务的服务名为named,安装包为bind,一般情况下我们可以在linux系统中直接通过“yum -y install bind”即可安装我们需要的DNS服务。

我们的域名作为数据存储在世界上13台根DNS服务器上,当我们需要查找域名时就会去这13台服务器去访问然后就会告诉你你询问的域名所对应的ip

   DNS解析过程:

客户端先查看浏览器缓存和本地host文件,本地DNS解析缓存,没有的话就交给本地域名解析服务器(由运营商提供),本地域名缓存解析服务器收到解析请求后,先看本地缓存有没有,如果没有直接找域名根服务器,根收到www.google.com这个请求时,会说不明白在哪里,但是根节点服务器会返回.com给本地域名解析服务器,然后本地域名解析服务器再找.com,找到后,再找google.com,最终找到www.google.com这个主机

DNS分布

DNS查询过程

解析:

(1)将域名,主机名解析对应的ip地址          正向解析
(2)将IP地址解析成对应的主机名,域名     反向解析    

详细的请求的顺序为:

  1. 客户端Host文件标识
  2. 客户缓存
  3. 服务器区域设定
  4. 服务器缓存
  5. 其它服务器

环境:

[root@foundation1 ~]#            //主机:172.25.1.250

[root@server1 ~]#                   //(服务器端)server1:17225.1.1

[root@server2 ~]#                   //(客户端)    server2:17225.1.2

DNS高速缓存

服务器端:

[root@server1 named]# systemctl start named  
[root@server1 named]# systemctl enable named
[root@server1 named]# systemctl stop firewalld
[root@server1 named]# systemctl disable firewalld

[root@server1 named]# yum install -y bind              //下载所需软件

[root@server1 named]# vim /etc/named.conf

options {
        listen-on port 53 { any; };               //设置默认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";
        allow-query { any; };                                     //设置所有访问均允许                   
        forwarders {172.25.1.250;};                         //dns高速缓存,指向其它DNS服务器

dnssec-validation no;                     //不做互联网认证

[root@server1 named]# systemctl restart named

[root@server1 ~]# netstat -antlp | grep named

[root@server1 named]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

GATEWAY=172.25.1.250               //设置网关为主机

[root@server1 named]# systemctl restart network


[root@server1 named]# vim /etc/resolv.conf           //配置主配置文件

nameserver 192.168.43.1                  //设置所需的dns


在客户端查询域名对应ip:

[root@server2 ~]# vim /etc/resolv.conf                   //将所需测试的主机设置为dns

[root@server2 ~]# dig www.baidu.com

耗时为1

[root@server2 ~]# dig www.baidu.com

耗时为0

//这说明DNS的高速缓存已经配置成功,显示出了dns缓存的目的,访问速度加快了

DNS正向解析

服务器端:

[root@server1 ~]# vim /etc/named.conf

#       forwarders {172.25.1.250;};                 //注释掉其中的forwarders那行,取消向其他主机询问,自己充当DNS

[root@server1 ~]# vim  /etc/named.rfc1912.zones                   //也是named的配置文件,单独列出

zone"westos.com"IN{                      ##域名
    type master;
    file"westos.com.zone";     ##正向解析域名文件
    allow-update{none;};
   };

[root@server1 ~]# cd /var/named
[root@server1 named]# cp -p named.localhost westos.com.zone              //利用该模板生成正向解析域名文件
[root@server1 named]# vim westos.com.zone                        ##编辑域名解析文件

$TTL 1D                       //生存期, 默认单位为秒,另可设定为[W|D|H|M] 
@       IN SOA   dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

NS    dns.westos.com.
dns     A     172.25.1.100                //地址解析服务端
hello   A     172.25.1.200               //自定义域名解析

  •         NS      @                     ; 直接输入域名,访问@  
  •         A       127.0.0.1          ; 直接输入域名,解析到的IPV4的IP  
  •         AAAA    ::1                 ; 直接输入域名,解析到的IPV6的IP  

注释:
@ 相当于子配置文件中“ ”中所写的值,SOA相当于授权
1D 表示数据内容自动保存一天

[root@server1 named]# systemctl restart named


在客户端测试:

[root@server2 ~]# vim /etc/resolv.conf

nameserver 172.25.1.1                          //确认添加nameserver 172.25.1.1

[root@server2 ~]# dig  hello.westos.com

[root@server2 ~]# dig  dns.westos.com

正向轮询域名解析

服务器端:

[root@server1 named]# vim westos.com.zone

$TTL 1D
@       IN SOA   dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

NS    dns.westos.com.
dns     A     172.25.1.100
hello   A     172.25.1.200
www    CNAME  node1.westos.com.
node1   A     172.25.1.110
node1   A     172.25.1.220

//CNAME 表示把规范名称转化为不规范名称

[root@server1 named]# systemctl restart named

在客户端测试

[root@server2 ~]# dig www.westos.com

[root@server2 ~]# dig www.westos.com


此时可以看到自动交替访问两个ip


DNS反向解析

服务器端:
vim /etc/named.rfc1912.zones            //将正向解析注释掉

zone "1.25.172.in-addr.arpa" IN {                    //域名对应的ip反向写,表示的是172.25.1这个ip段
        type master;
        file "westos.com.ptr";                //域名反向解析文件
        allow-update { none; };
};

[root@server1 named]# pwd

[root@server1 named]# cp -p named.localhost westos.com.ptr               //用该模板拷贝出反向解析域名文件

[root@server1 named]# vim westos.com.ptr             //编辑域名反向解析文件

$TTL 1D
@      IN  SOA  dns.westos.com.  root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS           dns.westos.com.
dns     A             172.25.1.150                         //地址解析服务端
222     PTR       hello.westos.com.                //反向解析的自定义内容
111     PTR       linux.westos.com.

[root@server1 named]# systemctl restart named

在客户端测试:
dig -x 172.25.254.111


dig -x 172.25.254.222          //其中 -x 表示反向

DNS集群-----主从DNS

环境:

服务器端:     主DNS(server1):    172.25.1.1                     从DNS(server3):    172.25.1.3

客户端:          server2:    172.25.1.2

三台主机均配置好yum源

服务器端:
主DNS:

[root@server1 ~]# vim /etc/named.rfc1912.zones

zone "westos.com" IN {
      type master;
      file "westos.com.zone";
        allow-update { none; };
        allow-transfer{172.25.1.2;};
        also-notify{172.25.1.2;};                               //从DNS的ip
 };

systemctl restart named

从DNS:

[root@server3 ~]# yum install -y bind

[root@server3 ~]# systemctl start named

[root@server3 ~]# vim /etc/named.conf

options {
        listen-on port 53 { any; };
        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";
        allow-query     { any; };

[root@server3 ~]# vim /etc/named.rfc1912.zones

zone "westos.com" IN {
        type slave;               //将其设置为slave(备)
        masters{172.25.1.1;};                //主dns的ip
        file "westos.com.zone";
        allow-update{ none; };
};

[root@server3 ~]# systemctl restart named


在服务端测试:

[root@server2 ~]# vim /etc/resolv.conf              //修改nameserver为从DNS的ip

[root@server2 ~]# dig hello.westos.com

主DNS修改后测试,则从DNS自动更新

[root@server1 named]# vim westos.com.zone

$TTL 1D
@       IN SOA   dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
       NS    dns.westos.com.
dns     A     172.25.1.100
hello  CNAME  www
www     A     172.25.1.115
www     A     172.25.1.116

//修改后的域名解析文件

客户端进行测试

[root@server2 ~]# dig hello.westos.com

DNS的双向解析

实现内外网的分离

vim /etc/named.conf
注释掉
/*
zone"."IN{          
    type  hint;
    file"westos.ca";     
    };
include "/etc/named.rfc1912.zones;"
include "/etc/named.root.key";
*/

view localhost {
    match-clients {172.25.254.106;};
    zone "." IN {
      type  hint;
      };   
include "/etc/named.rfc1912.zones;"
    };
view Anynet {
    match-clients {any;};
    zone "." IN {
      type  hint;
      file "named.ca";
      };   
include "/etc/named.rfc1912.inter";
    };                       ##实现内外网分离

zone到key";
实现内外网的分离
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter  ##外网配置文件
vim /etc/named.rfc1912.inter
zone"westos.com"IN{            
    type master;
    file"westos.com.inter";
    allow-update{none;};
cd /var/named
cp -p westos.com.zone    westos.com.inter
vim westos.com.inter             ##外网域名解析文件
客户端测试
vim /etc/resolv.conf          ##为两个网络段的客户端配置nameserver
dig www.westos.com

DNS的远程更新(稍后补充)

  • 基于正常认证方式的远程更新
  • 基于key认证的远程更新

DNS动态域名解析(稍后补充)

相关文章:

将时间改为显示:几天前,几小时前,或者几分钟前

(原博客地址:http://blog.csdn.net/kenhins/article/details/38010811) 方法一: 个人做法是保存时间戳,然后在前端用jq插件做转换,比如 smart-time-ago ----------------------------------------------- 方…

支持placeholder和自适配高度的TextView控件

一.应用于项目的效果如下: 二.使用方法: 1.导入JXTextView.h头文件 2.初始化,并添加到view中: JXTextView *textView [[JXTextView alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];textView.placeholder "请输入内容";tex…

ZOJ 3735 dp

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode3735 好久没做DP题了,一开始没理解题目里的C(M,3)是干什么,原来就是组合,C M 取3,就等于n*(n-1)*(n-2)/6;题目里还有…

haproxy实现高可用及负载均衡

Haproxy简介: Haproxy是一个使用c语言编写的自由开发源代码软件,它提供高可用性、负载均衡、以及基于http和tcp的应用程序代理。Haproxy特别使用于那些负载特别大的web站点。Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接&#…

Apache转发到Tomcat

#vi /etc/httpd/conf/httpd.conf 添加下面配置 NameVirtualHost *:80 <VirtualHost *:80>ProxyPreserveHost OnServerName www.域名.comProxyPass / http://www.域名.com:8080/system/ErrorLog logs/error_logCustomLog logs/access_log common</VirtualHost> 作者…

.net基础问题

string sqlstr "select BranchCode,BranchName from t_sys_Branch where Jglx_DataDm{0} and IsVisible1"; sqlstr string.Format(sqlstr, departType); 上述代码运行之后 sqlstr"select BranchCode,BranchName from t_sys_Branch where Jglx_DataDmdepartTyp…

【iOS】NSDate分类,获得中国农历

1.说明&#xff1a; 参考网上代码写的一个分类&#xff0c;只需一句代码就可得到NSDate对象所对应的中国农历、星期。 2.使用方法&#xff1a; &#xff08;1&#xff09;导入分类头文件&#xff1a; #import "NSDateChineseDate.h"&#xff08;2&#xff09;NSDat…

LVS_NAT实现负载均衡

简介&#xff1a; 基于NAT机制实现。当用户请求到达director之后&#xff0c;director将请求报文的目标地址(即VIP)改成选定的realserver地址&#xff0c;同时将报文的目标端口也改成选定的realserver的相应端口&#xff0c;最后将报文请求发送到指定的realserver&#xff1b;…

自定义Push和Pop过渡动画

一、效果和源码 本文介绍如何实现一个NavigationController的自定义Push和Pop过渡动画&#xff0c;运行效果如下&#xff1a; 源码&#xff1a;https://github.com/dolacmeng/TransitionDemo 或http://download.csdn.net/detail/dolacmeng/9572384二、准备工作 首先&#xff0…

centos 安装 mysql 5.7

一&#xff0c;wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm 二&#xff0c;yum localinstall mysql57-community-release-el6-8.noarch.rpm 三&#xff0c;yum install mysql-server 四&#xff0c;mysqld --initialize --usermysql 五&#xf…

c语言:婚礼上的谎言

/* 三对新人参加婚礼&#xff0c;三位新郎A,B,C,三位新娘X,Y,Z。 有人想知道谁与谁结婚&#xff0c;于是就问他们&#xff1a; A说他将和X结婚&#xff1b; X说他的未婚夫是C&#xff1b; C说他将和Z结婚。 这人时候知道他们都在说谎。编程求谁与谁结婚&#xff01; */ /* 思路…

redis主从复制、高可用和集群

redis简介&#xff1a; redis是一个key-value存储系统.和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs&#xff08;哈希类型&#xff09;;这些数据类型都支持push/pop、…

对学习编译原理的看法

我认为编译原理这本书是一门与代码做斗争的课程&#xff0c;学习编译原理能够追寻程序设计语言的本质&#xff0c;了解计算机各种语言编译的原理。学习了编译原理能够更加深入的了解计算机各种高级语言使用的原理&#xff0c;能使自己更加容易更加好的学习好程序语言&#xff0…

iOS提示气泡,带动画

1.效果如图&#xff1a; 从项目中抠出来的&#xff0c;做了简单的封装。 2.用法&#xff1a; //顶部提示HYNoticeView *noticeTop [[HYNoticeView alloc] initWithFrame:CGRectMake(50, 66, 250, 40) text:"这里可以查询全城婚礼人的档期哦&#xff01;" position:…

GIt/Github常用命令

1&#xff09;git init:初始化本地仓库 2&#xff09;创建文件&#xff1a;touch read.txt 3&#xff09;当操作本地的文件时&#xff0c;使用常用的命令&#xff0c;如&#xff08;mv&#xff0c;ls。。&#xff09;就可以操作&#xff0c;当操作暂存区的文件时需要在命令前家…

python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)

实验环境&#xff1a;python2.7 题目1&#xff1a;python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数”程序&#xff1a; import math def factorial(n): #定义一个函数&#xff0c;返回一个数的阶乘 if n0: return 1 else: sumn*factorial(n-…

【动画1】UIView动画

讲一下动画。将分为以下5篇博客。 一&#xff09;UIView动画 二&#xff09;Layer动画 三&#xff09;3D动画 四&#xff09;转场动画 五&#xff09;第三方动画框架 相关代码&#xff1a;https://github.com/dolacmeng/AnimationDemo 参考资料&#xff1a;iOS Animation…

【python】解压文件

参考&#xff1a;http://essen.iteye.com/blog/1941489 tarfile模块 具体使用方法&#xff1a; https://docs.python.org/2/library/tarfile.html 例子&#xff1a;一次性解压所有文件 import tarfilet tarfile.open("abc.tgz", "r:gz")t.extractall(path…

JS设计模式——3.封装与信息隐藏

封装、信息隐藏与接口的关系 信息隐藏是目的&#xff0c;封装是手段。 接口提供了一份记载着可供公共访问的方法的契约。它定义了两个对象间可以具有的关系。只要接口不变&#xff0c;这个关系的双方都是可以替换的。 一个理想的软件系统应该为所有类定义接口。 创建对象的基本…

nginx源码编译、负载均衡及模块的扩展

1、nginx源码编译 实验环境&#xff1a; iptables和selinux关闭 redhat6.5 nginx&#xff1a;test1: 172.25.1.11 [roottest1 ~]# ls nginx-1.14.0.tar.gz [roottest1 ~]# tar zxf nginx-1.14.0.tar.gz [roottest1 ~]# useradd -s /sbin/nologin nginx [roottest1 ~]# i…

LinkedHashMap and LinkedHashSet

LinkedHashMap实现了Map接口&#xff0c;是HashMap的直接子类&#xff0c;它同时满足HashMap和linked list的某些特性。可将LinkedHashMap看作采用linked list增强的HashMap。 LinkedHashMap在HashMap的基础上&#xff0c;采用双向链表&#xff08;doubly-linked list&#xff…

Windows Phone开发(19):三维透视效果

Windows Phone开发&#xff08;19&#xff09;&#xff1a;三维透视效果 原文:Windows Phone开发&#xff08;19&#xff09;&#xff1a;三维透视效果 三维效果也可以叫透视效果&#xff0c;所以&#xff0c;我干脆叫三维透视效果。理论知识少讲&#xff0c;直接用例开场吧&am…

【动画2】CALayer动画

一&#xff09;UIView动画 二&#xff09;CoreAnimation动画 前言&#xff1a;上一篇已经介绍了UIKit给我们封装好的UIView动画的使用&#xff0c;UIKit动画是建立在CoreAnimation动画之上的&#xff0c;CoreAnimation是直接作用于CALayer上而非UIView。一、CoreAnimation动画…

nginx+tomcat+memcache实现负载均衡、session共享

实验架构图&#xff1a; Table of Contents 1、配置tomcat 2、安装memcache 3、查看tomcat和memcache是否配置好 4、nginx实现负载均衡&#xff1a; 5、客户端进行测试&#xff1a; 6、验证结论&#xff1a; 7、总结&#xff1a; 实验环境&#xff1a; linux redhat6.…

(转)二叉树系列面试问题

转自 &#xff1a;http://blog.csdn.net/luckyxiaoqiang/article/details/7518888/ 版权所有&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01;http://blog.csdn.net/walkinginthewind/article/details/7518888 树是一种比较重要的数据结构&#xff0c;尤其是二叉树。二…

百度UEditor开发案例(JSP)

本案例的开发环境&#xff1a;MyEclipsetomcatjdk 本案例的开发内容&#xff1a;用百度编辑器发布新闻&#xff08;UEditor的初始化开发部署&#xff09;编辑已发过的新闻&#xff08;UEditor的应用——编辑旧文章&#xff09;上传附件、图片等 由于百度编辑器强大的功能&a…

iOS中的动力学:Dynamics【1】

iOS7建议我们创建的界面具有物理特性&#xff0c;而不只是像素的集合&#xff0c;可以响应触摸、手势、屏幕方向改变等事件&#xff0c;让用户与界面之间有更深入的交互&#xff0c;而不是像iOS6那样在软件界面上模仿现实世界的纹理而已。或许你会认为创建感觉上真实的界面比创…

自动化运维工具Saltstack(一)

1、saltstack简介&#xff1a; 什么是saltstack&#xff1f; saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroMQ使得SaltStack能快速在成千上万台机器上进行各种操作 采用RSA Key方式确认身份 传输采用AE…

【UIDynamic例子】挂起的方块

通过前面的动力学小Demo&#xff08;本文默认你已经看过这篇Blog&#xff1a;传送门&#xff09;&#xff0c;我们对UIKit中的UIDynamic已经有了初步的认识。现在我们写个更加有趣的Demo&#xff1a;模拟一个用弹性绳子挂起的小方块&#xff0c;用户可以将它拖动到屏幕任意位置…

IIS7 配置PHP服务器

安装PHP Manager&#xff1a; 1&#xff09;访问 http://phpmanager.codeplex.com/releases/view/69115 下载PHP Manager。其中&#xff0c;x86 为32位 Windows 系统使用&#xff0c;x64 为64位 Windows 系统使用&#xff0c;请根据使用的 Windows 系统情况下载 2&#xff09;下…