Linux-DNS服务

本文详细介绍了Linux DNS服务的概念,包括DNS服务器类型、配置文件、记录类型等,并逐步指导如何安装、配置DNS服务,涉及正向、反向解析、双向解析、负载均衡和DNS远程更新,以及DDNS(动态域名解析)的配置方法。

概念

  1. DNS:【Domain Name System】域名系统,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
  2. DNS服务器类型:
    • 主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系
    • 从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况
    • 高速缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率
  3. 配置文件
    • 主配置文件(/etc/named.conf):参数用来定义bind服务程序的运行
    • 区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置
    • 数据配置文件目录(/var/named):目录用来保存域名和IP地址真实对应关系的数据配置文件
  4. 记录类型:
    • A记录:【Address】主机记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上
    • CNAME记录:【Canonical Name】别名记录,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录
    • SOA:【Start of Authority】权威记录的起始,指定有关DNS区域的权威性信息,包含主要名称服务器、域名管理员的电邮地址、域名的流水式编号、和几个有关刷新区域的定时器
    • MX记录:【Mail eXchange】邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器
    • NS记录:【Name Server】域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析;NS记录优先于A记录,如果一个主机地址同时存在NS记录和A记录,则A记录不生效
    • PTR记录:【Pointer】指针记录,在反向解析中使用,PTR记录将一个IP地址对应到主机名

安装DNS服务

yum search dns
#查询dns服务的软件包
yum install -y bind.x86_64
#安装软件
rpm -ql bind.x86_64
#查看软件安装包中,服务器启动名和配置文件位置
#配置文件/etc/named.conf
#服务文件/usr/lib/systemd/system/named.service

开启服务

[root@dns ~]# systemctl start named
#开启服务
#注意真机操作,开启服务时要在真机操作让random捕获,联动/etc/rndc.key文件
[root@dns ~]# cat /dev/random=�����d��m�����ω��7�A�v�w���l�iɝ�[��
#random捕获,必须真机键盘或者鼠标操作

[root@dns ~]# systemctl enable named.service 
ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
#设置自启动

[root@dns ~]# systemctl stop firewalld.service 
#关闭防火墙
[root@dns ~]# systemctl disable firewalld.service 
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
#关闭防火墙自启动

高速缓存

  1. 配置主配置文件
vim /etc/named.conf
 11         listen-on port 53 { any; };
#开放的53端口给任何地址使用
#查看端口配置netstat -antlupe | grep named
 12 //      listen-on-v6 port 53 { ::1; };
#关闭没用的端口
 17         allow-query     { any; };
#开启访问队列,谁可以访问 
 18         forwarders      { 114.114.114.114;};
#forwarders: 指定转发的IP地址表,如果域名服务器无法解析时,将请求交由指定地址来解析
 33         dnssec-validation no;
#Domain Name System Security Extensions (DNSSEC)DNS安全扩展,关闭开关
  1. 配置本机地址解析文件
vim /etc/resolve.conf
nameserver 114.114.114.114    
#配置forwarders中转发地址

正向解析列表

  1. 配置区域配置文件
[root@desktop ~]# vim /etc/named.rfc1912.zones 
zone "testlb.com" IN {
#设置域名
        type master;				#主域服务
        file "testlb.com.zone";		#数据配置文件名称
        allow-update { none; };	
};
  1. 配置数据记录文件
[root@desktop named]# cp -p /var/named/named.localhost /var/named/testlb.com.zone
#var/named目录下named.localhost为一个模板文件,可以直接复制使用
[root@desktop named]# vim /var/named/testlb.com.zone
$TTL 1D
#访问到的主机解析保存时间 TTL time to live
@       IN SOA   dns.testlb.com. lb. (
#@ 代表域名 testlb.com
#在文件中写出的域名如果不以'.'结尾,会自动加'.testlb.com'
#如dns.testlb.com没有'.'结尾,等于是dns.testlb.com.testlb.com
#
                                        0       ; serial    #更新序列号
                                        1D      ; refresh	#从域服务更新时间
                                        1H      ; retry		#refresh失败,重试时间
                                        1W      ; expire	#失效时间
                                        3H )    ; minimum	#最小生存时间
                NS      dns.westoslb.org.
#域名服务器名称
dns             A       127.25.254.101
#域名服务器对应IP地址
www             CNAME   a.westoslb.org.
#域名内www主机别名
a               A       127.11.1.1
a               A       127.11.1.2
#别名对应地址,轮询方式解析地址
westoslb.org.   MX 1    127.25.254.101.
#邮件交换记录
#1 等级1

反向解析

  1. 修改zone配置文件
[root@desktop named]# vim /etc/named.rfc1912.zones 
zone "254.25.127.in-addr.arpa" IN {
#反向解析域名设定模式IP地址网络位倒叙+.in-addr.arpa
        type master;
        file "127.25.254.prt";			#反向解析文件命名
        allow-update { none; };
};
  1. 设置数据记录文件
