CentOS下簡單的DNS配置


一.本文環境

  1.三台虛擬機。一台DNS服務器,一台web服務器,一台客戶端

  2.DNS服務器軟件:bind,powerdns,unbound,本文使用bind

  3.BIND相關程序包:yum list all bind*

    bind:服務器

    bind-libs:相關庫

    bind-utils:客戶端

   bind 程序名 named

二.DNS結構及介紹

  1.DNS介紹

  目前在網絡中的設備之間進行通信,是利用和依賴於IP地址實現的。但IP地址是難以記憶。於是一種有文字類型的記錄方式由此而來,但是文字記錄的方式可以利於人類記憶,可是計算機並不是理解這樣的名稱,於是我們可以利用一種名字解析服務將名稱解析成IP地址,進行網絡中的通訊,這種解析的方式之一就是DNS解析.(早期有其他方式的解析,目前大多都是DNS解析)

  DNS(domain name system)是應用層協議,它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網. C/S,53/udp, 53/tcp BIND:BekerleyInternat Name Domain,由ISC (www.isc.org)提供的DNS軟件實現.

 

  2.DNS,域名結構

  DNS域名是一個分布式工作方式,並且這個系統是倒狀,以根域,頂級域,二級域,主機來組成。

  

 

 

 三,實現操作

  1.配置DNS服務器

    yum install -y bind   安裝dns服務軟件

    有兩個文件配置DNS /etc/named.conf  /var/named/

    其中/etc/named.conf 定義了區域,對應的端口信息,配置文件路徑等信息

1 listen-on port 53 { 127.0.0.1; }; #若為服務器將監聽的IP改為localhost 2         listen-on-v6 port 53 { ::1; }; 3         directory       "/var/named"; 4         dump-file       "/var/named/data/cache_dump.db"; 5         statistics-file "/var/named/data/named_stats.txt"; 6         memstatistics-file "/var/named/data/named_mem_stats.txt"; 7         secroots-file   "/var/named/data/named.secroots"; 8         recursing-file  "/var/named/data/named.recursing"; 9         allow-query     { localhost; };  #作為DNS服務器的話注釋掉此行或者改為any

     /var/named/是bind的資源記錄目錄,其中根域也在其中

 1 ;; ADDITIONAL SECTION:
 2 a.root-servers.net.    518400    IN    A    198.41.0.4
 3 b.root-servers.net.    518400    IN    A    199.9.14.201
 4 c.root-servers.net.    518400    IN    A    192.33.4.12
 5 d.root-servers.net.    518400    IN    A    199.7.91.13
 6 e.root-servers.net.    518400    IN    A    192.203.230.10
 7 f.root-servers.net.    518400    IN    A    192.5.5.241
 8 g.root-servers.net.    518400    IN    A    192.112.36.4
 9 h.root-servers.net.    518400    IN    A    198.97.190.53
10 i.root-servers.net.    518400    IN    A    192.36.148.17
11 j.root-servers.net.    518400    IN    A    192.58.128.30
12 k.root-servers.net.    518400    IN    A    193.0.14.129
13 l.root-servers.net.    518400    IN    A    199.7.83.42
14 m.root-servers.net.    518400    IN    A    202.12.27.33

   在/var/named/目錄中可以增加自己定義的資源記錄

    在DNS解析中有七種資源記錄,A,SOA,NS,MX,AAAA,PTR,CNAME,一般常用A,SOA,MX,NS,SNAME,AAAA是ipv6解析,PTR反向解析,與A記錄相反。

 

 

資源解析記錄的語法格式

name              [TTL]                 IN                   RR_TYPE                   VALUE

