文章目錄
前言:
域名解析是把域名指向網站空間IP,讓人們通過註冊的域名可以方便地訪問到網站的一種服務。IP地址是網絡上標識站點的數字地址,爲了方便記憶,採用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。
域名解析也叫域名指向、服務器設置、域名配置以及反向IP登記等等。說得簡單點就是將好記的域名解析成IP,服務由DNS服務器完成,是把域名解析到一個IP地址,然後在此IP地址的主機上將一個子目錄與域名綁定。
互聯網中的地址是數字的IP地址,域名解析的作用主要就是爲了便於記憶
一、BIND域名服務基礎
1.1 DNS系統的作用
-
正向解析:根據主機名稱(域名)查找對應的IP地址
-
反向解析:根據IP地址查找對應的主機域名
-
DNS 系統的分佈式數據結構:
以www.sina.com.cn爲例分析:
1.2 DNS系統類型
實際上,每一臺DNS服務器都只負責管理一個有限範圍(一個或幾個域)內的主機域名和IP地址的對應關係,這些特定的DNS域或IP地址段稱爲“zone”(區域)
根據地址解析的方向不同,DNS區域相應地分爲正向區域(包含域名到IP地址的解析記錄,)和反向區域(包含IP地址到域名的解析記錄)
根據所管理的區域數據的來源不同,DNS系統可分爲不同類型,常見類型有:
- 緩存域名服務器
也稱爲告訴緩存服務器
通過向其他域名服務器查詢獲得域名->IP地址記錄
將域名查詢結果緩存到本地,提高重複查詢時的速度
- 主域名服務器
維護某一個特定DNS區域的地址數據庫,對其中的解析記錄具有自主控制權,是指定區域中唯一存在的權威服務器,官方服務器。
構建主域名服務器時,需要自行建立所負責區域的地址數據文件
- 從域名服務器
與主域名服務器提供完全相同的DNS解析服務,通常用於DNS服務器的熱備份。
構建從域名服務器時,需要指定主域名服務器的位置,以便服務器能自動同步區域的地址數據庫
二、使用BIND構建域名服務器
2.1 BIND安裝文件
BIND不是唯一能夠提供域名服務的DNS服務程序,但它是應用最廣泛的,BIND可以允許在大多數Linux/UNIX主機中
- BIND
伯克利internet域名服務
官方站點: https://www.isc/org/
可以直接使用yum安裝
-
相關軟件包
-
BIND服務器程序
主要執行程序:/usr/sbin/named
默認監聽端口:53
主配置文件: /etc/named.conf
保存DNS解析記錄的數據文件位於:/var/named/
2.2 主配置文件
- BIND配置文件
[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
- 全局配置部分
設置DNS服務器的全局參數
包括監聽地址/端口,數據文件的默認位置等
使用options{…};的配置段
[root@localhost ~]# vi /etc/named.conf
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; };
......省略部分內容
- 區域配置文件
設置本服務器提供域名解析的特定DNS區域
包括域名、服務器角色、數據文件名等
使用zone “區域名” IN{…};的配置段
- 區域數據配置文件
全局TTL配置項及SOA記錄
$TTL(Time To live,生存時間)記錄
SOA (Start Of Authority,授權信息開始)記錄
分號 “;” 開始的部分表示註釋信息
[root@localhost ~]# vi /var/named/named.localhost
$TTL 2D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
域名解析記錄
NS 域名服務器記錄
MX 郵件交換記錄
A 地址記錄,只用在正向解析區域中
CNAME 別名記錄
例如:
@ IN NS ns1.bdqn.com
IN MX 10 mail.bdqn.com
ns1 IN A 58.119.74.203
www IN A 173.16.16.1
mail IN A 173.16.16.4
ftp IN CNAME WWW
反向區域數據文件
在反向區域數據文件中,不會用到A地址記錄,而是使用PTR指針(print)記錄
例如,對於反向區域10.168.192.in-addr.arpa,添加的反向解析記錄可以是以下形式
1 IN PTR www.eee.com. "表示IP地址爲192.168.192.1的主機域名是www.eee.com"
2 IN PTR mail.eee.com. "表示IP地址爲192.168.192.5的主機域名是mail.eee.com"
- 使用netstat命令查看服務狀態
[root@localhost ~]# netstat -ntap | grep named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 44453/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 44453/named
tcp6 0 0 ::1:53 :::* LISTEN 44453/named
tcp6 0 0 ::1:953 :::* LISTEN 44453/named
[root@localhost ~]# netstat -nuap | grep named
udp 0 0 127.0.0.1:53 0.0.0.0:* 44453/named
udp6 0 0 ::1:53 :::* 44453/named
2.2 區域數據配置文件的特殊應用
- 基於域名解析的負載均衡
同一域名對應到多個IP地址
- 泛域名解析
找不到精確對應的A記錄時,可以使用“*” 進行匹配
www IN A 192.168.100.100 "輪流負載均衡"
www IN A 192.168.100.101
www IN A 192.168.100.102
* IN A 192.168.100.100 "泛域名解析"
2.2.1對配置文件進行語法檢查
named-checkconf 工具
named-checkconf -z [主配置文件]
[root@localhost ~]# named-checkzone kgc.com /var/named/kgc.com.zone
zone kgc.com/IN: kgc.com/MX 'mail.kog.com' (out of zone) is a CNAME 'mail.kog.com.netsolmail.net' (illegal)
zone kgc.com/IN: loaded serial 0
OK
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
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: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
三、使用BIND構建域名服務器(實驗)
環境:開啓兩臺虛擬機,將centos7-1與centos7-2模擬爲主、從DNS服務器,使用yum 安裝“bind”軟件包。
centos7-1 IP地址爲:192.168.181.130
centos7-2 IP地址爲:192.168.181.133
- 修改全局配置文件
修改兩臺服務器的全局配置文件,修改內容如下:
[root@localhost ~]# vi /etc/named.conf
options {
listen-on port 53 { any; }; “修改爲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; }; “修改爲any”
- 修改區域配置文件
主服務器(centos7-1):
centos7-1(主服務器):
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "ceshi.com" IN { “設置主服務器域名”
type master; “類型,主域名服務器”
file "ceshi.com.zone"; “主服務器區域數據文件名”
allow-transfer { 192.168.181.133; }; “設置從域名服務器”
};
...............省略部分內容
從服務器(centos7-2)
centos7-2(從服務器):
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "ceshi.com" IN { “設置從服務器域名”
type slave; “類型,從域名服務器”
file "slaves/ceshi.com.zone"; “從服務器區域數據文件名”
masters { 192.168.181.130; }; “設置主域名服務器”
};
...........省略部分內容
- 修改區域數據配置文件
進入區域數據配置文件目錄,複製named.localhost模板,複製文件名爲ceshi.com.zone。
[root@localhost named]# cp -p named.localhost ceshi.com.zone
[root@localhost named]# ls
ceshi.com.zone dynamic named.empty named.loopback
data named.ca named.localhost slaves
複製成功後我們可以在當前目錄中看到“slaves” 這就是從服務器的區域數據配置文件。
只修改主服務器,從服務器會自動同步主服務器,現在編輯主服務器數據配置文件
[root@localhost opt]# vi /var/named/named.localhost
$TTL 1D
@ IN SOA ceshi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ceshi.com.
A 192.168.181.130 (本地DNS服務器地址)
IN MX 10 mail.ceshi.com. (郵箱地址)
www IN A 192.168.181.99 (解析www.ceshi.com時的IP地址)
ftp IN A 192.168.181.88 (解析ftp.ceshi.com時的IP地址)
smtp IN CNAME www (解析smtp.ceshi.com時導向www.ceshi.com的IP地址)
* IN A 8.8.8.8 (泛域名解析時的地址)
其中 :
D :代表天
H :代表時
W:代表周
M:代表分
- 關閉主、從服務器的防火牆和增強性安全功能
[root@localhost named]# systemctl stop firewalld.service
[root@localhost named]# setenforece 0
- 開啓一臺win10虛擬機用於測試
第一步:關閉win10防護牆
第二步:更改win10網卡DNS服務器的地址:
第三步:cmd進入命令提示符界面,使用nslookup驗證:
總結:
在配置DNS服務器的時候,要注意區域配置文件與區域數據配置文件中的標點符號, 少或者多一個都有可能導致bind服務無法開啓。
我們的實驗暫時都是在步設計防火牆的過程中進行,所以需要關閉防火牆與增強性安全功能,後期將介紹如何配置防火牆,允許指定主機向內訪問DNS服務器主機的流程。