BIND View 加速南北方网络互访
         南北方网络互访的问题一直以来就是广大运维人员的心病,两大网络运营商之间的连接带宽比较有限,跟不上互联网业务发展的速度。如何才能以一种更简单的方式来解决这个问题么?本文将通过BIND View功能来实现互访。
有一定上网经历的人都知道“南电信”、“北网通”的说法, 这些年随着网通的逐渐壮大, 网通用户规模还在越来越大,北方很多省市(北京、河北、山东等)的用户主要是通过网通接入上网;而南方大部分用户是通过电信接入,而两大网络运营商之间的连接带宽比较有限,跟不上互联网业务发展的速度,因此也就形成了南北两地用户由于电信和网通的互联互通瓶颈问题,如何才能以一种更具普遍性的方式来解决该互访问题呢?本文将通过BIND View功能来实现互访。笔者采用的方案是利用 BIND 9的新增功能-View,为公司建立一个DNS服务系统。这是一个全新的方法,在实施的过程中,由于以前没有类似项目可供借鉴,也没有更多详细说明View 功能的资料,因此颇费了一番周折。
一、选用BIND解决方案
首先,来分析一个网络现状和系统需求。系统要解决的是电信和网通互访问题,具体表现包括速度减慢等。其次,由于现在的网络存在很多私有IP地址即内网IP,在他们访问互联网时必须通过一些转换及映射工具来实现互访,因此还需要解决一个内网IP和外网IP的区别问题。另外,出于对公司和网站安全性考虑,需要限制某些IP地址访问网站,或者将这些来访IP段指向其他地方。
通过以上分析,拟定了如下几种解决方案:
■利用Linux防火墙设置工具iptables 来配置动态DNS。核心思想是在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,这样每个BIND都应有不同的配置文件和域文件。在接收到客户访问时,根据客户不同的IP地址将请求重定向到不同BIND。这一方法的缺点是过于复杂,并且不能解决MX记录问题。
■利用BIND 9的Cache 记录。该方法实际上是解决了内外DNS的解析问题。
■同样是设置内外DNS, 并用ACL做进一步限制。这一方法的缺点是机器使用较多。
■利用 BIND 9 的View功能。这是上述几种方法中最易理解和实现的。
■ 当然还可以利用一些硬件工具来解决。
基于上面提出的几种解决方法,经过综合考虑,决定利用BIND 9的View 功能来实现互访。简单地说,BIND View 功能可以实现DNS对不同网段返回不同地址,即对不同IP地址段发来的查询响应不同的DNS解析。该方案从实施复杂度和投入资金等方面都有较大优势。不足之处是在安全性方面有待提高,以及存在一些漏洞等。
 二、BIND View方案简述

1.所用系统及配置文件

这里使用的服务器版本是 Red Hat Enterprise Linux 5.0。为了确保公司域名服务器能够不间断运行,我们同时架设两台DNS服务器(Master和Slave)。这里将着重介绍建立在Linux 系统上的 Master主DNS 服务器系统。

Berkeley Internert Name Domain (BIND)是一个熟知的域名软件。它具有广泛的使用基础,互联网上的绝大多数DNS服务器都是基于该软件。BIND 目前由ISC (Internet Software Consortium)负责维护,具体开发由 Nominum 公司完成。

从BIND 官方网站http://www.isc.org/bind可以下载它的最新版本。安装完成后,在/etc 目录中会有 hosts 、hosts.conf、resolv.conf、named.boot和named.conf等配置文件。

■hosts 文件定义了主机名与IP地址的对应,其中包括将要运行DNS 的这台服务器的IP 地址和主机名。

◆resolv.conf 文件内容如下:

  1. search linux.com
  2. nameserver   IP

“nameserver IP”指定DNS服务器的地址。注意,该文件对普通非Windows 系统的DNS服务器(Windows系统在“网络属性”中设置该项)来说必不可少。如果没有设置本机为DNS服务器,又要求能够解析域名,就必须指定一个DNS服务器地址。最多可以写入三个地址,作为前一个失败时的候选DNS服务器。

■named.boot文件是早期版本BIND 4所用的配置文件,新版本中已经让位于named.conf.

■named.conf是DNS服务器配置的核心文件。

以上只是简单说明设置DNS服务器时涉及的配置文件,后文将主要介绍named.conf 中的具体设置选项。DNS的具体配置过程及BIND的详细安装步骤可以参阅其他资料。

2.View语法介绍

View功能很容易理解,就是将不同IP地址段发来的查询响应到不同的DNS解析。例如需要对三个不同IP地址段进行配置,就需要明确这些IP地址段,这样View功能才会有效。对于初学者,简单了解它的语法非常必要。如果要有一个更清楚的认识,则可以到BIND官方网站查阅文档。

3.View的简单实例