(1) TTL可從全局繼承
(2) @可用於引用當前區域的名字 (當前域是需要在另一個配置文件中定義,所有@是一個變量,而在記錄中的郵箱便不能寫@符號,要以.替代)
(3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機

現在來寫自己的資源記錄。

 1 [root@CentOS-8 named]# cat baidu.com.dns  2 $TTL 1D  3 @   IN SOA master.baidu.com. admin-mail.baidu.com. (  4             201911141803 ;序列號,不可過長否則服務無法啟動 我這寫的太長了 等會 會報錯的。  5  1D ;與從DNS服務的同步時間  6  1H ;重試時間  7  3D ;過期時間  8  1D ;否定時間  9 ) 10 @ IN A ns.baidu.com.;對NS記錄而言,任何一個ns記錄后面的服務器名字,應該需要一個對應的A記錄解析 11 master   IN A 192.168.39.8
12 ns       IN A 192.168.39.8
13 www      IN A 192.168.39.6

資源記錄寫完之后還需要寫配置文件,不然配置的資源文件怎么使用?

配置文件/etc/named.conf ,這里各文件中的配置文件,但是應寫在/etc/named.rfc1912.zones  文件中 這個里面都有官方寫好的模板,改改就好

1 zone "baidu.com" IN {
2         type master;
3         file "baidu.com.dns";
4         allow-update { none; };
5 };

使用命令檢查

1 [root@CentOS-8 ~]# named-checkconf #檢查配置文件語法
2 [root@CentOS-8 ~]# named-checkzone "baidu.com" /var/named/baidu.com.dns  #檢查解析庫的語法
3 dns_rdata_fromtext: /var/named/baidu.com.dns:2: near '201911141803': out of range  #  序列號過長
4 dns_rdata_fromtext: /var/named/baidu.com.dns:9: near 'ns.baidu.com.': bad dotted quad   #這里寫錯了  應該是NS記錄寫成了A記錄
5 zone baidu.com/IN: loading from master file /var/named/baidu.com.dns failed: out of range
6 zone baidu.com/IN: not loaded due to errors.
7 [root@CentOS-8 ~]# 

更改完了檢查如下

1 [root@CentOS-8 ~]# named-checkzone "baidu.com" /var/named/baidu.com.dns
2 zone baidu.com/IN: loaded serial 2911141803
3 OK
4 [root@CentOS-8 ~]# 

到這里我們的服務器已經配置好了。

四,配置一個頁面,一個DNS客戶端

配置頁面

[root@CentOS-6 ~]$service httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS-6 ~]$echo "<h1>www.google.com</h1>" > /var/www/html/index.html [root@CentOS-6 ~]$

配置DNS客戶

[root@centos7-lvm ~]# vim /etc/resolv.conf [root@centos7-lvm ~]# 
1 # Generated by NetworkManager 2 search localdomain 3 nameserver 192.168.39.8
4 ~                             

 

在DNS服務器上啟動DNS

客戶端結果如下:

 

 1 [root@centos7-lvm ~]# dig www.baidu.com  2 
 3 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> www.baidu.com  4 ;; global options: +cmd  5 ;; Got answer:  6 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47635
 7 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 8 
 9 ;; OPT PSEUDOSECTION: 10 ; EDNS: version: 0, flags:; udp: 4096
11 ;; QUESTION SECTION: 12 ;www.baidu.com. IN A 13 
14 ;; ANSWER SECTION: 15 www.baidu.com.        86400    IN    A    192.168.39.6
16 
17 ;; AUTHORITY SECTION: 18 baidu.com.        86400 IN NS ns.baidu.com. 19 
20 ;; ADDITIONAL SECTION: 21 ns.baidu.com.        86400    IN    A    192.168.39.8
22 
23 ;; Query time: 0 msec 24 ;; SERVER: 192.168.39.8#53(192.168.39.8) 25 ;; WHEN: Thu Nov 14 19:12:07 CST 2019
26 ;; MSG SIZE  rcvd: 91

五。總結

其實在DNS客戶端的資源記錄文件的權限應該與其他文件相同,我這里沒有改

 1 [root@CentOS-8 named]# ll  2 total 20
 3 -rw-r--r-- 1 root  root   475 Nov 14 05:03 baidu.com.dns  4 drwxrwx--- 2 named named   23 Nov 14 05:12 data  5 drwxrwx--- 2 named named   60 Nov 14 05:12 dynamic  6 -rw-r----- 1 root  named 2253 Apr  5  2018 named.ca  7 -rw-r----- 1 root  named  152 Dec 15  2009 named.empty  8 -rw-r----- 1 root  named  152 Jun 21  2007 named.localhost  9 -rw-r----- 1 root  named  168 Dec 15  2009 named.loopback 10 drwxrwx--- 2 named named    6 Jul 25 11:39 slaves 11 [root@CentOS-8 named]# 

SOA記錄必須定義要在前面先定義

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM