1.DNS簡(jiǎn)單介紹
DNS: Donmain Name Service 域名解析服務(wù)
域名系統(tǒng)(服務(wù))協(xié)議(DNS)是一種分布式網(wǎng)絡(luò)目錄服務(wù),主要用于域名與 IP 地址的相互轉(zhuǎn)換,以及控制因特網(wǎng)的電子郵件的發(fā)送。說白了就是IP地址不好記,改成域名方便人類記憶
端口號(hào): 53
架構(gòu)類型:C/S
協(xié)議: udp,tcp 都支持
linux下實(shí)現(xiàn)DNS出名的服務(wù):BIND
BIND:Berkeley Internet Name Domain
是一款開放源碼的DNS服務(wù)器軟件,由美國(guó)加州大學(xué)Berkeley分校開發(fā)和維護(hù)的
BIND官方網(wǎng)站:http://www.isc.org
DHCP 也是 isc 組織開發(fā)的
本地名稱解析配置文件:
- centos系統(tǒng):
/etc/hosts - windows系統(tǒng):
%WINDIR%/system32/drivers/etc/hosts
2.安裝 bind 服務(wù)
先關(guān)閉防火墻,或者放通 tcp/udp 53 端口
systemctl stop firewalld
yum 安裝服務(wù)
yum install bind -y
啟動(dòng)服務(wù)
systemctl status named.service
systemctl enable named
啟動(dòng)腳本:
/etc/init.d/named
/usr/lib/systemd/system/named.service
主配置文件
/etc/named.conf
/etc/named.rfc1912.zones
/etc/rndc.key
解析庫(kù)文件
ZONE_NAME.ZONE 是建議文件命名規(guī)則,非實(shí)際文件
/var/named/ZONE_NAME.ZONE
資源記錄解釋
記錄類型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA: Start of Authority,起始授權(quán)記錄有且只能有一條SOA記錄,必須位于解析庫(kù)的第一條記錄
A :域名(FQDN) 解析IP
AAAA: 域名(FQDN) 解析成IPv6
PTR:IP 解析成 域名(FQDN)
NS: Name Server,專門用于,標(biāo)明當(dāng)前區(qū)域的DNS服務(wù)器
CNAME:Canonical Name, 別名記錄
MX: Mail eXchanger 郵件交換器
-
配置文件與解析庫(kù)的權(quán)限需要注意 named 要可以訪問對(duì)應(yīng)文件
[root@DNS-server named]# ll
total 24
-rw-r-----. 1 root named 168 Dec 15 2009 10.0.zone
drwxrwx---. 2 named named 23 Jun 19 09:49 data
drwxrwx---. 2 named named 60 Jun 21 00:34 dynamic
-rw-r-----. 1 root named 267 Jun 21 00:34 magedu.com.zone
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 6 Jun 1 11:26 slaves
[root@DNS-server named]# ll /etc/named*
-rw-r-----. 1 root named 1808 Jun 21 00:17 /etc/named.conf
-rw-r--r--. 1 root named 3923 Jun 1 11:26 /etc/named.iscdlv.key
-rw-r-----. 1 root named 1093 Jun 21 01:11 /etc/named.rfc1912.zones
-rw-r--r--. 1 root named 1886 Apr 13 2017 /etc/named.root.key
3. 配置bind服務(wù)
3.1 配置正向解析
可以在 主配置文件/etc/named.conf添加,但是為了減少主配置文件的內(nèi)容,我們就在主配置指定的子配置文件中添加 /etc/named.rfc1912.zones 也是系統(tǒng)默認(rèn)用來添加區(qū)域的
在 /etc/named.rfc1912.zones 中添加馬哥區(qū)域:
zone "magedu.com" { type master; file "magedu.com.zone"; };
vim /etc/named.rfc1912.zones
#注釋已經(jīng)被我刪掉了
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
#添加的內(nèi)容
zone "magedu.com" {
type master;
file "magedu.com.zone"; # 域的解析庫(kù),默認(rèn)在/var/named/ 目錄下,可以在 主配置文件中自定義
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
3.2 配置區(qū)域(magedu.com)的解析庫(kù)
在上面我們定義了magedu.com.zone 解析庫(kù)文件,下面開始創(chuàng)建域配置改文件:
粘貼復(fù)制自帶的文件,并 使用-a復(fù)制文件屬性;若 自己創(chuàng)建,需要注意文件權(quán)限
[root@DNS-server named]# cd /var/named
[root@DNS-server named]#cp -a named.localhost magedu.com.zone
[root@DNS-server named]# ll magedu.com.zone
-rw-r-----. 1 root named 267 Jun 21 00:34 magedu.com.zone
解析庫(kù)文件默認(rèn)放在(可以在主配置文件中自定義):/var/named
[root@DNS-server named]# cat magedu.com.zone
$TTL 1D #所有記錄的默認(rèn)超時(shí)時(shí)間 ,1D:一天,不加默認(rèn)單位為 "秒"
#域名 (TTL) IN 資源類型 值 管理員郵箱 參數(shù)(括號(hào)內(nèi)的都是)
@ IN SOA dnssvr1 admin.magedu.com. (
#注釋
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dnssvr1
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
@:表示 當(dāng)前域的域名,相當(dāng)于一個(gè)變量(magedu.com) 在上面的 配置文件中/etc/named.rfc1912.zones定義好了$TTL:定義該區(qū)域所有解析條目的默認(rèn)超時(shí)時(shí)間TTL:這個(gè)被省略了,在@與IN之間,用來定義單條解析的超時(shí)時(shí)間SOA: 資源類型值: 必須是一個(gè)域名 當(dāng)前 為 dnssvr1,系統(tǒng)系統(tǒng)補(bǔ)全為 dnssvr1.magedu.com. ; 也可以手動(dòng)輸入 dnssvr1.magedu.com. ,還需要添加一條A記錄,最終是要解析成IP,不能直接把值添加成IP;(com后的 "." 必須要,不然系統(tǒng)又會(huì)在尾部添加 成 dnssvr1.magedu.com.magedu.com)管理員郵箱: 管理員的郵箱 admin@magedu.com. ,但是 @ 被占用了,有別的含義,所以就用 "." 代替了;這是系統(tǒng)規(guī)定的,可不是自己定義的參數(shù):
0 ;serial:為本數(shù)據(jù)庫(kù)的版本號(hào),指的就是我們正在編輯的這個(gè)文本文件。只要對(duì)本數(shù)據(jù)庫(kù)做數(shù)據(jù)出更改,就必須改變版本號(hào),一般為遞增;在做DNS主從同步,從庫(kù)就看主庫(kù)的版本號(hào)是否一致,而決定是否出發(fā)數(shù)據(jù)同步操作
1D ; refresh:觸發(fā)同步的間隔時(shí)間,默認(rèn)為 " 1D " (一天),取決于庫(kù)文件改變數(shù)據(jù)的平凡程度,來定時(shí)間間隔
1H ; retry: 同步失敗,重新連接同步的間隔時(shí)間
1W ; expire: 從服務(wù)器無法與主服務(wù)器同步,超出指定時(shí)間后,默認(rèn)" 1W " (一周); 從服務(wù)器所有解析記錄失效,從服務(wù)器不再提供DNS解析服務(wù)
3H ; minimum: 訪問不存在的解析記錄的緩存過期時(shí)間;比如:用戶訪問 www.qq1111.com,第一次訪問,DNS 服務(wù)器會(huì)通過 根 DNS 一級(jí)級(jí) 尋找,直到確認(rèn)無法解析;而后,再次在緩存過期時(shí)間內(nèi)訪問,直接給回上次的結(jié)果;超過過期時(shí)間后訪問,就與第一次訪問步驟相同NS指定當(dāng)前區(qū)域的DNS 服務(wù)器CNAME別名MX郵件服務(wù)器,MX與mailsvr中間的10為郵件服務(wù)器的優(yōu)先級(jí),越小優(yōu)先級(jí)越高
附:
以下兩個(gè)命令用來排錯(cuò)使用
- 檢查配置文件語法錯(cuò)誤
[root@DNS-server ~]# named-checkconf
- 檢查區(qū)域解析庫(kù)文件語法錯(cuò)誤
named-checkzone + 域名 + 解析庫(kù)文件
[root@DNS-server ~]# named-checkzone magedu.com /var/named/magedu.com.zone
zone magedu.com/IN: loaded serial 0
OK
一個(gè)最簡(jiǎn)單的DNS服務(wù)就配置完成了,接下來測(cè)試一下
3.3 重載服務(wù)
systemctl reload named 或 rndc reload
3.4 嘗試本地訪問:
[root@DNS-server ~]# dig www.magedu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5138
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN CNAME websevr1.magedu.com.
websevr1.magedu.com. 86400 IN A 10.0.0.14
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS dnssvr1.magedu.com.
;; ADDITIONAL SECTION:
dnssvr1.magedu.com. 86400 IN A 10.0.1.2
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jun 20 22:37:46 EDT 2020
;; MSG SIZE rcvd: 120
如果沒有dig命令,就yum 安裝 bind-utils;里面的dig、host、nslookup都是DNS調(diào)試工具
[root@DNS-server ~]# rpm -ql bind-utils
/etc/trusted-key.key
/usr/bin/delv
/usr/bin/dig
/usr/bin/host
/usr/bin/mdig
/usr/bin/nslookup
/usr/bin/nsupdate
/usr/share/man/man1/delv.1.gz
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/mdig.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz
在這里細(xì)心的認(rèn)會(huì)發(fā)現(xiàn)只能本地訪問可以解析,其它服務(wù)器訪問無法解析
3.5 主配置文件講解
[root@DNS-server ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { localhost; }; #監(jiān)聽的端口號(hào),與監(jiān)聽的ip地址;默認(rèn) 127.0.0.1;改成 localhost 表示監(jiān)聽本機(jī)所有IP
listen-on-v6 port 53 { ::1; };
directory "/var/named"; #放置域解析庫(kù)的目錄
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 { 10.0.0.0/23; }; #允許訪問的IP,默認(rèn)localhost,可填:any 表示所有
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes; #DNS迭代(就是自己找不到,讓別人幫忙找)
#DNS 安全,dnssec-enable、dnssec-validation 開啟后,只會(huì)尋找本服務(wù)器的DNS解析
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid"; # pid文件
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
#定義,子配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
現(xiàn)在指定網(wǎng)段的服務(wù)器都可以訪問DNS了
測(cè)試一下
指定DNS服務(wù)IP器解析方法:
host " 域名 " " DNS_ip "
dig " 域名 " @" DNS_ip "
[root@centos-mini ~]# host www.magedu.com 10.0.1.2
Using domain server:
Name: 10.0.1.2
Address: 10.0.1.2#53
Aliases:
如果存在一個(gè)域名對(duì)應(yīng)多個(gè) A 記錄,那么優(yōu)先返回 同一網(wǎng)段的地址;若都是一個(gè)網(wǎng)段,那本就隨機(jī)返回,也起到負(fù)載均衡的效果
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
www CNAME websevr1
windows下使用nslookup解析
C:\Users\Administrator>nslookup
Default Server: dnsanycast-1.szgwbn.net.cn
Address: 211.162.66.66
> server 10.0.1.2 # 臨時(shí)指定DNS服務(wù)器
Default Server: [10.0.1.2]
Address: 10.0.1.2
> www.magedu.com #解析域名
Server: [10.0.1.2]
Address: 10.0.1.2
Name: websevr1.magedu.com
Addresses: 10.0.0.13
10.0.0.14
Aliases: www.magedu.com
> exit #退出
#也可以在 命令后面 直接跟 域名 與 DNS_ip
C:\Users\Administrator>nslookup www.magedu.com 10.0.1.2
Server: UnKnown
Address: 10.0.1.2
Name: websevr1.magedu.com
Addresses: 10.0.0.14
10.0.0.13
Aliases: www.magedu.com
4、配置DNS反向解析
在 /etc/named.rfc1912.zones 中添加 反向解析域
[root@DNS-server ~]# vim /etc/named.rfc1912.zones
zone "0.10.in-addr.arpa" IN { # 0.10 就是需要反向解析IP段,反寫
type master;
file "10.0.zone";
復(fù)制反向解析庫(kù)模版
[root@DNS-server named]# cd /var/named
[root@DNS-server named]# cp -a named.loopback 10.0.zone
配置反向解析庫(kù)
[root@DNS-server named]# vim 10.0.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dnssvr1
dnssvr1 A 127.0.0.1
1.2 PTR localhost. # 1.2 后面的,系統(tǒng)會(huì)自動(dòng)補(bǔ)全
15.0.0.10.in-addr.arpa. PTR websvr1.qq.com. # 15.0.0.10.in-addr.arpa. 完全全格式
檢查語法,重載服務(wù)
[root@DNS-server named]# named-checkzone 15.0.0.10.in-addr.arpa 10.0.zone
zone 15.0.0.10.in-addr.arpa/IN: loaded serial 0
OK
[root@DNS-server named]# rndc reload
反向解析,可以看到,通過IP能解析出配置的域名了
C:\Users\Administrator>nslookup 10.0.0.15 10.0.1.2
Server: localhost
Address: 10.0.1.2
Name: websvr1.qq.com
Address: 10.0.0.15
反向解析測(cè)試:
[root@centos-mini ~]# dig -x 10.0.0.15 @10.0.1.2
[root@centos-mini ~]# nslookup 10.0.0.15
按類型查詢:
#查郵箱 MX
[root@centos-mini ~]# dig -t MX magedu.com. @114.114.114.114
#查NS記錄
[root@centos-mini ~]# dig -t NS magedu.com. @114.114.114.114
#查詢解析庫(kù)的所有記錄,這是不安全的,需要做安全優(yōu)化,就不會(huì)被查到了
[root@centos-mini ~]# dig -t axfr magedu.com @10.0.1.2
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.7 <<>> -t axfr magedu.com @10.0.1.2
;; global options: +cmd
magedu.com. 86400 IN SOA dnssvr1.magedu.com. admin.magedu.com. 0 86400 3600 604800 10800
magedu.com. 86400 IN MX 10 mailsvr.magedu.com.
magedu.com. 86400 IN NS dnssvr1.magedu.com.
dnssvr1.magedu.com. 86400 IN A 10.0.1.2
mailsvr.magedu.com. 86400 IN A 10.0.0.3
websevr1.magedu.com. 86400 IN A 10.0.0.14
websevr1.magedu.com. 86400 IN A 10.0.0.13
www.magedu.com. 86400 IN CNAME websevr1.magedu.com.
magedu.com. 86400 IN SOA dnssvr1.magedu.com. admin.magedu.com. 0 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 10.0.1.2#53(10.0.1.2)
;; WHEN: Sun Jun 21 14:48:46 2020
;; XFR size: 9 records (messages 1, bytes 243)
解析庫(kù)記錄的用法
- 解析 server1-100:
里面的 $GENERATE 1-100 server$ A 10.0.0.$ 表示:
server1 A 10.0.0.1
server2 A 10.0.0.2
server3 A 10.0.0.3
....
....
server100 A 10.0.0.100
一百條A記錄
[root@DNS-server named]# vim magedu.com.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr1
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
$GENERATE 1-100 server$ A 10.0.0.$
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
- 不加 www 訪問域名的解決辦法:
@ 就表示域名 magedu.com,在/etc/named.rfc1912.zones文件中定義的
@ A 10.0.1.2
magedu.com A 10.0.1.2
- 匹配錯(cuò)誤域名
比如輸入: wwwwwww.magedu.com;錯(cuò)誤的A記錄;默認(rèn)是解析不了的,加入如下信息,就可以解析了, " * " 的優(yōu)先級(jí)是最低的,所有記錄都匹配不到,才匹配 " * ":
* A 10.0.1.2
5、DNS 主從的實(shí)現(xiàn):
從服務(wù)器圣上
#安裝服務(wù)器
yum install bind -y
#插入同步域內(nèi)容
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave; #表示從DNS
masters {10.0.1.2;}; #主DNS 的IP
file "slaves/magedu.com.slave.zone"; #同步的解析庫(kù)保留的地方
slaves 是專門用來放從庫(kù)的同步解析文件的,也可以 自己創(chuàng)建目錄,但必須 給 named 用戶與組 讀寫權(quán)限
slaves/magedu.com.slave.zone是相對(duì)路徑,centos 7 該文件是加密的
[root@DNS-client named]# pwd
/var/named
[root@DNS-client named]# ll
總用量 16
drwxrwx--- 2 named named 23 6月 22 20:13 data
drwxrwx--- 2 named named 60 6月 22 20:18 dynamic
-rw-r----- 1 root named 2253 4月 5 2018 named.ca
-rw-r----- 1 root named 152 12月 15 2009 named.empty
-rw-r----- 1 root named 152 6月 21 2007 named.localhost
-rw-r----- 1 root named 168 12月 15 2009 named.loopback
drwxrwx--- 2 named named 35 6月 22 20:18 slaves
測(cè)試一下 :
# 主 DNS:10.0.1.2
# 從 DNS:10.0.0.14
# 正常 是 10.0.1.2 主DNS 解析
[root@centos-mini ~]# nslookup www.magedu.com
Server: 10.0.1.2
Address: 10.0.1.2#53
www.magedu.com canonical name = websevr1.magedu.com.
Name: websevr1.magedu.com
Address: 10.0.0.13
Name: websevr1.magedu.com
Address: 10.0.0.14
# 禁用 10.0.1.2 DNS 主機(jī)網(wǎng)絡(luò) ;解析變成了:10.0.0.14,測(cè)試成功
[root@centos-mini ~]# nslookup www.magedu.com
Server: 10.0.0.14
Address: 10.0.0.14#53
www.magedu.com canonical name = websevr1.magedu.com.
Name: websevr1.magedu.com
Address: 10.0.0.13
Name: websevr1.magedu.com
Address: 10.0.0.14
同理,也可以從 從庫(kù)同步數(shù)據(jù), 給從庫(kù)建立從庫(kù)
添加同步訪問限制
細(xì)心的人會(huì)發(fā)現(xiàn),在建立從庫(kù)的時(shí)候,不需要任何認(rèn)證,直接就重主庫(kù)中,把庫(kù)文件同步下來了;這肯定是不安全的;
在options中 添加 allow-transfer { 10.0.0.14; };
,10.0.0.14 是允許從本服務(wù)器同步的IP; 就可以起到限制作用
[root@DNS-server ~]# vim /etc/named.conf
options {
listen-on port 53 { localhost; };
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 { 10.0.0.0/23; };
allow-transfer { 10.0.0.14; };
被同步的從庫(kù)上也要做配置 allow-transfer { none; };;不允許任何人,同步從庫(kù)數(shù)據(jù),才能達(dá)到真正的安全
options {
// listen-on port 53 { 127.0.0.1; };
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 { localhost; };
allow-transfer { none; };
可以使用 dig -t axfr magedu.com @10.0.1.2 做測(cè)試,是否可以同步數(shù)據(jù)
主DNS主動(dòng)觸發(fā)同步數(shù)據(jù)
1、需要配置一條 NS 記錄指定從庫(kù),還要配置 一條從庫(kù)的A 記錄; 就是要告訴 named 服務(wù) 我有兩個(gè) DNS IP
2、 更改 數(shù)據(jù)庫(kù)的版本號(hào)( 1 ; serial);比原先的大就行;
3、reload named服務(wù)
注意:centos 7 與 6 的 DNS 同步數(shù)據(jù)是有問題的; 在創(chuàng)建主從DNS的時(shí)候,一定要保持 系統(tǒng)版本 與 bind 服版本統(tǒng)一
centos 6 與 7 之間做主從:
centos 6 只能做 主 服務(wù)器
centos 7 主從 均可
[root@DNS-server ~]# vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA dnssvr1 admin.magedu.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr1
NS dnssvr2
dnssvr2 A 10.0.0.14
dnssvr1 A 10.0.1.2
websevr1 A 10.0.0.14
websevr1 A 10.0.0.13
www CNAME websevr1
@ MX 10 mailsvr
mailsvr A 10.0.0.3
@ A 10.0.1.2
magedu.com A 10.0.1.2
* A 10.0.1.2
有問題的話,可以看日志:/var/log/message
6、配置動(dòng)態(tài)更新解析庫(kù)內(nèi)容
配置完成后,可以直接使用命令 添加、刪除 域名解析條目
在配置的區(qū)域下 添加:
allow-update { 10.0.0.14; };
10.0.0.14 為指定可更新解析條目的IP
[root@DNS-server ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-update { 10.0.0.14; };
重啟服務(wù)
systemctl restart named 或者 systemctl reload named (可能不生效)
在 10.0.0.14 上 測(cè)試一下:
# 添加一條A 記錄
[root@DNS-client named]# nsupdate
> server 10.0.1.2 # 動(dòng)態(tài) DNS 域名
> zone magedu.com # 指定 要在哪個(gè)域中添加
> update add ftp.magedu.com 88888 IN A 8.8.8.8 # 添加一天A 記錄
> send # 發(fā)送
> quit #退出
系統(tǒng)會(huì)產(chǎn)生一個(gè)臨時(shí)文件
[root@DNS-server ~]# ll /var/named/magedu.com.zone.jnl
-rw-r--r--. 1 named named 726 Jun 23 10:19 /var/named/magedu.com.zone.jnl
測(cè)試是否可以解析
# 添加的 A 記錄 解析成功
[root@DNS-client ~]# nslookup ftp.magedu.com
Server: 10.0.1.2
Address: 10.0.1.2#53
Name: ftp.magedu.com
Address: 8.8.8.8
還需要把解析庫(kù)文件(magedu.com.zone)給 named用戶,否者臨時(shí)文件無法定時(shí)寫入到解析庫(kù)文件
[root@DNS-server named]# ll
total 48
-rw-r-----. 1 root named 230 Jun 21 14:08 10.0.zone
drwxrwx---. 2 named named 49 Jun 21 15:08 data
drwxrwx---. 2 named named 60 Jun 25 15:14 dynamic
-rw-r--r--. 1 named named 430 Jun 25 15:27 magedu.com.zone
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
取消動(dòng)態(tài)解析庫(kù)
先把 allow-update { 10.0.0.14; }; 的 10.0.0.14 改為none
allow-update { none; };
重載 named 服務(wù),使用rndc sync 把臨時(shí)文件的內(nèi)容同步到 解析庫(kù)文件中;
systemctl reload named
rndc sync
刪除臨時(shí)文件(.jnl)
rndc sync -clean
7、開啟查詢的日志的記錄
默認(rèn) /var/log/messages 只記錄更改DNS 的記錄, rndc querylog 是 開關(guān)
這一項(xiàng)在DNS正式使用時(shí),建議不要開啟;DNS訪問量大,時(shí)間長(zhǎng)了,會(huì)產(chǎn)生大量的日志,在測(cè)試排障的時(shí)候可以使用
[root@DNS-server ~]# rndc querylog
[root@DNS-server ~]# rndc status
version: BIND 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 (Extended Support Version) <id:7107deb>
running on DNS-server: Linux x86_64 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019
boot time: Tue, 23 Jun 2020 11:58:30 GMT
last configured: Tue, 23 Jun 2020 14:17:32 GMT
configuration file: /etc/named.conf
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 105 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON #表示開啟 ; rndc querylog命令 為開關(guān)
recursive clients: 0/900/1000
tcp clients: 4/150
server is up and running
隨便解析一個(gè)A 記錄,可以看到日志中生成了
[root@DNS-server ~]# tailf /var/log/messages
Jun 23 10:33:27 DNS-server named[11946]: client @0x7f265aeee0c0 10.0.0.4#51880 (www.magedu.com): query: www.magedu.com IN A + (10.0.1.2)
8、實(shí)現(xiàn)DNS服務(wù)子域
我這里是兩臺(tái)不同IP的服務(wù)器,實(shí)現(xiàn)的;在同一服務(wù)器下,也是類似的方法
父域的配置
添加兩行,指定子域 DNS,與 子域解析的A記錄
shanghai NS dnssvr-sh
dnssvr-sh A 10.0.0.14
$TTL 86400 ; 1 day
@ IN SOA dnssvr admin (
6 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dnssvr
shanghai NS dnssvr-sh
dnssvr A 10.0.1.2
dnssvr-sh A 10.0.0.14
www A 8.8.8.8
還需要把 /etc/named.conf 目錄中 options 里的下面兩項(xiàng)改為 " no ",不能注釋掉,默認(rèn)選項(xiàng)是 "yes"
dnssec-enable no;
dnssec-validation no;
[root@DNS-server named]# vim /etc/named.conf
options {
dnssec-enable no;
dnssec-validation no;
子域正常配置就行了:
$TTL 1D
@ IN SOA dnssvr-sh admin.shanghai.magedu.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dnssvr-sh
dnssvr-sh A 10.0.0.14
www A 5.5.5.5
通過父域 DNS 訪問子域的 www 服務(wù),可以看到,解析出來為 子域的IP :5.5.5.5
[root@centos-mini ~]# nslookup www.shanghai.magedu.com 10.0.1.2
Server: 10.0.1.2
Address: 10.0.1.2#53
Non-authoritative answer:
Name: www.shanghai.magedu.com
Address: 5.5.5.5
就這么簡(jiǎn)單
9、DNS轉(zhuǎn)發(fā)
全局域轉(zhuǎn)發(fā)
當(dāng)存在多個(gè)dns服務(wù)器的時(shí)候,希望 A dns服務(wù)器找不到的解析記錄,轉(zhuǎn)發(fā)到B dns上解析,再返回解析記錄
配置,在option中添加轉(zhuǎn)發(fā)配置:
forward only; :表示如果轉(zhuǎn)發(fā)的DNS服務(wù)器上,也沒有解析記錄;就不再尋找根
forward first; :表示 先找轉(zhuǎn)發(fā)的DNS,找不到再自己去找根
forwarders {10.0.1.2;}; : 轉(zhuǎn)發(fā)給 目標(biāo) DNS 服務(wù)器 的 IP地址
[root@DNS-server named]# vim /etc/named.conf
options {
forward only;
forwarders {10.0.1.2;};
#dns安全參數(shù),需要關(guān)閉,不然無法轉(zhuǎn)發(fā)
dnssec-enable no;
dnssec-validation no;
指定域轉(zhuǎn)發(fā)
同樣,dnssec也需要關(guān)掉
#dns安全參數(shù),需要關(guān)閉,不然無法轉(zhuǎn)發(fā)
dnssec-enable no;
dnssec-validation no;
添加需要被轉(zhuǎn)發(fā)域名
[root@DNS-client ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type forward;
forward only; # 這里與上面的轉(zhuǎn)發(fā)意思一樣
forwarders {10.0.1.2;};
清除DNS緩存
[root@DNS-client ~]# rndc flush
不連接外網(wǎng)找根,也不轉(zhuǎn)發(fā)(不再遞歸)
主要是針對(duì)企業(yè)內(nèi)部使用的DNS,即使有網(wǎng)絡(luò),不想訪問互聯(lián)網(wǎng),去解析域名;本機(jī)解析不了,就解析不
recursion no; :默認(rèn)yes ,改為 no
[root@DNS-server named]# vim /etc/named.conf
options {
recursion no;
10、智能DNS
bind view
根據(jù)客戶端 IP的歸屬地 給出就近的 DNS 域名解析;如 客戶端 為上海,DNS就返回離上海最近的解析記錄給客戶端,以達(dá)到就近訪問,提高訪問效率的好處
做智能DNS 一般都是大公司,有很多個(gè)機(jī)房; 或者是買了cdn服務(wù)的中小型公司,才使用的到;
注意:
1.一旦啟動(dòng)了view,所有的zone都只能在view中定義,以外的都會(huì)失效;
2.僅在允許遞歸請(qǐng)求的客戶端所在的view中定義區(qū)域;
3.客戶端請(qǐng)求到達(dá)時(shí),是自上而下檢查每一個(gè)view所服務(wù)的客戶端列表;
實(shí)現(xiàn)智能DNS的/etc/named.conf 的整個(gè)配置文件:
[root@DNS-server named]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
# acl 配置,系統(tǒng)時(shí)從上到下匹配;匹配到之后,就去 尋找 view 對(duì)應(yīng)的 解析庫(kù)
acl beijingnet {10.0.0.0/24; };
acl shanghainet { 172.0.0.0/16;192.168.1.0/24; };
acl other { any; };
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; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
#這個(gè)是遞歸查詢,必須要開啟( DNS轉(zhuǎn)發(fā) )
recursion yes;
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
#下面就是 各個(gè)view 對(duì)應(yīng)的域名解析庫(kù)
view beijingview {
match-clients {beijingnet;};
zone "magedu.com" {
type master;
file "magedu.com.zone1";
};
include "/etc/named.rfc1912.zones";
};
view shanghaiview {
match-clients {shanghainet;};
zone "magedu.com" {
type master;
file "magedu.com.zone2";
};
include "/etc/named.rfc1912.zones";
};
view otherview {
match-clients {other;};
zone "magedu.com" {
type master;
file "magedu.com.zone3";
};
include "/etc/named.rfc1912.zones";
};
include "/etc/named.root.key";
企業(yè)真實(shí)環(huán)境 /etc/named.conf 這個(gè)配置 文件內(nèi)容是非常多的,非常復(fù)雜的;