[root@desktop named]# cp -p /var/named/named.loopback /var/named/127.25.254.prt
#var/named目录下named.loopback为一个模板文件,可以直接复制使用
[root@desktop named]# vim 127.25.254.prt
$TTL 1D
@       IN SOA  dns.testlb.com. lb. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.testlb.com.
dns     A       127.25.254.101
111     PTR     www.testlb.com.
#反向解析记录

双向解析

  1. 复制一份zones区域配置文件,改名为inter
[root@desktop named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
#拷贝一份inter区域文件,修改内容
[root@desktop named]# vim /etc/named.rfc1912.inter
zone "testlb.com" IN {
        type master;
        file "testlb.com.zone.inter";		#修改为指向inter的数据文件
        allow-update { none; };
};
  1. 配置inter数据文件
[root@desktop named]# cp -p /var/named/testlb.com.zone /var/named/testlb.com.zone.inter
#拷贝一份inter数据文件,修改内容
[root@desktop named]# vim /var/named/testlb.com.zone.inter 
$TTL 1D
@       IN SOA   dns.testlb.com  lb (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.testlb.com.
dns             A       1.25.254.101
www             CNAME   a.testlb.com.
a               A       1.11.1.1
a               A       1.11.1.2
westoslb.org.   MX 1    172.25.254.101.
~              
#将地址改为inter对应地址                             

3. 设置主配置文件
```bash
view string optional_class {
                match-clients { address_match_element; ... };

view localhost {
        match-clients { 127.25.254.101;};			#添加匹配指定地址信息
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.inter";			#匹配对应区域数据文件
};

view anyone {
        match-clients { any;};						#除了指定地址意外的任意内容
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.zones";			#匹配对应区域数据文件
};

负载均衡

  1. 配置一台子服务器
安装dns
配置/etc/named.conf
  1. 子服务器配置zones区域文件
vim /etc/named.rfc1912.zones
zone "testlb.com" IN {
#同一个域名
        type slave;
#type类型修改从域服务
        masters { 172.25.254.101; };
#主服务器地址
        file "slaves/testlb.com.zone";
#zone配置文件存放地址,/var/named/slaves/testlb.com.zone
        allow-update { none; };
};
  1. 主服务器
vim /etc/named.rfc1912.zones
zone "testlb.com" IN {
        type master;
        file "testlb.com.zone";
        allow-update { none; };
        also-notify { 172.25.254.201; };
#添加通知子服务器获取文件记录文件修改通知
};
  1. 修改记录测试同步
$TTL 1D
@       IN SOA   dns.testlb.com  lb (
                                        1       ; serial
#serial 同步记录开关,数字增加,最多10位,使用过的数字再次使用无效
#推荐记录分方式 年-月-次数 如 2019103001
                                        1D      ; refresh
....
news            A       127.25.1.3
#添加记录
.....

DNS远程更新

普通更新方式

  1. 备份原zone数据文件
[root@station ~]# cp -p /var/named/testlb.com.zone* /opt
  1. 修改区域文件内容
[root@station opt]# vim /etc/named.rfc1912.zones 
zone "testlb.com" IN {
        type master;
        file "testlb.com.zone";
        allow-update { 172.25.254.201; };
#允许更新改为指定测试的客户端地址
        also-notify { 172.25.254.201; };
};
  1. 重启服务,清空日志
[root@station opt]# systemctl restart named
[root@station opt]# > /var/log/messages 
  1. 测试端进行远程发送
[root@server ~]# nsupdate
> server 172.25.254.101
> update add date.testlb.com 86400 A 127.25.1.16  
> send
update failed: SERVFAIL
#如果提示servfail报错,可能是服务器文件夹/var/named 权限不对
  1. 修改服务端的named文件,named组的写权限
[root@station opt]# ls -ld /var/named/
drwxr-x---. 5 root named 4096 Oct 31 21:43 /var/named/
[root@station opt]# chmod g+w /var/named
[root@station opt]# ls -ld /var/named/
drwxrwx---. 5 root named 4096 Oct 31 21:43 /var/named/

6.再次测试发送

[root@server ~]# nsupdate
> server 172.25.254.101
> update add date.testlb.com 86400 A 127.25.1.16  
> send
>
#成功
  1. 服务端生成远程更新文件*.zone.jnl
[root@station opt]# cat /var/named/testlb.com.zone.jnl 
#远程更新后的文件   
;BIND LOG V9
�8�TtestlbcomQ�>dnstestlbcomtestlbcomlbtestlbcomQ�	:�*0TtestlbcomQ�>dnstestlbcomtestlbcomlbtestlbcomQ�	:�*0datetestlbcomQ�
[root@station opt]# file /var/named/testlb.com.zone.jnl 
/var/named/testlb.com.zone.jnl: data
#文件类型为data数据型
[root@station opt]# systemctl restart named
#重启服务可以将更新添加入原配置文件中,不重启也能使用,不影响dns效果
$ORIGIN .
$TTL 86400	; 1 day
testlb.com		IN SOA	dns.testlb.com.testlb.com. lb.testlb.com. (
				2          ; serial
				86400      ; refresh (1 day)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				10800      ; minimum (3 hours)
				)
			NS	dns.testlb.com.
$ORIGIN testlb.com.
a			A	127.25.1.1
			A	127.25.1.2
date			A	127.25.1.16
#更新信息已添加成功
dns			A	127.25.254.101
news			A	127.25.1.3
www			CNAME	a
  1. 测试端
 dig date.testlb.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> date.testlb.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48221
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;date.testlb.com.		IN	A

;; ANSWER SECTION:
date.testlb.com.	86400	IN	A	127.25.1.16
#检测到地址信息
;; AUTHORITY SECTION:
testlb.com.		86400	IN	NS	dns.testlb.com.

;; ADDITIONAL SECTION:
dns.testlb.com.		86400	IN	A	127.25.254.101

;; Query time: 0 msec
;; SERVER: 172.25.254.201#53(172.25.254.201)
;; WHEN: Thu Oct 31 21:49:36 EDT 2019
;; MSG SIZE  rcvd: 94

远程加密更新

  1. 查看rndc.key文件格式
[root@station opt]# cat /etc/rndc.key 
key "rndc-key" {
	algorithm hmac-md5;
	secret "2kxMEarjTJg5WRNvBgwAlg==";
};

2.制作相同格式密钥

[root@station opt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST testlbkey
#此处会卡住,与服务启动相同,要在真机中移动鼠标或在敲击键盘
[root@station dnskey]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST testlbkey
Ktestlbkey.+157+61729
#生成密钥
[root@station dnskey]# ls
Ktestlbkey.+157+61729.key  Ktestlbkey.+157+61729.private
#公钥和密钥
  1. 新建密钥key文件,并添加密钥
[root@station opt]# cp -p /etc/rndc.key  /etc/testlb.key
#复制一份key文件进行修改
[root@station dnskey]# vim /etc/testlb.key
key "testlbkey" {
#设置为密钥名称
        algorithm hmac-md5;
        secret "QERFRKEm/BmGDu591F6vVw==";
#将密钥中的密码添加至此处""内;
};
  1. 修改主配置文件
[root@station dnskey]# vim /etc/named.conf 
......
};
include "/etc/testlb.key";
#将密钥信息添加在optins{};之后
......

5.修改zones区域配置文件

[root@station dnskey]# vim /etc/named.rfc1912.zones
zone "testlb.com" IN {
        type master;
        file "testlb.com.zone";
        allow-update { key testlbkey; };
#更新方式换成密钥方式
        also-notify { 172.25.254.201; };
};

6.拷贝密钥给远程登录客户端

[root@station dnskey]# scp ./*  root@172.25.254.201:/opt/
#将密钥发送给客户端

7.清空记录进行更新

[root@station dnskey]# rm -rf /var/named/testlb.com.*
[root@station dnskey]# nsupdate -k Ktestlbkey.+157+61729.private
#更新时注意附带私钥进行操作
> server 172.25.254.101
> update add date.testlb.com 86400 A 127.25.1.16  
> send
>
#成功

DDNS(动态域名解析:花生壳)

DDNS:【DYNAMIC DNS】动态域名解析,一种自动更新名称服务器内容的技术。根据互联网的域名订立规则,域名必须跟从固定的IP地址。但动态DNS系统为动态网域提供一个固定的名称服务器,透过即时更新,使外界用户能够连上动态用户的网址。

  1. 配置环境,搭建一台服务器拥有DNS服务与DHCP服务
  2. DNS服务配置,生成密钥文件,配置方式与密钥远程更新一样
  • 主配置文件
[root@station dnskey]# vim /etc/named.conf 
......
};
include "/etc/testlb.key";
#将密钥信息添加在optins{};之后
......
  • 区域配置文件
[root@station dnskey]# vim /etc/named.rfc1912.zones
zone "testlb.com" IN {
        type master;
        file "testlb.com.zone";
        allow-update { key testlbkey; };
#更新方式换成密钥方式
        also-notify { 172.25.254.201; };
};
  1. 修改DHCP配置文件
 14 ddns-update-style interim;
#开启14行功能,改为interim功能
subnet 172.25.254.0 netmask 255.255.255.0 {
 28   range 172.25.254.204 172.25.254.210;
 29   option routers 172.25.254.101;
 30 }
 31 
 32 key testlbkey {
 33          algorithm hmac-md5;
 34          secret QERFRKEm/BmGDu591F6vVw==;
 35        };
#添加DNS更新密钥文件,与DNS配置的密钥相同
 36 
 37 
 38 zone testlb.com. {
 39          primary 127.0.0.1;		#指定DNS主机地址,由于配置了一台主机,所有使用回环接口
 40          key testlbkey;
 41        }
#添加域名与密钥文件配对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值