bind高级应用

子域授权

子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权;

类似根域授权tld:

.com.   IN      NS      ns1.com.

.com.   IN      NS      ns2.com.

ns1.com.   IN      A  2.2.2.1

ns2.com.    IN      A   2.2.2.2

xmdb.com.在.com的名称服务器上,解析库中添加资源记录:

xmdb.com.  IN NS     ns1.xmdb.com.

xmdb.com.  IN NS     ns2.xmdb.com.

xmdb.com.  IN NS     ns3.xmdb.com.

ns1.xmdb.com.  IN A  3.3.3.1

ns2.xmdb.com.  IN A  3.3.3.2

ns3.xmdb.com.  IN A  3.3.3.3

父域知道子域,子域不知道父域,因为父域定义了子域,但是子域没有定义父域;如客户查询www.baidu.com不直接找.com服务器解析,而是找根解析,当然定义了转发器除外

实际配置:

要求:为xmfb.com,定义子域ops

实验环境:

父域:192.168.0.102

子域:192.168.0.104

 

父域配置:

定义ops子域

[[email protected] ~]# cat /var/named/xmfb.com.zone
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1IN  A      192.168.0.102   
mx1IN  A   192.168.0.1
mx2IN  A   192.168.0.2
wwwIN  A   192.168.0.3
wwwIN  A   192.168.0.4
ftpIN  CNAME  www
 
ops    IN      NS      ns1.ops      #子域的定义内容
ops    IN      NS      ns2.ops      #表示子域有两台服务器
ns1.ops IN     A       192.168.0.10
ns2.ops IN     A       192.168.0.20

如果客户端发出请求,那么当请求到达父域的时候,服务就会转发给子区域,由子区域响应请求

子域服务器配置

安装软件

[[email protected] ~]# yum -yinstall bind

主配置文件定义

[[email protected] ~]# cat /etc/named.conf
options {
    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";
    recursionyes;
};
zone "." IN {
    type hint;
    file"named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

辅助配置文件定义

[[email protected] ~]# cat /etc/named.rfc1912.zones
zone "ops.xmfb.com" IN {
  typemaster;
  file"ops.xmfb.com.zone";
};

定义区域解析库

[[email protected] ~]# cat/var/named/ops.xmfb.com.zone
$TTL 86400
$ORIGIN ops.xmfb.com.
@    IN    SOA  ns1.ops.xmfb.com. admin.ops.xmfb.com. (
                2015042501
                1H
                10M
                3D
                1D)
     IN    NS ns1
     IN    NS ns2
ns1  IN    A  192.168.0.10
ns2  IN    A  192.168.0.20
www  IN    A  192.168.0.11
*    IN    A  192.168.0.11

配置区域解析库文件属组

[[email protected] ~]# chown :named/var/named/ops.xmfb.com.zone

验证解析

[[email protected] ~]# dig -t A [email protected]
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A [email protected]
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 63269
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 2, ADDITIONAL: 2
 
;; QUESTION SECTION:
;www.ops.xmfb.com.       IN  A
 
;; ANSWER SECTION:
www.ops.xmfb.com.86400  IN  A   192.168.0.11
 
;; AUTHORITY SECTION:
ops.xmfb.com.     86400  IN  NS  ns2.ops.xmfb.com.
ops.xmfb.com.     86400  IN  NS  ns1.ops.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.ops.xmfb.com.86400  IN  A   192.168.0.10
ns2.ops.xmfb.com.86400  IN  A   192.168.0.20
 
;; Query time: 1 msec
;; SERVER: 192.168.0.104#53(192.168.0.104)
;; WHEN: Thu Apr 23 13:30:47 2015
;; MSG SIZE rcvd: 118

定义转发服务器:

为什么使用转发器?

1、当子域解析父域区域记录的时候,由于子域没有父域的记录,那么就回去找根,这样就大大浪费了时间;可以把其他人对子域的请求转给父域让父域代为解析。

2、如果是公司使用可以把客户端请求转发给本地运营商,他们的dns服务器会记录其他人解析的结果;如果dns服务器找运行商,发现有缓存就会直接从缓存中返回答案,提高解析效率。

注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;

(1)全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;

       Options{
           forward{first|only}
           fowwarders
       }

first:先转发,如果没有答案则把请求给根

Only:如果转发服务器没有答案,则把请求给根

(2)区域转发:仅转发对特定的区域的请求至某服务器;

       zone"ZONE_NAME" IN {
           typeforward;
           forward{first|only}
           forwarders
       }

注意:关闭dnssec功能:

dnssec-enableno;

dnssec-validationno;

dns中基础的安全相关的配置:

acl:把一个或多个地址归并为一个集合,并通过一个统一的名称调用;

aclacl_name {

ip;

ip;

net/prelen;

};

bind有四个内置的acl:

none:没有一个主机;

any:任意主机;

local:本机;

localnet:本机的IP同掩码运算后得到的网络地址;

注意:只能先定义,后使用;因此,其一般定义在配置文件中options的前面;

访问控制的指令:

allow-query{}: 允许查询的主机;白名单;

allow-transfer{}:允许区域传送的主机;白名单;

allow-recursion{}: 允许递归的主机;

allow-update{}: 允许更新区域数据库中的内容;

示例:

acl slaves {
 192.168.0.104;   #定义一个访问控制列表
};
 
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.zone";
 allow-transfer { slaves; };  #使用访问控制列表
};

