前言

有一台Linux机器作为DNS服务器,查看这台机器上的DNS文件,发现指向互联网上的DNS服务器。

[root@ziqiang named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 222.222.222.222

那么问题来了,可以把这些互联网上的DNS服务器删掉,换成Linux服务器本身的IP吗? 换句话说就是让DNS服务器指向自己。

回答前言的问题

完全可以。

DNS服务安装完毕后,他就有根提示,天生就知道互联网上13个根DNS服务器。只要安装DNS服务的那台机器可以访问Internet,就完全可以解析全球域名。

因此DNS服务器的/etc/resolv.conf完全可以指向自己,对于未知域名,DNS服务器上的DNS服务会自己找根DNS服务器进行域名解析,并把解析结果保存在本地DNS服务器上。当然,/etc/resolv.conf指向Internet上的DNS服务器更是没毛病。

域名解析转发

回顾下DNS域名解析的过程

当内网计算机使用域名上网的时候,会先找该局域网内的DNS服务器,即本地DNS服务器。由于本地DNS服务器上配置了zone,他知道自己掌管了哪些域名。所以,如果客户机恰好请求的这些域名就是本地DNS管理的,本地DNS直接回复客户机。如果本地DNS服务器,不知道你请求的域名,他会直接向根DNS请求,然后经过DNS递归查询,最终将域名解析结果返回给客户机。

域名解析转发(foward)

上面DNS域名解析是正常的流程,也是很多大学教材里面讲解DNS域名解析过程用到的。下面介绍域名解析转发

考虑如下场景,母公司内部配置有本地DNS服务器,负责解析母公司内部服务器域名以及互联网上的域名。子公司与母公司物理距离较远,两地使用专线链接,专线带宽不高。子公司内部计算机不直接连接互联网。

假如不在子公司内部设置DNS服务器,子公司内部计算机对母公司内部域名解析请求以及互联网上域名解析请求都会交由母公司的DNS服务器(为啥子公司电脑不直接填互联网上的DNS?1.解析不到母公司私网的服务器 2.公司也不可能允许你这么做)。这部分域名解析流量会严重占用专用链路的带宽,导致网络阻塞。

在子公司内部设置一个DNS服务器,但是这个DNS服务器又有点不同。对于自己不知道域名,他并没有请求互联网上的根DNS服务器,而是把域名解析的流量转发给了母公司DNS服务器,这样有效降低了专用链路上域名解析的带宽占用。这种场景就是DNS转发。

DNS转发还有2种场景(或者说2个参数)

foward only  子公司DNS服务器指向母公司DNS服务器请求DNS解析。如果母公司DNS服务器挂了 或 子公司到母公司链路故障 或 母公司DNS上不了网(子公司DNS服务器可以解析母公司内网服务器域名),子公司DNS服务器无法解析Internet域名

foward first   子公司DNS服务器优先指向母公司DNS服务器,如果母公司DNS服务器连不上(比如子公司到母公司的链路故障)会使用子DNS服务器保存的根DNS服务器来解析域名(这时候无法解析母公司内网域名,可以解析Internet域名)。

如果子公司到母公司之间链路是好的,单纯母公司DNS服务器上不了网。子公司可以解析母公司内网服务器域名,但是无法解析Internet域名。

配置域名解析转发

在子公司DNS服务器上修改配置文件named.conf

[root@ziqiang named]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// options {
listen-on port { any; };
listen-on-v6 port { ::; };
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 { 192.168.80.0/;192.168.90.0/;};
recursion yes; forward only;
forwarders {192.168.60.111;}; dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no; /* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic";
}; logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
}; zone "." IN {
type hint;
file "named.ca";
}; include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

针对这个文件主要注意如下两个字段

forward only;
forwarders {192.168.60.111;};

forward only;  表明DNS转发模式

forwarders {192.168.60.111;};  转发给母公司哪个DNS服务器,可以设置多个

重启nemed服务 service named restart

域名解析条件转发

forward only;

forwarders {192.168.60.111;};

上面讲域名解析转发的时候添加的2个字段是针对所有域名的,还可以设置条件转发。

考虑如图场景,有2个DNS服务器,分别负责abc.com和xyz.com域名。对于左边DNS服务器下面的客户机,解析xyz.com域名时,通过条件转发可以直接找右边DNS服务器,而不是直接找根DNS服务器。

在左边DNS服务器上编辑文件/etc/named.conf加上下面一段话

[root@WebServer ~]# vi /etc/named.conf
zone "xyz.com." {
type forward;
forwarders { 192.168.80.111;};
};

DNS服务——域名解析转发 和 条件转发的更多相关文章

  1. DNS服务——域名解析委派

    域名解析委派 域名解析委派和DNS域名解析递归查询很像,举个例子解释域名解析委派 ①假设在.net域名下有台计算机想要访问www.cac.com. ②.net这台DNS服务器不知道www.cac.co ...

  2. DNS服务——域名解析容错

    介绍 DNS服务至关重要,你我每天访问网站不可能是记忆IP地址.因此DNS服务器的可靠性至关重要.下面介绍DNS服务器容错机制,看图 为了防止DNS服务器故障不再提供服务,引入辅助DNS服务器.辅助D ...

  3. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  4. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  5. Bind DNS服务——转发与区域记录更新

    Linux基础服务--Bind DNS服务 Part4 转发与区域记录更新 一个DNS服务器不可能保存所有的区域记录,所以我们一般都会将其他的区域纪录转发到其他的服务器上进行解析. Bind9提供了全 ...

  6. DNS之BIND使用小结(Forward转发)

    之前详细介绍了DNS及其在linux下的部署过程,今天再说下DNS的BIND高级特性-forwarder转发功能.比如下面一个案例:1)已经在测试环境下部署了两台内网DNS环境,DNS的zone域名为 ...

  7. Spring cloud微服务安全实战-5-4请求转发及退出

    步骤1234已经完成 下面处理 5678这几步.zuul在转发的时候 把请求头加上 获取订单信息 加一个按钮,登陆成功后,去拿订单的信息. 展示获取到的订单信息 ts代码 ts内定义order对象 定 ...

  8. Public DNS (公共域名解析服务)

    114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...

  9. 3、dns服务搭建

    3.1.dns服务简介: 1.DNS(Domain Name System)域名系统. 目前提供网络服务的应用使用唯一的32位的IP地址来标识,但是由于数字比较复杂.难以记忆,因此产生了域名系统(DN ...

随机推荐

  1. Speech Recognition Java Code - HMM VQ MFCC ( Hidden markov model, Vector Quantization and Mel Filter Cepstral Coefficient)

    Hi everyone,I have shared speech recognition code inhttps://github.com/gtiwari333/speech-recognition ...

  2. Python - Django - ORM 常用的字段属性

    字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置 ...

  3. DELPHI 数据库操作类(工具类)

    DELPHI 数据库连接类 做的时候目地是可以通过类的创建和释放进行数据库的短连接,在做服务端的时候每一个请求都通过类生成一个数据连接 unit UnDm; interface uses SysUti ...

  4. 实现不同的项目,用不同的git 账号提交

    可以全局配置一个git 账户名和密码,然后在具体项目里单独配置一个账户名和密码 例如: git config --global user.name "winyh" git conf ...

  5. elasticsearch in语句和not in语句

    sql语句示例: select * from table where t_id in (1,2,3,4) php代码示例: $search_query = [ "bool" =&g ...

  6. laravel redis sentinel 和 redis cluster 配置

    laravel redis sentinel配置: 'redis' => [ 'cluster' => false, 'options' => [ 'replication' =&g ...

  7. 未处理的异常:system.io.file load exception:无法加载文件或程序集“ 。。。。 找到的程序集的清单定义与程序集引用不匹配。

    问题描述: 添加控制器的时候,突然就报了这个错: Unhandled Exception: System.IO.FileLoadException: Could not load file or as ...

  8. iOS 多线程的简单理解(1) 方式 :同步 异步

    最近遇到特别糟糕的面试,过程中提到多次对多线程的处理问题,并没有很好的给予答复和解决,所以在这里做个简单的备案: 期望能更加了解和熟练使用 多线程技术: 下面都是自己的总结,如果存在不对的,或者不足, ...

  9. mongodb4.0 安装

    下载: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz 解压缩 tar -zxvf mongodb-linux ...

  10. Netty学习笔记(四)——实现dubbo的rpc

    1.rpc基本介绍 RPC ( Remote Procedure Call) -远程过程调用,是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,两个或多个应用程序分布不同 ...