如何将Ubuntu 13配置为DNS服务器
时间:2020-01-09 10:39:02 来源:igfitidea点击:
说明
本教程重点介绍如何将BIND DNS服务器用于域名服务。 BIND几乎可以说是生产中几乎所有DNS系统的事实上的名称服务器软件。
服务器配置
名称 | 操作系统 | IP地址 | DNS软件 | 角色 |
---|---|---|---|---|
NS1 | Ubuntu 13.10 | 172.30.0.60 | BIND9.9 | 主(主) |
NS2 | Ubuntu 13.10 | 172.30.0.61 | BIND9.9 | 主(从) |
电脑环境
本教程中使用的环境由以下计算机组成。这些将需要添加到我们的第一个正向查找域中。
名称 | 角色 | IP地址 |
---|---|---|
Desktop01 | 用户计算机 | 172.30.0.200 |
桌面02 | 用户计算机 | 172.30.0.201 |
桌面03 | 用户计算机 | 172.30.0.202 |
桌面04 | 用户计算机 | 172.30.0.203 |
文件服务器01 | 网络文件服务器 | 172.30.0.100 |
文件服务器02 | 网络文件服务器 | 172.30.0.101 |
MailSerer02 | 电子邮件服务器 | 172.30.0.102 |
规划域名
在甚至开始配置域名服务器之前,我们应该对域的外观有一个很好的了解。有一些注意事项会影响我们将使用的命名方案。
正向查找区域
这些域区域用于将名称转换为IP地址。我们每次以其名称访问网站时都会使用一个。这就是我们将在本教程中创建的内容。
反向查询区
当我们需要将IP地址转换为主机名时,可以配置反向查找区域。当我们拥有的只是一个IP地址时,它在名称验证中已被大量使用。
命名域名
确定域名时,应遵循一些规则。
- 域名在标点符号之前必须包含2到63个字符。
- 域名只能包含字母A-Z,数字0-9和连字符(-)
- 如果仅用于内部托管,则不应以.com,.net,.ca,.org或者任何其他顶级域名(TLD)结尾。内部TLD的示例是.test。
- 它至少应具有两个域级别mydomainname.tld。
在本教程中,我将使用theitroad.test的域名。它仅用于托管内部记录。
名称服务器类型
名称服务器有几种类型的角色。在本教程中,我们将只关注两个主节点(主节点)和一个从节点(辅助节点)。下表描述了最受欢迎的名称服务器角色。
角色描述 |
---|
Master |
从属服务器 |
缓存 |
DNS记录类型
域中可以使用大量的DNS记录类型,每种类型都有其自己的特定服务,例如电子邮件,计算机主机名,名称服务器等。这是可以使用的记录类型的简要列表。
类型 | 说明 |
---|---|
一种 | 地址记录,用于将域名分配给IP地址 |
NS | Name Server 用于指定区域的名称服务器的域名 |
SOA | 起始权限 域或者整个区域的绝对权限域名服务器。这通常是主服务器 |
MX | Mail Exchange 此记录指定哪些服务器承载域的电子邮件服务。如果没有此记录,客户端和其他邮件服务器将无法确定邮件服务器 |
安装和配置BIND
在两个服务器NS1和NS2上都遵循这些说明。
- 安装BIND所需的软件包。
sudo apt-get install bind9
- 启动BIND服务以启用域名查找。
sudo service bind9 start
建立网域
我们将为所需的域创建第一个区域文件。区域文件将包含我们域名的名称记录。如果我们愿意的话,这是一个简单的数据库,其中包含IP地址的名称,而使用任何文本编辑器都可以轻松地对其进行修改。
为使事情变得容易,我们将复制一个模板。
- 登录到主服务器NS1.
- 通过复制现有模板来创建新的区域文件。
sudo cp /etc/bind/db.empty /etc/bind/db.theitroad.test
- 在文本编辑器(如Nano)中打开新的区域文件。
sudo nano /etc/bind/db.theitroad.test
区域文件应类似于以下示例。
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost.
- 修改文件以匹配我们环境的配置。我们需要为域名设置"启动授权服务器"(SOA),主名称服务器,管理员的电子邮件地址,名称服务器(ns1)的名称服务器记录(NS)以及以下地址的地址记录:名称服务器(ns1)。
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA ns1.theitroad.test. admin.theitroad.test. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1.theitroad.test. @ IN NS ns2.theitroad.test. ns1 IN A 172.30.0.60 ns2 IN A 172.30.0.61
- 现在,我们添加环境中计算机的地址记录(A)。
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA ns1.theitroad.test. admin.theitroad.test. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1.theitroad.test. @ IN NS ns2.theitroad.test. ns1 IN A 172.30.0.60 ns2 IN A 172.30.0.61 desktop01 IN A 172.30.0.200 desktop02 IN A 172.30.0.201 desktop03 IN A 172.30.0.202 desktop04 IN A 172.30.0.203 fileserver01 IN A 172.30.0.100 fileserver02 IN A 172.30.0.101 mailserver01 IN A 172.30.0.102
- 将更改保存到文件并退出文本编辑器。
将域添加到BIND
- 在文本编辑器(例如Nano)中打开BIND配置文件。
sudo nano /etc/bind/named.conf
- 将以下行添加到文件末尾。
zone "theitroad.test" { type master; file "/etc/bind/db.theitroad.test"; allow-transfer { 172.30.0.61; }; };
类型 |
---|
指定名称服务器类型Master或者Slave |
区域数据库文件的位置 |
按IP地址指定允许哪些服务器下载区域文件 |
- 保存更改并退出文本编辑器。
- 指示BIND加载我们的新域。
sudo service bind9 reload
配置DNS服务器自行查询
为了让域名服务器返回查询,它必须能够查询自己。为此,我们将修改其客户端DNS设置。
- 在文本编辑器中打开resolv.conf文件。
sudo nano /etc/resolv.conf
- 对其进行修改,使其包含以下几行。
nameserver 172.30.0.60 search theitroad.test
名称服务器 |
---|
设置要查询的DNS服务器的IP地址。我们可以添加尽可能多的名称服务器条目,因为域有DNS服务器 |
“搜索”选项用于将定义的域名添加到所有单标签查找中任何包含未添加域名的计算机名的查找。例如,desktop01. 这样我们就不必键入完整的完全限定域名desktop01. theitroad.test. |
- 保存更改并退出文本编辑器。
- 通过使用完全限定的域名对在域中注册的计算机执行ping操作,以测试名称解析。
ping desktop01.theitroad.test
- 测试名称解析的另一种方法是使用Dig工具。它返回有关查找的更详细的结果。
dig desktop01.theitroad.test
- ``Dig''命令将返回以下结果,其中显示了问题,返回答案以及哪个DNS服务器给出了响应。
; <<>> DiG 9.9.3-rpz2+rl.13214.22-P2-Ubuntu-1:9.9.3.dfsg.P2-4ubuntu1.1 <<>> desktop01.theitroad.test ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 688 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;desktop01.theitroad.test. IN A ;; ANSWER SECTION: desktop01.theitroad.test. 86400 IN A 172.30.0.200 ;; AUTHORITY SECTION: theitroad.test. 86400 IN NS ns1.theitroad.test. ;; ADDITIONAL SECTION: ns1.theitroad.test. 86400 IN A 172.30.0.60 ;; Query time: 1 msec ;; SERVER: 172.30.0.60#53(172.30.0.60) ;; WHEN: Fri Jan 17 23:28:17 CST 2014 ;; MSG SIZE rcvd: 104
配置辅助DNS服务器
- 登录到辅助(从属)DNS服务器NS2.
- 将绑定配置文件打开到文本编辑器中。
sudo nano /etc/bind/named.conf
- 使用以下配置为我们的域区域添加区域条目。
zone "theitroad.test" { type slave; master { 172.30.0.60; }; file "/etc/bind/db.theitroad.test"; };
- 保存更改并退出文本编辑器。
- 指示Bind重新加载它的配置文件。
sudo service bind9 reload
- 我们的域不应下载到我们的辅助服务器。通过导航到Bind的配置文件中指定的位置来检查它是否退出。