(1).實驗環境
DNS服務器:youxi1 192.168.5.101
測試主機:youxi2 192.168.5.102
(2).DNS資源記錄說明
SOA資源記錄(起始授權資源記錄):全稱Start of Authority Record,定義了域的全局參數,進行整個域的管理設置。每個域在域開頭處都包含了一個SOA資源記錄,一個域文件只允許存在唯一的SOA記錄。
NS資源記錄(域名服務器資源記錄):用來指定該域名由哪個DNS服務器來進行解析。每個域在域根處至少包含一個NS記錄。
A資源記錄(地址資源記錄):用來把FQDN(全限定域名)映射到IP地址,正是因為有此記錄DNS服務器才能解析域名對應的IP地址。
PTR資源記錄(指針資源記錄):用來把IP地址映射到FQDN,用於反向查詢。
CNAME資源記錄(別名資源記錄):創建特定的FQDN的別名,隱藏用戶網絡的實現細節,使客戶機無法知道真正的域名。
MX資源記錄(郵件交換資源記錄):為DNS域名指定郵件交換服務器。
郵件交換服務器是為DNS域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者。轉發郵件指把郵件發送到最終目的的服務器,用簡單郵件傳輸協議SMTP把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件經過一定時間的排隊
(3).實驗
1)安裝DNS
[root@youxi1 ~]# yum -y install bind bind-chroot bind-utils
BIND 全稱為Berkeley Internet Name Domain(伯克利因特網名稱域系統),BIND 主要有三個版本:BIND4、BIND8、BIND9。BIND8版本融合了許多提高效率、穩定性和安全性的技術,而BIND9 增加了一些超前的理念,例如IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等。
bind包里包含了DNS服務的主程序包。
bind-chroot包是bind的一個功能包,使bind可以在chroot模式下運行。也就是說bind運行的主目錄並不是系統的根目錄,只是系統的一個子目錄而已。這是為了提高安全性,使得訪問的范圍僅限於這個子目錄。
bind-utils包是客戶端工具,系統默認安裝,用於搜索域名指令。
2)DNS相關配置文件
/etc/named.conf 是BIND的核心配置文件,它包含了BIND 的基本配置,但其並不包括區域數據。
/var/named/目錄是DNS數據庫文件存放目錄,每一個域文件都放在這里。
注意:DNS服務器名是named,端口53用於客戶端查詢,端口953用於DNS主從同步
[root@youxi1 ~]# systemctl start named [root@youxi1 ~]# systemctl enable named [root@youxi1 ~]# netstat -antup | grep named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2347/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2347/named tcp6 0 0 ::1:53 :::* LISTEN 2347/named tcp6 0 0 ::1:953 :::* LISTEN 2347/named udp 0 0 127.0.0.1:53 0.0.0.0:* 2347/named udp6 0 0 ::1:53 :::* 2347/named
3)配置文件參數
在/etc/named.conf中大致分為針對全局生效,存放常規設置的options部分;以及針對某個區域,由各個區域設置的zone部分。另外還有logging(日志選項)和acl(訪問控制列表)可選。
去除注釋后的/etc/named.conf配置文件如下:
[root@youxi1 ~]# cat /etc/named.conf
options {
//指定BIND通過哪些網絡接口和哪個端口來接收客戶端請求。如果省略端口號,則使用默認端口53。127.0.0.1允許接收來自本地的請求。如果完全省略此項或網絡接口是any,則默認使用所有端口。
listen-on port 53 { 127.0.0.1; };
//指定BIND通過哪個端口監聽IPv6客戶端請求。IPv6,服務器只接受通配符地址,any和none。
listen-on-v6 port 53 { ::1; };
//BIND可以在該目錄中找到包含區域數據的文件
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";
//定義客戶端可以自此發送DNS請求的網絡。可以用地址信息(192.168.5.101/24)替換或使用any替換
allow-query { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.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;
};
};
zone "." IN {
type hint; //指定區域類型
file "named.ca"; //區域文件,需要手動創建。范例文件為named.localhost
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
type字段指定區域的類型,對於區域的管理至關重要,一共分為5種:
master:主DNS服務器,擁有區域數據文件,並對此區域提供管理數據。
slave:輔助DNS服務器,擁有主DNS服務器的區域數據文件的副本,服務器DNS服務器會從主DNS服務器同步所有區域數據。
stub:stub區域與slave區域類似,但只復制主DNS服務器上的NS記錄,而不像slave會復制所有區域數據
forward:轉發配置域
hint:根域服務器的初始化使用的參數
4)搭建內網DNS服務器
備份DNS服務器的配置文件/etc/named.conf
[root@youxi1 ~]# cp /etc/named.conf /etc/named.conf.bak
修改DNS服務器的配置文件/etc/named.conf
[root@youxi1 ~]# cat /etc/named.conf
options {
listen-on port 53 { any; }; //修改為
listen-on-v6 port 53 { any; }; //修改為any
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;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto; //添加此行
bindkeys-file "/etc/named.iscdlv.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;
};
};
zone "test.cn" IN { //區域名稱改為test.cn
type master; //區域類型為主DNS服務器
file "test.cn.zone"; //區域文件,需要手動創建。范例文件為named.localhost
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
創建區域文件,修改權限,並進行修改
//-a選項保留源文件的權限
[root@youxi1 ~]# cp -a /var/named/named.localhost /var/named/test.cn.zone
-rw-r----- 1 root named 257 5月 20 17:13 /var/named/test.cn.zone
[root@youxi1 ~]# vim /var/named/test.cn.zone
$TTL 1D //設置有效地址解析記錄的默認緩存時間,默認為1天
//test.cn.也可以使用@,表示當前的域
//dns.test.cn.該域的主域名
//root.test.cn.管理員郵件地址
test.cn. IN SOA dns.test.cn. root.test.cn. (
//更新序列號,用於標示數據庫的變換,可以在10位以內。如果存在輔助DNS區域,建議每次更新完數據庫,手動加1
0 ; serial
//刷新時間,從域名服務器更新該地址數據庫文件的間隔時間,默認為1天
1D ; refresh
//重試延時,從域名服務器更新地址數據庫失敗后,等待多長時間,默認為1小時
1H ; retry
//到期失效時間,超過改時間人無法更新地址數據庫,那么不再嘗試,默認為1周
1W ; expire
//無效地址解析記錄默認緩存時間(該數據庫中不存在的地址),默認為3小時。
3H ) ; minimum
test.cn. NS dns.test.cn.
dns.test.cn. A 192.168.5.101
www.test.cn. A 192.168.5.101
cname.test.cn. CNAME www.test.cn.
重啟DNS服務器
[root@youxi1 ~]# systemctl restart named
到測試主機youxi2上修改DNS地址和網卡信息,然后重啟網絡服務
[root@youxi2 ~]# vim /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.5.101 [root@youxi2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" NAME="ens33" UUID="a12d9bb2-85cb-4db0-9b94-e4ed3baa6470" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.5.102" PREFIX="24" GATEWAY="192.168.5.2" DNS1="192.168.5.101"
[root@youxi2 ~]# systemctl restart network
最后測試
[root@youxi2 ~]# ping www.test.cn PING www.test.cn (192.168.5.101) 56(84) bytes of data. 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=2.73 ms 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.423 ms ^C --- www.test.cn ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.423/1.581/2.739/1.158 ms [root@youxi2 ~]# ping cname.test.cn PING www.test.cn (192.168.5.101) 56(84) bytes of data. 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=4.39 ms 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.414 ms ^C --- www.test.cn ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.414/2.405/4.396/1.991 ms [root@youxi2 ~]# ping dns.test.cn PING dns.test.cn (192.168.5.101) 56(84) bytes of data. 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=2.81 ms 64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.388 ms ^C --- dns.test.cn ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.388/1.601/2.814/1.213 ms
