分类:
2008-03-20 14:51:47
这部分内容出自《网管员世界》2004年第2期 |经验技巧|栏目
我们知道在大量网络结构中IP地址使用的是内网IP地址,然后通过PIX等防火墙工具进行地址转换连接到公网。如果网内建立有WWW、mail服务器的话一般是通过在PIX上做映射来实现。这样的网络结构带来的问题就是这些服务器在内网是一个内网的IP地址,在公网又是一个公网的IP地址,也就是说内网和公网用户必须通过不同的IP地址访问这些服务器。
在这类网络架构中为了实现服务器的正常访问无非就是两种情况:第一种是公网的DNS解析交给专门做域名解析的公司做,比如万网等,然后每年交注册费,同时在内网架设一台DNS服务器给内网用户使用,将域名解析成内网的IP地址,这样可以确保内网、公网用户都可以正常访问,但是这种方式每年需要交注册费用,且修改记录不是太方便。另一种情况就是注册DNS服务器,自己得到自己域名的权威解析权,那么只要注册一次,交一次费用即可,而且记录修改在自己的服务器上完成就可以了,但是这样做必须在内网安装两套DNS服务器,一套供内网使用,一套供公网解析你的域名使用,成本太高。这样看来目前使用的这些方法都不是太好。
我们都知道事实上标准的DNS软件就是BIND,几乎所有Unix、Linux下的DNS服务器使用的都是这个软件。如果你使用的是BIND8或以前的版本不能很好地处理这个问题,如果你使用DNS软件版本是BIND9的话,问题就可以得到很好的解决。
BIND9可以根据不同的原地址给出不同的解析结果,也就是说内网的用它解析得出是内网的IP地址,公网的用它解析得出的是公网的IP地址。要实现这个功能只需要用好BIND9的view语句就可以了,任何有BIND配置经验的管理员使用以下的方法都不会有任何困难,十分简单,只需将系统升级到BIND9,再按照下面方法做即可。
假设内网的网段是192.168.0.0/16,我们的域名是abcde.com,那么我们只要对named.conf等文件做些简单修改就可以了,我们来看这个named.conf的配置例子,
options{directory“/var/named”;
pid-file“/var/named/named.pid”;};
view“internal”{ //view语句是以前版本的BIND没有的
match-clients { 192.168.0.0/16; };
recursion yes;
zone“.”
{type hint;
file“named.ca”;};
zone“0.0.127.IN-ADDR.ARPA”
{type master;
file“dns.local”;};
zone“abcde.com”
{type master;
file“db.abcde.com.in”;};
zone“255.168.192.in-addr.arpa”in
{type master;
file“abcde.rev.in”;};
};
view“external”{
match-clients { any; };
recursion yes; //如果对公网不提供其它域名递归的解析,只提供自己域名的解析,将yes改为no就可以了,这样公网IP就不能用这个服务器做其它域名的解析了,可以减轻服务器负担。
zone“.”
{type hint;
file“named.ca”;};
zone“0.0.127.IN-ADDR.ARPA”
{type master;
file“dns.local”;};
zone“abcde.com”
{type master;
file“db.abcde.com.ex”;};
zone“95.111.211.in-addr.arpa”in
{type master;
file“abcde.rev.ex”;};
};
是不是很简单呢?这样配置以后服务器就会根据源地址的不同到/var/named目录下面寻找相应的DNS记录文件,如果是192.168.0.0/16网段的IP地址做查询,服务器就会查找/var/named/db.abcde.com.in这个文件里的数据并给出内网的解析结果,公网IP则查找/var/named/db.abcde.com.ex里的数据并给出公网的解析结果。注意,在这里/var/named目录下面所有的文件格式不需要做任何修改,只不过*.ex里面记录的是公网的数据,*.in里面记录的是内网的数据。
我相信任何有过BIND配置经验的管理员在这个配置上面不会存在任何问题,大家快去做做看吧,小小的一个配置上的改动,可以给大家省下一套DNS服务器和不少资金哦。