一、DNS相關介紹
DNS(Domain Name System)域名系統協議,作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用挨個記住IP地址。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議號是udp53。DNS服務器的作用就是就好比通訊錄一樣,為各種網絡程序找到對應目標主機的IP地址或對應的主機域名。每個IP地址都可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數點隔開。有了主機名,就不要死記硬背每臺IP設備的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協議所要完成的功能。
主機名到IP地址的映射有兩種方式:
1、靜態映射,每臺設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射表,而且只供本設備使用;
2、動態映射,建立一套域名解析系統(DNS),只在專門的DNS服務器上配置主機到IP地址的映射。
在解析域名時,可以首先采用靜態域名解析的方法,如果靜態域名解析不成功,再采用動態域名解析的方法。可以將一些常用的域名放入靜態域名解析表中,這樣可以大大提高域名解析效率。正向解析:根據主機名稱(域名)查找對應的IP地址(實際應用中最多的),反向解析:根據IP地址查找對應的主機域名(不常用,一般用于搭建郵件服務器時)。
根據服務器與所提供域名解析記錄的關系,將DNS服務器分為不同的角色:
1、緩存域名服務器,也稱為高速緩存服務器,通過向其他域名服務器查詢獲得域名->IP地址記錄,將域名查詢結果緩存到本地,提高重復查詢時的速度
2、主域名服務器,特定DNS區域的官方服務器,具有唯一性,負責維護該區域內所有域名->IP地址的映射記錄
3、從域名服務器(通俗一點就是用于備份DNS服務器的),也稱為輔助域名服務器其維護的域名->IP地址記錄,來源于主域名服務器搭建DNS服務,應用的軟件為:BIND(Berkeley Internet Name Daemon)
二、搭建過程
1. 安裝必要軟件包
[root@SZH1 ~]# yum -y install bind bind-chroot bind-util bind-libs
解釋:
bind 提供了域名服務的主要程序及相關文件
bind-utils 提供了對DNS服務器的測試工具程序(如nslookup、dig等)
bind-chroot 為bind提供一個偽裝的根目錄以增強安全性(將“/var/named/chroot/”文件夾作為BIND的根目錄)
2. 修改dns配置文件
修改前先備份
[root@SZH1 ~]# cp -p /etc/named.conf /etc/named.conf.bak // 參數-p表示備份文件與源文件的屬性一致。
[root@SZH1 ~]# cat /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { 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; };
/*
– 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;
dnssec-enable yes;
dnssec-validation yes;
# dnssec-lookaside auto;
/* 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”;
};
zone “szh.com” IN {
type master;
file “szh.com_zone”;
allow-update { none; };
};
zone “110.168.192.in-addr.arpa” IN {
type master;
file “192.168.110.zone”;
allow-update { none; };
};include “/etc/named.rfc1912.zones”;
這兩個zone我在配置文件里直接上的,我看很多人說要在/etc/named.rfc1912.zones文件中添加,但因為配置文件中存在最后一行,所以同意生效。
保存退出后輸入named-checkconf // 檢查named.conf是否有語法問題。
3. 查看named進程運行是否正常
[root@SZH1 ~]# systemctl start named // 開啟named進程
[root@SZH1 ~]# ps -eaf|grep named // 檢查進程
[root@SZH1 ~]# netstat -nult|grep :53 // 檢查監聽端口
4. 添加正向解析
[root@SZH1 named]# cat szh.com_zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.110.230
AAAA ::1
ns A 192.168.110.230
vcenter A 192.168.110.231
[root@SZH1 named]# chown :named /var/named/szh.com_zone //授權 named 用戶
[root@SZH1 named]# named-checkzone “szh.com” “/var/named/szh.com_zone” //檢查區域文件是否正確
5. 添加反向解析
[root@SZH1 named]# cat 192.168.110.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.110.230
AAAA ::1
230 PTR ns.szh.com.
231 PTR vcenter.szh.com.
[root@SZH1 named]# chown :named /var/named/192.168.110.zone //授權 named 用戶
[root@SZH1 named]# named-checkzone “110.168.192.in-addr.arpa” “/var/named/192.168.110.zone ” //檢查區域文件是否正確
6. 重啟服務,檢查dns是否生效
[root@SZH1 named]# systemctl restart named
[root@SZH1 named]# nslookup
> vcenter.szh.com
Server: 192.168.110.230
Address: 192.168.110.230#53
Name: vcenter.szh.com
Address: 192.168.110.231
——————dns配置成功——————
更多CentOS相關信息見CentOS 專題頁面 http://www.0106606.com/topicnews.aspx?tid=14