View 视图

将请求者根据其来源进行分类,分类后实现使用不同的区域解析库来解析对某区域主机的请求。目前主要应用于CDN技术领域

配置方法:

       viewVIEW_NAME {  #定义视图
       match-clients {  };   #定义视图解析的来源地址
           zone{}    #视图解析的区域
           zone{}  
       }  #视图结束

一个bind服务器可定义多个view,每个view中可定义一个或多个zone;

每个view用一来匹配一组客户端;

多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;

注意:

(1)一旦启用了view,所有的zone都只能定义在view中;

(2)仅有必要在匹配到允许递归请求的客户所在view中定义根区域;

(3)客户端请求到达时,是自上而下检查每个view所服务的客户端列表;

实验环境

示例:

内网部署了一台web服务器,要求内网用户通过dns服务器解析,解析结果为web服务器的内网地址;外网用户解析,解析结果为web服务器发布到网关的ip地址。

没有定义视图之前内网客户机访问web服务器:

1、访问dns服务器解析web服务器地址,解析到的地址为网关的公网地址

2、访问网关的公网地址

3、网关通过nat转换机制将请求发给web服务器完成访问

定义视图之后访问内网服务器:

1、访问dns服务器,解析到的地址为内网地址

2、直接访问内网web服务器

定义视图的好处就是:内网用户省去了访问网关的转换过程,加快了访问速度

拓扑地址说明:

网关:192.168.0.1,开启路由功能

172.16.0.1

172.16.0.0/16模拟内网地址

192.168.0.0/24模拟外网地址

DNS:172.16.4.100

client:192.168.0.104

保证DNS和client,可以ping通即可。

服务器配置

DNS服务器配置

[[email protected] ~]# cat /etc/named.conf
options {
    listen-onport 53 { 172.16.4.100; 127.0.0.1; };
    directory "/var/named";
};
 
acl mynet {    #定义acl列表为内网地址
 172.16.0.0/16;
 127.0.0.0/8;
};
 
view internal {  #定义一个内网用户解析的视图
  match-clients { mynet; };   #定义内网客户端列表,由于定义了ACL所以直接使用ACL即可
  allow-recursion { mynet; };  #允许递归
 
zone "." IN {
        typehint;
        file"named.ca";
};
 
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.zone";
};
};   #内网视图的结束
 
view external {  #定义一个外网解析的视图 
 match-clients { any; };
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.external";
 allow-update { none; };
};
};  #外网解析视图的结束

内网区域解析库

[[email protected] named]# cat xmfb.com.zone
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1  IN   A       172.16.4.100
mx1  IN   A   172.16.1.1    
mx2  IN   A   172.16.1.2
www   IN   A   172.16.1.3      
www   IN   A   172.16.1.4
ftp  IN   CNAME  www

外网区域解析库

[[email protected] named]# cat xmfb.com.external
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1  IN   A       172.16.4.100
mx1  IN    A   192.168.1.1
mx2  IN   A   192.168.1.2
www  IN   A   192.168.1.3
www  IN    A   192.168.1.4
ftp  IN   CNAME  www

验证

内网解析:

[[email protected] ~]# dig -t A www.xmfb.com @172.16.4.100
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A [email protected]
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 14808
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.xmfb.com.           IN  A
 
;; ANSWER SECTION:
www.xmfb.com.     86400  IN  A   172.16.1.4   #解析为内网地址
www.xmfb.com.     86400  IN  A   172.16.1.3
 
