dns(二)-- dns服务器的搭建
准备环境
dns服务器一般选择的软件工具都是bind9,准备搭建dns的服务器操作系统是centos 7 x64位操作系统。windows有对应的bind软件可以下载,配置是图形界面,因此大家可以自行下载学习。我这里主要讲解linux操作系统的搭建步骤。
dns服务器ip是 192.168.1.111, 配置的域为com,此台dns服务器设备名为test1.dns.com。
另外我准备一台web服务器,ip 是192.168.1.110。此台web服务器设备名为test0.httpd.com,配置的域为httpd.com。
因为我们搭建的是 主dns 服务器 ,并不打算同时配置 从dns 服务器,如果大家想安装 从dns 服务器,还需要再配置一台服务器,这里我就不细讲了。
工具安装
centos系统
sudo yum install bind bind-utils
ubuntu系统
sudo apt-get install bind9
安装完成后,各个系统安装的位置是不同的,主配置文件路径:
centos: /etc/named.conf
ubuntu: /etc/bind/named.conf
修改主配置文件
这两个系统主配置文件内容稍微有些不同,但主要配置一样。以下主要以centos系统讲解,ubuntu系统里面没有的话,大家可以自己添加进去:
options {} 内容:
listen-on port 53 { 127.0.0.1; };
建立监听的ip和端口。此处我们需要修改成listen-on port 53 { 127.0.0.1; 192.168.1.111; };
,192.168.1.111为dns服务器 ip。directory "/var/named";
表明配置里面所填写的文件所对应的目录,如果配置里面所填写的文件没有指定绝对路径,则相对路径都是指此路径。allow-query { localhost; };
指dns服务器可以查询ip的范围,此处修改成allow-query { localhost; 192.168.1.0/24; };
,192.168.1.0/24指dns所处的网段。recursion yes;
支持递归查询,因为此处我们dns服务器兼任缓存服务器功能,所以将该配置添加进去。
建立dns域
touch /etc/named.conf.local
创建文件named.conf.local;- 在/etc/named.conf文件末尾添加
include "/etc/named.conf.local";
; - 在named.conf.local 文件里面添加
zone "com" {
type master;
file "db.com"; # zone file path
};
zone "1.168.192.in-addr.arpa" {
type master;
file "db.192.168.1"; # 192.168.1/24 subnet
};
第一个 zone 用来指明正向解析域,表明如果域名查找,去对应的文件查找。
第二个 zone 用来指明反向解析域,表明如果地址反查找时去对应的文件查找。1.168.192 必须反着写。
type master表明是主dns服务器,如果type slave表明是从dns服务器。
file 指明对应的文件,如果不是绝对路径,则相对路径依赖directory。
- 去directory对应的目录下 /var/named , 创建两个文件
touch db.com db.192.168.1
。 - 编辑 db.com 文件,内容如下:
$TTL 604800
@ IN SOA test1.dns.com. mail.dns.com. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers - NS records
IN NS test1.dns.com.
; name servers - A records
test1.dns.com. IN A 192.168.1.111
; 162.168.1.0/24 - A records
test0.httpd.com. IN A 192.168.1.110
httpd.com. IN CNAME test0.httpd.com.
$TTL 默认缓存时长
;
后面表示注释
@
代指zone com.
, 也可以直接写 com.
。
IN
Internet缩写。
SOA
指明该区域的权威 该句含义代表com域权威服务器是 test1.dns.com.
, 邮件服务器是 mail.dns.com.
,此处我们并没有真正的邮件服务器存在。
5; Serial
可以随意一个无符号的数字,主要用来slave服务器同步用,建议可以 202005211529 ,即当前时间,每次更改配置需要修改此值。此处因为没有slave服务器,所以就填 5。
同理括号内的所有数字都是用于slave服务器用,因此此处照抄就可以。
第二项可以看到前面空了几个空格,实际上表示同上一项该值,即 com.
或 @
NS
该区域的名称服务器,表示com域内名称服务器是 test1.dns.com.
,此处可以有多个名称服务器。
A
名称到地址的映射,表示前面的名称对应的地址是后面项,此处前面的名称必须是全名。
CNAME
别名到全名的映射,此处表示 httpd.com. 全名是 test0.httpd.com.
,当我们查找 http.com 时,dns服务器会直接给出 test0.httpd.com.
对应的ip。
- 编辑 db.192.168.1 文件,内容如下:
$TTL 604800
@ IN SOA test1.dns.com. mail.dns.com. (
4 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers - NS records
IN NS test1.dns.com.
; PTR Records
111 IN PTR test1.dns.com. ; 192.168.1.111
110 IN PTR test0.httpd.com. ; 192.168.1.110
前两项与之前文件接近。此处 @ 表示 1.168.192.in-addr.arpa
。
111 表示 111后面加上 1.168.192,即 192.168.1.111 ip。同理 110 表示 192.168.1.110.
PTR 地址到名称的映射。
完成以后内容以后,表示dns服务器配置已经配好。
检验配置
named-checkconf
命令会默认检查/etc/named.conf 文件。
named-checkzone com /var/named/db.com
命令会检查 zone com 配置是否正确。
named-checkzone 1.168.192.in-addr.arpa /var/named/db.192.168.1
命令会检查 zone 1.168.192.in-addr.arpa 配置是否正确。
启动服务
centos系统:
sudo systemctl start named
sudo systemctl enable named
如果中间发现什么问题,需要重启named服务,也可以用 rndc reload
ubuntu系统:
sudo systemctl start bind9
sudo systemctl enable bind9
防火墙服务
如果开启了防火墙,则可能外面访问dns服务器会被拦截。因此需要添加准入:
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --reload