Ubuntu: 建立DNS服务器

本文详细介绍如何在 Ubuntu 系统上安装与配置 BIND DNS 服务器,包括缓存域名服务器、主域名服务器及从域名服务器的设置过程。通过具体实例展示了配置文件的编写方法以及各种资源记录的作用。
首先安装BIND套件

代码:
sudo apt-get install bind


这时在/etc/bind下会出现(这里跟其他的UNIX/LINUX不同,一般其他的UNIX/LINUX默认是把配置文件放

在/etc/named下,数据文件放在/var/named或/var/bind下的,而UBUNTU都一起放在这个目录下了)

db.0 db.255 db.root named.conf.local
db.127 db.local named.conf named.conf.options

其中named.conf为主配置文件,named.conf.local和named.conf.options这两个文件在其他的UNIX/LINUX

系统里默认是没有的,UBUNTU的这种想法很不错,把各个部分都分开管理;其余的部分都是默认生成的几

个数据文件。这里需要稍微讲一下区数据文件里的几个资源记录的含义:

SOA记录:指示该区的权威
NS记录:列出该区的一个名字服务器
A记录:名字到地址的映射 (也就是正向解析)
PTR记录:地址到名字的映射 (也就是反向解析)
CNAME:规范名字 (别名记录)

下面开始服务配置
缓存域名服务器设置 (Cache-only server)
缓存域名服务器顾名思义其自身是没有域名记录的,仅仅从别的DNS上获取记录并做高速缓存。
安装好DNS服务后,不需要任何配置,只需要把服务起起来就是缓存域名服务器了。

代码:
sudo /etc/init.d/bind start


主DNS配置
安装好DNS后,配置named.conf.local,如下例:
代码:

zone "163.com" {
        type master;
        file "/etc/bind/db.163.com";
};

zone "sohu.com" {
        type master;
        file "/etc/bind/db.sohu.com";
};

zone "sina.com" {
        type master;
        file "/etc/bind/db.sina.com";
};

...


保存配置,然后再创建相对应的数据文件,如上例163.com的数据文件如下:
代码:

//db.163.com的配置文件
$TTL 86400
@           IN  SOA     dns.163.com  root.dns.163.com. (
                                2005092001 ; serial
                                28800 ; refresh
                                7200 ; retry
                                604800 ; expire
                                86400 ; ttl
                                )
@           IN  NS      dns.163.com
@           IN  MX      10      mail.163.com.

dns         IN  A       111.111.111.111
www       IN   A   222.222.222.222
xxx       IN   A   333.333.333.333
mail       IN   CNAME   xxx
...


保存,重启BIND服务就OK了

从DNS的配置
从DNS的配置和主DNS配置很像,只不过不需要建立数据文件,只需要指定数据文件存放位置就可以了
代码:

zone "163.com" {
        type slave;
        file "/etc/bind/db.163.com";
   masters {
       111.111.111.111; //主DNS的地址
      };
};

zone "sohu.com" {
        type slave;
        file "/etc/bind/db.sohu.com";
   masters {
       111.111.111.111; //主DNS的地址
      };
};

zone "sina.com" {
        type slave;
        file "/etc/bind/db.sina.com";
   masters {
       111.111.111.111; //主DNS的地址
      };
};

...


保存配置,重启服务。
BIND9里的还有很多其它的功能选项,大家慢慢消化吧!
### 配置DNS服务器以支持内外网域名解析 #### 实现原理 为了使DNS服务器能够处理来自内部网络外部网络的不同请求,通常采用的方法是在同一台DNS服务器配置不同的视图(view),每个视图为特定的客户端提供定制化的响应。通过这种方式可以确保对于相同的查询,在不同环境下返回恰当的结果。 #### 安装BIND服务 在Linux环境中,最常用的DNS解决方案之一就是BIND(Berkeley Internet Name Domain)[^2]。安装过程取决于所使用的发行版;例如,在基于Debian/Ubuntu系统的机器上可以通过`apt-get install bind9`命令来完成安装工作[^4]。 #### 编辑主配置文件 编辑位于/etc/bind/named.conf中的主要配置文件,加入两个独立的view部分——一个用于内网访问者,另一个则面向公网用户: ```bash options { directory "/var/cache/bind"; }; acl "internal" { 192.168.0.0/16; }; //定义ACL列表,这里假设内网IP范围为192.168.x.x acl "external" { any; }; view "internal-view" { match-clients {"internal";}; recursion yes; zone "." IN{ type hint; file "/etc/bind/db.root"; }; include "/etc/bind/zones/internal-zones.conf"; }; view "external-view" { match-clients {"external";}; recursion no; zone "." IN{ type hint; file "/etc/bind/db.root"; }; include "/etc/bind/zones/external-zones.conf"; }; ``` 上述代码片段展示了如何创建名为“internal-view”的视图供内部网络使用以及名称为“external-view”的视图给外部访客。注意这里的ACL规则是用来区分哪些设备属于内部网络的一部分[^3]。 #### 创建区域配置文件 接下来分别建立针对这两个视角的具体zone记录。这些文件应该放在前面提到过的include语句指向的位置(/etc/bind/zones/)下,并且要按照标准格式编写,比如下面是一个简单的A记录例子: ```bash // /etc/bind/zones/internal/example.local.zone $TTL 604800 @ IN SOA ns.example.local. admin.example.local. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. ns IN A 192.168.1.100 // 这里填写实际的DNS服务器地址 webserver IN A 192.168.1.10 // 对应于内部Web服务器的实际IP ``` 同样的方法也可以用来构建对外部可见的服务条目,只需调整相应的IP地址即可。 #### 测试与重启服务 最后一步是验证所做的更改并重新启动BIND服务以便应用新的设置。这可以通过运行如下命令实现: ```bash named-checkconf -z /etc/bind/named.conf systemctl restart bind9 systemctl status bind9 ``` 以上操作完成后,如果一切正常的话,现在就拥有了一个既能服务于内部也能应对公共互联网流量的DNS基础设施了。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值