DNS 服务
域名系统
域名系统(DNS,Domain Name System)的主要作用是将计算机主机名转换为 IP 地址。
完整主机名(FQDN,Fully Qualified Domain Name)由主机名与域名(Hostname and Domain Name)组成。例如,FQDN 为 www.hxz.ass
的域名为 hxz.ass。
在 DNS 数据库中,针对每个要解析的域(domain)称为一个区域(zone)。每个 DNS 服务器必备称为 hint 的区域,记录根服务器地址。
域名系统利用类似树状目录结构,将主机名的管理分配在不同层级的 DNS 服务器中,并进行分层管理。最顶层的 DNS 服务器叫根服务器(root),最早管理的只有 com、edu、gov、mil、org、net 这种特殊区域以及以国家为分类的第二层的主机名,这两者称为顶级域名(TLDs,Top Level Domains)。
DNS 采用分层查询流程的好处是:
- 当主机名有修改时,只需要改动上一层 DNS 服务器记录,维护简单。
- DNS 服务器可以将主机名解析结果缓存起来,下次查询能快速响应。
- 可持续向下授权(子域名授权),也就是可以设置任意多级域名。
DNS 服务器使用的监听端口为 53,DNS 查询同时使用 UDP 和 TCP 数据包。
域名注册
申请合法的主机名需要进行注册,注册后可以获得两种类型的数据:
- 一种是域名托管。设置 FQDN 对应的 A 记录,由上层 DNS 服务器来解析主机名。
- 一种是申请区域查询权。在自己搭建的 DNS 服务器中编写 NS 记录,通过自己的 DNS 服务器来解析主机名。
域名查询流程
以向 DNS 服务器 8.8.8.8 查询域名 www.abc.edu.cn
为例,整个流程如下:
- 首先查询本地
/etc/hosts
文件中是否有记录,如果没有,则向/etc/resolv.conf
中配置的 DNS 服务器 8.8.8.8 发起查询(查询顺序由/etc/nsswitch.conf
文件配置); - DNS 服务器 8.8.8.8 收到查询请求后发现没有相应的记录,会向最顶层服务器(即根服务器)查询域名;
- 根服务器中记录了顶级域名
.cn
服务器的地址,并将其返回给 8.8.8.8; - 顶级域名
.cn
服务器回复二级域名.edu.cn
服务器的地址给 8.8.8.8; - 二级域名
.edu.cn
服务器发送.abc.edu.cn
对应的 IP 地址给 8.8.8.8; - 最后通过访问
.abc.edu.cn
服务器的 IP 地址,获得其对应的 www 服务的 IP 地址; - DNS 服务器 8.8.8.8 将查询结果返回给客户端,并在自己的缓存中记录下来(一般有效时间为 24 小时)。
可以使用 dig
和 trace
命令观察这个过程:
[root@server2 ~]$ dig +trace mail.dlut.edu.cn
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> +trace mail.dlut.edu.cn
;; global options: +cmd
. 25330 IN NS m.root-servers.net.
. 25330 IN NS c.root-servers.net.
. 25330 IN NS a.root-servers.net.
;; Received 267 bytes from 222.246.129.80#53(222.246.129.80) in 4 ms
cn. 172800 IN NS e.dns.cn.
cn. 172800 IN NS f.dns.cn.
cn. 172800 IN NS ns.cernet.net.
cn. 86400 IN DS 57724 8 2 5D0423633EB24A499BE78AA22D1C0C9BA36218FF49FD95A4CDF1A4AD 97C67044
cn. 86400 IN RRSIG DS 8 1 86400 20211025050000 20211012040000 14748 . H7PWSfaMnU5bqTVD4anI0Gkagqbpu3jXuVX6wiGfaBpMYAU06BlzVDSk TcGqHd5qSfztQrT0ztQnWno12NhCfFzOyf64hv54quKOYWss8ilQnmgX AftgAZYD8V/v/cAbo2EKoCwLD8KAWoiUN9VGQpcLeVpb/O4mQ1xMbRbr ENxir09m6iYn+F9Y3MCTekj79c1RWKJ8Qqn+nJlj+bES2OvDNuEmSHlZ 4D/NSqz4WMI3IaaCk/WaKf6NzZHvazs8NsDVXDnqgND3opj6g0B3fQMC NVbtLO/M+FyuYNXmuk/VOettllpYUAOYaSdPZLxmqWXyTgiVbNXTH74S 1cRveA==
;; Received 707 bytes from 2001:500:2f::f#53(f.root-servers.net) in 23 ms
mail.dlut.edu.cn. 59602 IN A 202.118.66.82
;; Received 106 bytes from 203.119.26.1#53(b.dns.cn) in 4 ms
域名查询命令
域名查询命令由 bind-utils
包提供,需要使用 yum
安装:
[root@server2 ~]$ yum install -y bind-utils
host
使用 host
命令进行正向查询。例如,查询 163.com
的 IP 地址:
[root@server2 ~]$ host 163.com
163.com has address 123.58.180.7
163.com has address 123.58.180.8
163.com mail is handled by 10 163mx02.mxmail.netease.com.
使用 -a
参数可以获取更详细的查询信息:
[root@server2 ~]$ host -a douban.com
Trying "douban.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61546
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;douban.com. IN ANY
;; ANSWER SECTION:
douban.com. 180 IN A 81.70.124.99
douban.com. 180 IN A 140.143.177.206
douban.com. 180 IN A 49.233.242.15
Received 76 bytes from 240e:50:5000::80#53 in 8 ms
nslookup
nslookup
命令可用于正向和反向查询,正向查询结果与 host
命令基本一致:
^C[root@server2 ~]$ nslookup 163.com
Server: 222.246.129.80
Address: 222.246.129.80#53
Non-authoritative answer:
Name: 163.com
Address: 123.58.180.7
Name: 163.com
Address: 123.58.180.8
dig
dig
命令综合了上述两个命令的功能,主要参数包括:
参数 | 说明 |
---|---|
+trace | 从根服务器开始追踪。 |
-t type | 查询的数据类型,如 MX、NS、SOA 等。 |
-x | 进行反向解析。 |
例如,使用默认参数查询 linux.org
:
[root@server2 ~]$ dig linux.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> linux.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30344
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;linux.org. IN A
;; ANSWER SECTION:
linux.org. 300 IN A 104.21.48.239
linux.org. 300 IN A 172.67.157.1
;; Query time: 338 msec
;; SERVER: 222.246.129.80#53(222.246.129.80)
;; WHEN: Wed Oct 13 03:21:51 CST 2021
;; MSG SIZE rcvd: 70
查询结果中的重要部分如下:
- QUESTION:显示所查询的内容。
- ANSWER:显示查询结果,数字 300 表示查询结果的缓存时间。
- AUTHORITY:显示查询结果来源的 DNS 服务器。
whois
whois
用于查询域名所有者的信息:
[root@server2 ~]$ whois 163.com
Domain Name: 163.COM
Registry Domain ID: 473619_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2019-01-25T07:56:57Z
正解文件记录
从主机名查询到 IP 的流程称为正向解析,正解文件资源记录(RR,Resource Record)格式如下:
[domain] [ttl] IN [[RR type] [RR data]]
字段说明:
- domain:域名记录使用 FQDN,也就是在主机名末尾加上小数点。例如
www.abc.com.
- ttl:暂存时间(time to live),单位为秒。指其他 DNS 服务器缓存此笔记录的时间。
- IN:固定关键词。
- RR type:资源类型,如 A 或 NS。
- RR data:资源内容,如 IP 地址或 NS 域名。
资源类型有下面几种:
-
A(Address)记录:记录对应 IPv4 地址。
[root@server3 ~]$ dig -t a douban.com douban.com. 300 IN A 81.70.124.99
-
AAAA 记录:记录对应 IPv6 地址。
-
NS(NameServer)记录:查询管理区域名(Zone)的服务器主机名。
[root@server3 ~]$ dig -t ns douban.com douban.com. 59880 IN NS ns3.dnsv4.com.
-
SOA(Start Of Authority):开始验证的标志。
[root@server3 ~]$ dig -t soa douban.com douban.com. 180 IN SOA ns3.dnsv4.com. enterprise2dnsadmin.dnspod.com. 1629873707 3600 180 1209600 180
SOA 后面会接七个参数,按顺序分别表示:
- 主 DNS 服务器主机名。
- 管理员的 Email 地址。第一个点需要替换成 @ 才是实际地址。
- 序号(Serial),代表数据库文件的版本,序号越大表示越新。
- 更新频率(Refresh),单位为秒,需大于 2 * Retry 时间。指从服务器向主服务器检查更新的频率。
- 失败重试时间(Retry),单位为秒。指从服务器连不上主服务器时,重试等待时间。
- 失效时间(Expire),单位为秒,需大于 Refresh+Retry 或七天以上时间。指失败尝试总时长到这一值后停止重试。
- 缓存时间(Minimum TTL),单位为秒。当没有设置 TTL 时,用此值代替。
-
MX(Mail eXchanger)记录:邮件服务器主机名字。
[root@server3 ~]$ dig -t mx dlut.edu.cn dlut.edu.cn. 74898 IN MX 20 mx2.dlut.edu.cn.
邮件服务器前面的数字代表优先级,有多台邮件服务器情况下数字越小优先级越高。
-
CNAME(Alias)记录:主机名的别名。
[root@server3 ~]$ dig www.douban.com www.douban.com. 2 IN CNAME forward.douban.com.
常用于单 IP 地址对应多个域名情况下,可以将域名指向别名,而别名指向目标 IP。这样当更换服务器 IP 地址时,只需要更新别名与 IP 地址对应的记录,这样可以简化管理过程并提高效率。
反解文件记录
从 IP 反解析到主机名的流程称为反解,需要直属上层 ISP 授权。使用 nslookup
进行反解查询:
[root@server2 ~]$ nslookup 123.58.180.7
7.180.58.123.in-addr.arpa. name = 163.com.
Authoritative answers can be found from:
由于 IP 从左到右解析与域名相反,因此反解的 Zone 必须将 IP 反过来写,并在结尾加上 .in-addr.arpa.
字样。
反解区最主要的类型是 PTR(PoinTeR)记录,即查询 IP 对应的主机名。
客户端设置
客户端和 DNS 相关的配置文件主要有三个:
/etc/hosts
:本地文件,用于设置主机名与 IP 对应关系。/etc/resolv.conf
:记录 DNS 服务器 IP 地址。会被 DHCP 服务器更新,可以在网卡配置文件中加入PEERDNS=no
来禁止更新。/etc/nsswitch.conf
:决定 DNS 查询顺序,优先进行本地解析还是 DNS 服务器解析。
/etc/hosts
的设置格式如下,每行一个主机名和 IP 对应关系:
[root@server2 ~]$ cat /etc/hosts
207.97.227.243 www.github.com
192.168.2.234 server1 smblinux
/etc/resolv.conf
的设置格式如下,可以设置多个 DNS 地址,一般不超过 3 个:
[root@server2 ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 222.246.129.80
/etc/nsswitch.conf
的设置选项如下,files
代表本地解析,dns
代表网络 DNS 服务器解析:
[root@server2 ~]$ cat /etc/nsswitch.conf
hosts: files dns myhostname
主从构架
为了确保 DNS 服务的持续可用性,通常会采用主从架构(Master/Slave)来搭建 DNS 服务器。
在主服务器(Master)中,所有与主机名相关的信息都需要手动进行配置,而从服务器(Slave)则直接从主服务器中拉取配置进行同步。
主从服务器之间的数据同步是基于数据库版本号进行的。每当主服务器更新数据时,数据库版本号会增加,主服务器会主动通知从服务器进行数据库更新。从服务器会定期检查主服务器的数据库版本,并根据需要进行更新。
DNS 服务器安装
搭建 DNS 服务器所需的软件名为 BIND(Berkeley Internet Name Domain)。可以使用 yum
安装:
[root@server2 ~]$ yum install -y bind
与服务器设置相关的文件和目录有:
/etc/named.conf
:主配置文件。/etc/sysconfig/named
:用于控制 chroot 和其他额外参数的启动文件。/var/named/
:默认的数据库存放目录。/var/run/named/
:named 程序存放 pid 文件的目录。
缓存 DNS 服务器
最简单的高速缓存(Cache-Only)DNS 服务器只需要一个根目录的区域文件,它只具备缓存搜索结果的功能。甚至连根目录的指向也可以不需要,在上层 DNS 服务器进行转发。
配置文件 /etc/named.conf
的内容如下:
[root@server2 ~]$ vi /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
forward only;
forwarders {
222.246.129.80;
8.8.8.8;
};
};
配置文件选项说明如下:
-
listen-on port 53 { any; }; 设置本机监听使用的网口,可以设置多个端口。
-
directory “/var/named”; 设置正解和反解的区域文件存放目录。
-
dump-file, statistics-file, memstatistics-file 与 named 服务有关的统计信息文件路径。
-
allow-query { any; }; 设置可以使用 DNS 查询的客户端列表。
-
forward only; 设置 DNS 服务器仅进行转发,忽略区域文件设置。
-
forwarders {222.246.129.80; 8.8.8.8;}; 设置转发到的上层 DNS 服务器地址。
启动 named 服务:
[root@server2 ~]$ systemctl enable --now named
[root@server2 ~]$ netstat -ntulp |grep named
tcp 0 0 10.1.1.1:53 0.0.0.0:* LISTEN 43486/named
tcp 0 0 192.168.2.254:53 0.0.0.0:* LISTEN 43486/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 43486/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 43486/named
其中,953 端口是 named 的远程控制功能,称为远程名称解析服务控制功能(RNDC,Remote Name Daemon Control)。
查看 named 相关日志:
[root@server2 ~]$ tail -30 /var/log/messages | grep named
Oct 13 05:20:42 server2 named[43486]: configuring command channel from '/etc/rndc.key'
Oct 13 05:20:42 server2 named[43486]: command channel listening on 127.0.0.1#953
Oct 13 05:20:42 server2 named[43486]: configuring command channel from '/etc/rndc.key'
Oct 13 05:20:42 server2 named[43486]: command channel listening on ::1#953
Oct 13 05:20:42 server2 named[43486]: managed-keys-zone: loaded serial 0
Oct 13 05:20:42 server2 named[43486]: all zones loaded
Oct 13 05:20:42 server2 named[43486]: running
用客户端进行测试,使用 dig
指定 DNS 服务器为 192.168.2.254:
[root@server3 ~]$ dig 163.com @192.168.2.254
;; SERVER: 192.168.2.254#53(192.168.2.254)
结果显示通过 192.168.2.254 服务器解析成功,表示已经成功配置。
配置 DNS 主服务器
假设要搭建 DNS 服务器,域名规划为 hxz.ass,搭配 IP 网段为 192.168.2.0/24,需要设置的配置文件有以下几个:
- /etc/named.conf: 主要配置文件.
- /var/named/named.hxz.ass: 主要的区域正解文件.
- /var/named/named.192.168.2: 主要的区域反解文件.
- /var/named/named.ca: 由 bind 软件提供的.正解文件.
整个 DNS 测试环境规划如下:
系统与 IP | 主机名与 RR 类型 | 说明 |
---|---|---|
Linux (192.168.2.254) | master.hxz.ass (NS, A) www.hxz.ass (A) ftp.hxz.ass (CNAME) www.hxz.ass (MX) |
DNS 设置使用 master.hxz.ass 主要名称为 www.hxz.ass 其他都是 CNAME |
Linux (192.168.2.234) | slave.hxz.ass (NS, A) client.hxz.ass (A) |
作为 DNS 从服务器 |
Win10 (192.168.2.101) | win.hxz.ass (A) | 工作站主机 |
Linux (10.1.1.2) | 测试使用的客户端 |
主要配置文件
主要配置文件 /etc/named.conf
内容如下:
[root@server2 ~]$ vi /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
allow-transfer { none; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "hxz.ass" IN {
type master;
file "named.hxz.ass";
};
zone "2.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.2";
};
其中 allow-transfer
设置是否允许来自从 DNS 服务器对整个领域数据进行传送。
正解文件配置
正解文件设置数据行首前不可有空格符,正解配置文件 /var/named/named.hxz.ass
内容如下:
[root@server2 ~]$ vi /var/named/named.hxz.ass
$TTL 600
@ IN SOA master.hxz.ass. ad.www.hxz.ass(2020010101 3H 15M 1W 1D)
@ IN NS master.hxz.ass.
master.hxz.ass. IN A 192.168.2.254
@ IN MX 10 www.hxz.ass.
www.hxz.ass. IN A 192.168.2.254
ftp.hxz.ass. IN CNAME www.hxz.ass.
slave.hxz.ass. IN A 192.168.2.234
client.hxz.ass. IN A 192.168.2.234
win.hxz.ass. IN A 192.168.2.101
其中 @
符号代表主配置文件中 zone
的意思。例如,正解中的 @
代表 hxz.ass
。反解中的 @
代表 2.168.192.in-addr.arpa
。
开头的 $TTL
是将 TTL 设置应用到每笔 RR 记录中。
反解文件配置
反解文件仅需设置 PTR 记录,反解配置文件 /var/named/named.192.168.2
内容如下:
[root@server2 ~]$ vi /var/named/named.192.168.2
$TTL 600
@ IN SOA master.hxz.ass. ad.www.hxz.ass.(2020010101 3H 15M 1W 1D)
@ IN NS master.hxz.ass.
254 IN PTR master.hxz.ass.
254 IN PTR www.hxz.ass.
234 IN PTR slave.hxz.ass.
101 IN PTR win.hxz.ass.
由于主配置文件中已经设置了反解区域(zone),因此 IP 全名部分已经包含了 192.168.2
,所以最左边的数值只需填入最后一个 IP 位,例如 234
代表 192.168.2.234
。
服务启动
直接启动 named
服务:
[root@server2 ~]$ systemctl enable --now named
如果需要放行防火墙,设置以下规则:
[root@server2 ~]$ iptables -A INPUT -p tcp -i ens33 --dport 53 --sport 1024:65534 -j ACCEPT
[root@server2 ~]$ iptables -A INPUT -p udp -i ens33 --dport 53 --sport 1024:65534 -j ACCEPT
客户端测试
在客户端修改 /etc/resolv.conf
文件,将 DNS 地址设为 192.168.2.254
:
[root@server3 ~]$ vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.2.254
nameserver 222.246.129.80
使用 dig
命令进行测试:
[root@server3 ~]$ dig master.hxz.ass
;; ANSWER SECTION:
master.hxz.ass. 600 IN A 192.168.2.254
[root@server3 ~]$ dig www.hxz.ass
;; ANSWER SECTION:
www.hxz.ass. 600 IN A 192.168.2.254
[root@server3 ~]$ dig ftp.hxz.ass
;; ANSWER SECTION:
ftp.hxz.ass. 600 IN CNAME www.hxz.ass.
www.hxz.ass. 600 IN A 192.168.2.254
[root@server3 ~]$ dig win.hxz.ass
;; ANSWER SECTION:
win.hxz.ass. 600 IN A 192.168.2.101
[root@server3 ~]$ dig -t mx hxz.ass
;; ANSWER SECTION:
hxz.ass. 600 IN MX 10 www.hxz.ass.
[root@server3 ~]$ dig -x 192.168.2.254
;; ANSWER SECTION:
254.2.168.192.in-addr.arpa. 600 IN PTR master.hxz.ass.
254.2.168.192.in-addr.arpa. 600 IN PTR www.hxz.ass.
[root@server3 ~]$ dig -x 192.168.2.101
;; ANSWER SECTION:
101.2.168.192.in-addr.arpa. 600 IN PTR win.hxz.ass.
如果有从服务器,每次更新区域文件后,记得修改序列号(Serial),也就是 SOA 参数括号内的第一个数字,这样从服务器才会自动从主服务器更新数据库。
配置 DNS 从服务器
由于前面已经架设了一台主服务器 192.168.2.254,现在在 192.168.2.234 上搭建一台从服务器。
首先需要在主服务器的主要配置文件中添加 allow-transfer
选项,以允许从服务器进行同步:
[root@server2 ~]$ vi /etc/named.conf
zone "hxz.ass" IN {
type master;
file "named.hxz.ass";
allow-transfer { 192.168.2.234; };
};
zone "2.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.2";
allow-transfer { 192.168.2.234; };
};
然后修改主服务器中的正解和反解文件配置:
[root@server2 ~]$ vi /var/named/named.hxz.ass
@ IN NS slave.hxz.ass.
slave.hxz.ass. IN A 192.168.2.234
[root@server2 ~]$ vi /var/named/named.192.168.2
@ In NS slave.hxz.ass.
234 IN PTR slave.hxz.ass.
从服务器安装 bind
:
[root@server1 sss]$ yum install -y bind
从服务器主配置文件 /etc/named.conf
内容如下:
[root@server1 ~]$ vi /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
allow-transfer { none; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "hxz.ass" IN {
type slave;
file "slaves/named.hxz.ass";
masters { 192.168.2.254; };
};
zone "2.168.192.in-addr.arpa" IN {
type slave;
file "slaves/named.192.168.2";
masters { 192.168.2.254; };
};
之后启动从服务器上的 DNS 服务:
[root@server1 ~]$ systemctl start named
[root@server1 ~]$ systemctl enable named
使用 dig
命令进行测试:
[root@server1 ~]$ dig master.hxz.ass @127.0.0.1
[root@server1 ~]$ dig -x 192.168.2.254 @127.0.0.1
View 功能
DNS 的 View 功能能够让不同来源(内外网)的用户获取对应 Zone 的响应。因此,在同一个 Zone 中需要进行两种不同的设置。
修改主配置文件 /etc/named.conf
内容如下:
[root@server2 ~]$ vi /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
allow-transfer { none; };
};
acl lan { 10.1.1.0/24; };
acl wan { ! 10.1.1.0/24; any; };
view "lan" {
match-clients { "lan"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "hxz.ass" IN {
type master;
file "named.hxz.ass-lan";
};
};
view "wan" {
match-clients { "wan"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "hxz.ass" IN {
type master;
file "named.hxz.ass";
allow-transfer { 192.168.2.234; };
};
zone "2.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.2";
allow-transfer { 192.168.2.234; };
};
};
修改内网正解区域(zone)配置文件 /var/named/master/named.hxz.ass-lan
,将来自内网 10.1.1.0 地址的客户端查询 hxz.ass
的结果指向内网地址 10.1.1.1:
[root@server2 ~]$ vi /var/named/named.hxz.ass-lan
$TTL 600
@ IN SOA master.hxz.ass. ad.www.hxz.ass(2020010101 3H 15M 1W 1D)
@ IN NS master.hxz.ass.
@ IN NS slave.hxz.ass.
master.hxz.ass. IN A 10.1.1.1
slave.hxz.ass. IN A 192.168.2.234
@ IN MX 10 www.hxz.ass.
www.hxz.ass. IN A 10.1.1.1
ftp.hxz.ass. IN CNAME www.hxz.ass.
slave.hxz.ass. IN A 192.168.2.234
client.hxz.ass. IN A 192.168.2.234
win.hxz.ass. IN A 192.168.2.101
重启服务后,分别使用内网和外网进行测试:
[root@server2 ~]$ systemctl restart named
[root@server3 ~]$ dig www.hxz.ass
www.hxz.ass. 600 IN A 10.1.1.1
[root@server1 ~]$ dig www.hxz.ass @192.168.2.254
www.hxz.ass. 600 IN A 192.168.2.254