下面给出View的一个简单实例,参照上面的解释可以进一步地了解View 的用法。

  1. acl “example”{
  2. 192.168.1.123;
  3. 192.168.1.124;
  4. ……};//定义一个IP访问控制列表
  5. View “internal”{
  6. //表示这是一个内部网络
  7. Match-clients{IP地址段};
  8. //由于前面已经定义acl,所以这里可以用实际IP地址段,也可以改用acl名字“example”
  9. Clients only;
  10. Recursion yes;
  11. //表示查询方式允许递归查询Zone
  12. //表示包含的区文件
  13. Zone “linux.com”{
  14. Type master;
  15. File “linux.com”;
  16. };
  17. };
  18. View “external”}
  19. Match-clients{any;};
  20. //表示除了上面acl列表所定义的IP地址以外的所有地址
  21. Recursion no;
  22. //表示子网以外的网张不应该请求该DNS服务器的递归查询
  23. Zone
  24. //建立“external”相对应的区文件
  25. Zone “linux.com”{
  26. Type master;
  27. File “linux.com.db”
  28. };
  29. };

三、方案实施步聚

1.基本设置

下面结合实际搭建过程和namd.conf的具体设置,详细说明应该注意的方面。在本例中,选用linux.com做为本地域名,nsl为本地主机名,IP地址为61.56.123.5(这是一个虚拟的电信IP地址)。为了让网通和电信的用户都能快速访问本网站,网站另外还有一个网通IP地址。

本例把网通命名为cnc,电信命名为tel,定义了两个域名来同时使用一台DNS服务器,并且在/var/named/下建立相应的目录结构和域名文件。

◆对应区文件的建立

在/var/named下分别建立相应的cnc和tel目录,在目录下分别建立相应的区文件 linux.com、db.linux.com和idg.linux.com等。例如,网通即cnc目录中建立的linux.com
文件的内容如下:

  1. $TTL     900
  2. @ IN      SOA
  3. nsl.linux.com.
  4. root.linux.com.(
  5. 20050615;Serial
  6. 28800;  Refresh
  7. 14400; Retry
  8. 3600000;Expire
  9. 86400);Minimum
  10. linxu.com. INnsl.linux.com
  11. nsl IN  A 61.56.123.5
  12. aaa IN  A 221.12.160.93   bbb IN  A 221.12.160.93
  13. linux.com. IN 221.12.160.92
  14. mail2 IN A 61.157.39.100

上述内容只是一个列子,各公司或企业可以根据不同要求具体给出区文件的内容。Tel 目录中的文件内容与些类似,修改相应IP地址即可。

◆主配置文件的设定