;; AUTHORITY SECTION:
xmfb.com.     86400  IN  NS  ns1.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.xmfb.com.     86400  IN  A   172.16.4.100
 
;; Query time: 1 msec
;; SERVER: 172.16.4.100#53(172.16.4.100)
;; WHEN: Thu Apr 23 19:11:19 2015
;; MSG SIZE rcvd: 96

外网解析:

[[email protected] ~]# dig -t A [email protected]
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A [email protected]
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 9925
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY:1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
 
;; QUESTION SECTION:
;www.xmfb.com.           IN  A
 
;; ANSWER SECTION:
www.xmfb.com.     86400  IN  A   192.168.1.3  #解析为外网地址
www.xmfb.com.     86400  IN  A   192.168.1.4
 
;; AUTHORITY SECTION:
xmfb.com.     86400  IN  NS  ns1.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.xmfb.com.     86400  IN  A   172.16.4.100
 
;; Query time: 7 msec
;; SERVER: 172.16.4.100#53(172.16.4.100)
;; WHEN: Thu Apr 23 19:15:52 2015
;; MSG SIZE rcvd: 96
时间: 2024-10-05 13:54:57

bind高级应用的相关文章

DNS服务基础及bind基础配置和应用

DNS服务基础及bind基础配置和应用  DNS服务基础011.DNS:Domain   Name  Service,  ( 应用层协议)2.tld:Top Level Domain 顶级域(1)顶级域中的组织域.com  (company).net    网络组织.org非盈利型组织   org:other  organizations.gov  government.edu    教育机构.mil   military军事的,军队,军人...(2)顶级域中的国家域.tw   .hk  .cn

RAC中常见的高级用法-bind方法

RAC操作思想: Hook(钩子)思想 RAC核心方法:bind bind方法 假设想监听文本框的内容,并且在每次输出结果的时候,都在文本框的内容拼接一段文字“输出:” 方式一:在返回结果后,拼接. [_textField.rac_textSignal subscribeNext:^(id x) { NSLog(@"输出:%@",x); }]; 方式二:在返回结果前,拼接,使用RAC中bind方法做处理. bind方法参数:需要传入一个返回值是RACStreamBindBlock的bl

《Javascript高级程序设计》读书笔记之bind函数详解

为什么需要bind var name = "The Window"; var object = { name: "My Object", getNameFunc: function () { return function () { return this.name; } } }; alert(object.getNameFunc()()); //"The Window" object.getNameFunc()返回一个匿名函数,在全局环境调用该

C++11 std::bind std::function 高级使用方法

从最基础的了解,std::bind和std::function /* * File: main.cpp * Author: Vicky.H * Email: [email protected] */ #include <iostream> #include <functional> #include <typeinfo> #include <string.h> int add1(int i, int j, int k) { return i + j + k;

从零开始学 Web 之 JS 高级(三)apply与call,bind,闭包和沙箱

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.apply 和

Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APU

UWP开发之Mvvmlight实践四:{x:bind}和{Binding}区别详解

{x:bind}是随着UWP被推出而被添加的,可以说是Win10 UWP开发专有扩展.虽然 {x:Bind} 缺少{Binding} 中的一些功能,但它运行时所花费的时间和使用的内存量均比 {Binding} 要少,且支持更好的调试. 参照网址:{x:Bind} 标记扩展,GitHub微软UWP实例之XamlBind 1,{x:Bind} 基本原理 在 XAML 加载时,{x:Bind} 将转换为你所需的绑定对象,此对象将从数据源上的某一属性中获取相关值.绑定对象可以配置为观察数据源属性值的更改

JavaScript高级程序设计之函数

函数实际上是对象,每个函数都是Function类型的实例. 函数是引用类型. 函数名实际上是一个指向函数对象的指针,不会与某个函数绑定. // 这种写法更能表达函数的本质 var sum = function(num1, num2) { return num1 + num2; }; var anotherSum = sum; sum = null; console.log(anotherSum(10, 20)); // 30 console.log(sum(10, 20)); // typeer

js-JavaScript高级程序设计学习笔记19

第22章 高级技巧 1.高级函数 1.安全的类型检测. typeof,instanceof并非完全可靠. 安全的类型检测:使用Object原生的toString()方法. function isArray(value){ return Object.prototype.toString.call(value)=="[object Array]"; } 2.作用域安全的构造函数 构造函数内部使用instanceof检查this是否是正确类型的实例.防止属性被加到window对象上. 3.