这里将根据网通和电信的IP地址,让DNS对不同网段返回不同的地址解析。

  1. options{
  2. directory“/var/named”;
  3. //配置文件所在目录
  4. Pid-file “/var/run/named.pid”;
  5. //进程守护文件
  6. Statistics-file “/var/run/named.stats”;
  7. //状态输出文件,在rndc中用到
  8. //query-source address *port 53;
  9. allow-recursion {ournets;};
  10. };
  11. //a caching only nameserver  config
  12. Controls {
  13. inet 127.0.0.1 allow { localhost ;}keys {rndckey } ;
  14. };
  15. //acl 定义网通IP地址池,即如下IP地址访问网站时将指引到网通相应的区文件中。
  16. acl “subnet” {
  17. 61.207.0.0/16;
  18. 168.160.224.0/19;
  19. ……
  20. };
  21. view “baoku” {
  22. match-clients {“subnet”;
  23. //注意,在使用View功能 时,一定要把整个named.conf的设置语句都包括在view里面,否则最后会出现错误。

如上设置完成后,当网通用户和电信用户访问该网站时,DNS的View功能会根据他们不同的地址段指向分别相对应的区文件。

2.问题分析

在系统设置的过程中“named-g”起到很大作用,发现了很多DNS的问题,包括named权限问题,以及区文件里的语法错误等。通过具体实践,读者会有更深切的体会。如上设置完成后是否就可以顺利地看到结果了呢?不然。这还需要根据DNS服务提供的具体情况。由于笔者公司是由DNS服务提供商来提供网站解析服务,所以需要面对一个如何让所配置DNS服务合法起作用的问题,即如何使用户在访问该网站自己的DNS服务器解析。通过与服务提供商协调,一家DNS服务提供商允许我们修改其区文件,在其中添加一条A记录指向网站自己的DNS服务器,从而解决了这一问题。当建立了Slave辅助服务器后,最好不要采取这一方式,以避免引起混淆。这种情况下可以直接注册一个自己的DNS服务。

3.加强安全

本文只是介绍了使用BIND View功能架设DNS简单过程,其中还有很多东西值得深究,比如网络加强安全问题等。本例中,笔者通过关闭该DNS服务器上的所有无关端口,并建立相应iptables防火墙规则来保证网络安全。还可以使用最新BIND 9版本来设置一个在chroot环境下运行的BIND的安全性。将BIND chroot到/chnamed目录运行,则named在运行时将认为/chnamed是实际的根目录,即使named有某种安全漏洞被人攻破,也只能存取到该目录为止。BIND 9还新增了很多关于安全性的设定项,读者可以根据需要自行具体设定。限于篇幅下次再给大家介绍BIND 9安全设置。

本文出自 “李晨光原创技术博客” 博客,谢绝转载!

BIND View 加速南北方网络互访的更多相关文章

  1. 安装 Google BBR 加速VPS网络

    Google BBR就是谷歌公司提出的一个开源TCP拥塞控制的算法.详情可以看这儿:https://lwn.net/Articles/701165.https://blog.sometimesnaiv ...

  2. VirtualBox实现内外网络互访问的配置

    作者 jrl137824675 来源地址:http://www.2cto.com/os/201205/133370.html   环境: 宿主机操作系统            Windows XP s ...

  3. 阿里云不同账号之间相同地域的VPC网络互访

    今天实际操作了一下,在这篇随笔中记录一下以备忘,主要参考阿里云帮助文档-不同账号下专有网络内网互通. 实现场景:账号A的VPC网络中的ECS访问账号B的VPC网络中的ECS与RDS(地域都在华东1), ...

  4. mac book air 与 virtual box 网络互访 安装centos7 mini

    Host-only Adapter     主机模式     虚拟机之间可以访问...主机可以访问虚拟机 NAT                          网络地址转换模式(Network A ...

  5. HDU5880 Family View(2016青岛网络赛 AC自动机)

    题意:将匹配的串用'*'代替 tips: 1 注意内存的使用,据说g++中指针占8字节,c++4字节,所以用g++交会MLE 2 注意这种例子, 12abcdbcabc 故失败指针要一直往下走,否则会 ...

  6. 《Linux企业应用案例精解(第2版)》新书发售啦

    本书在出版当年就获得了不错的销量,同时被中国科学院国家科学图书馆.中国国家图书馆.首都图书馆.清华大学.北京大学等上百所国内综合性大学图书馆收录为馆藏图书,在IT业界赢得了良好的口碑.随后2012年年 ...

  7. 《Linux企业应用案例精解(第2版)》新书开始发售

    <Linux企业应用案例精解(第2版)>新书开始发售 650) this.width=650;" title="linux企业应用案例精解 第2版" alt= ...

  8. CDN及CDN加速原理

    本想自己写这个主题的文章,但网上已经有人写了一篇非常好的文章,觉得难以望其项背.就没有必要再写,直接转载如下: 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Inte ...

  9. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

随机推荐

  1. Redis中的持久化操作

       本篇博客主要来解说一下怎样Redis中的持久化操作,当然了不是一篇理论性的博客,主要还是分享一下在redis中怎样来配置持久化操作.  1.介绍  redis为了内部数据的安全考虑,会把本身的数 ...

  2. WebKit载入流程 - 概述

    之前写了几篇载入流程的说明,是从下向上看,有点仅仅见树木不见森林的感觉.经过近期一段时间的学习,有了能加以概括抽象的方法. WebKit载入流程和页面组成是直接相关的,页面就是WebKit要载入的对象 ...

  3. 静态时序分析SAT

    1.   背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性.对 ...

  4. 解决Maven项目相互依赖/循环依赖/双向依赖的问题

    转自:https://blog.csdn.net/leolu007/article/details/53079875 添加新随笔很​多​时​候​随​着​项​目​的​膨​胀​,模​块​会​越​来​越​多 ...

  5. Hadoop的单节点集群详细启动步骤

    见,如下博客 hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 很简单,不多赘述.

  6. tensorflow学习之路-----MNIST数据

    ''' 神经网络的过程:1.准备相应的数据库 2.定义输入成 3.定义输出层 4.定义隐藏层 5.训练(根据误差进行训练) 6.对结果进行精确度评估 ''' import tensorflow as ...

  7. Perl初学笔记

    标量数据 标量:数字和字符串. 数字:Perl不存在整形,全部是double类型.整形常量会被自动转换为浮点型. Perl数字字面量(直接量):+-和小数点是非必须的,e代表10的多少次方.例如:-1 ...

  8. php获取csv数据无乱码

    <?php //获取csv数据    function csvencode($file){        if(!is_file($file['tmp_name'])){            ...

  9. 洛谷—— P1086 花生采摘

    https://www.luogu.org/problem/show?pid=1086#sub 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着 ...

  10. Git版本号控制

        Git是分布式版本号控制系统.与SVN类似的集中化版本号控制系统相比.集中化版本号控制系统尽管可以令多个团队成员一起协作开发,但有时假设中央server宕机的话,谁也无法在宕机期间提交更新和协 ...