在互聯網這個大環境中,咱們平時上網使用的都是相似於www.baidu.com的域名,這是咱們人類易讀的互聯網,可是在實際的數據傳輸中,咱們用到的都是ip地址,計算機沒法直接識別咱們經常使用的域名,所以咱們就須要一個在咱們和計算機之間作翻譯的服務,而這個服務就是DNS。DNS是基於tcp和udp協議的服務,用於咱們平常的域名解析,幫助咱們在域名和ip地址中相互轉換,DNS所用端口爲53號端口,在linux中dns服務的服務名爲named,安裝包爲bind,通常狀況下咱們能夠在linux系統中直接經過「yum -y install bind」便可安裝咱們須要的DNS服務。linux
要了解DNS服務咱們首先要知道什麼是域名瀏覽器
域名就是一串由點分隔的字符串,用來表示網絡上某一臺或一組計算機的名稱,若是說ip爲計算機的身份證,那麼域名就是計算機的名字就像www.baidu.com就是百度的網絡名字,域名的存在是爲了方便人們記憶,和管理網絡。所以域名也分爲根域名,頂級域名,二級域名,三級域名等根域名爲「.」,其實在咱們全部的網絡域名後面都是有一個隱藏的點的就像百度的完整域名爲「www.baidu.com.」,頂級域名就是com,cn,gov之類的在整串域名除「.」以外的最後的位置,二級域名就是指頂級域名之下的域名例如咱們的baidu,taobao等,在二級域名前的就是三級域名,以此類推。緩存
而咱們的域名做爲數據存儲在世界上13臺根DNS服務器上,當咱們須要查找域名時就會去這13臺服務器去訪問而後就會告訴你你詢問的域名所對應的ip服務器
DNS解析過程:網絡
客戶端先查看瀏覽器緩存和本地host文件,本地DNS解析緩存,沒有的話就交給本地域名解析服務器(由運營商提供),本地域名緩存解析服務器收到解析請求後,先看本地緩存有沒有,若是沒有直接找域名根服務器,根收到www.google.com這個請求時,會說不明白在哪裏,可是根節點服務器會返回.com給本地域名解析服務器,而後本地域名解析服務器再找.com,找到後,再找google.com,最終找到www.google.com這個主機tcp
在咱們安裝過DNS服務後咱們就能夠經過配置文件去配置咱們的DNS服務了,如下是咱們配置DNS服務的經常使用配置文件及其相關配置(因爲文件較大,在此只列出咱們經常使用的配置)google
這個文件是DNS服務的全局配置文件,包括了zone文件的配置,DNS服務的基礎配置,祕鑰配置等spa
options { listen-on port 53 { any; }; //監聽的端口和監聽的ip,在此用any表明固定ip表示全部ip directory "/var/named"; //所在zone文件路徑(所在目錄) 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"; allow-query { any; }; //容許訪問的ip,any表明全部ip ... recursion yes; //是否迭代查詢,通常只有緩存DNS服務器開啓 dnssec-enable no; //是否使用祕鑰 dnssec-validation no; //是否確認祕鑰 //緩存文件的配置 logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; //根zone文件的配置 zone "." IN { //zone表示這是個zone配置,引號中間爲配置的zone,IN爲固定格式 type hint; //type有不少種,咱們經常使用的有hint表示根,master表示主DNS服務器,slave表示從DNS服務器,在通常狀況下咱們的type爲master file "named.ca"; //指定對應的zone文件的位置 }; //這是咱們主要配置的區域,用來配置DNS服務中最重要的zone(在baidu中設置一個DNS服務器,這個DNS服務器將完成域名空間"baidu.com"下的域名解析工做,咱們稱之爲一個區域ZONE)再添加新的zone時咱們能夠仿照根zone文件,
除了上面根zone的配置咱們在指定主從服務器時還要指定從服務器對應的主服務器ip「master {ip;};」 //讀取如下文件 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
在這個目錄下named.ca文件定義了根zone的配置,裏面包含了13臺根DNS服務器的ip,named.localhost定義了本機的zone配置slaves/目錄下是咱們的從DNS服務器的zone目錄,當咱們在/ect/named.conf配置了新的zone後須要在這個目錄下建立對應的zone配置文件在建立zone文件時可參照named.localhost文件翻譯
下面是我本身定義的一個com.zone文件,也就是com的zone配置文件debug
$TTL 1D //表示下面的時間都是一天 /*下面是 SOA記錄 SOA的做用是說明一個區域(zone)解析文件的生效區域,由誰負責,以及主從同步時的參數設定 區域數據文件有版本號(序列號): serial,長度不能大於10位 刷新時間(檢查週期):refresh 重試時間(重試周期): retry 過時時間(失效時長): expire 否認應答的TTL值; */ @ IN SOA ns.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum /*下面是NS記錄和A記錄,當也有其餘的記錄,不過在此咱們不作配置 NS: 一個區域數據文件能夠有多個NS記錄; name: NS前的區域,區域名稱,可以使用@替換也可用空格代替,同@表示當前zone; value:dns服務的FQDN; 注意: 1.相鄰的資源記錄name相同時,後面的可省略; 2.任何一個value中指定的FQDN,在其域的正向解析文件中應該有A記錄; 3.同一個名字能夠經過多條記錄定義多個不一樣的值;此時DNS服務器會以輪詢方式響應; A記錄用來表示目標域所對應的ip */ NS ns.com. //在此空格表明當前zone也就是com.此條表示解析com去詢問ns.com(能夠本身定義名字,在後面引用時對應便可) ns.com. A 192.168.230.3 //ns.com(上一條定義的)對應的ip爲192.168.230.3 magedu.com. NS ns.magedu.com. alibaba.com. NS ns.alibaba.com. ns.magedu.com. A 192.168.230.4 ns.alibaba.com.A 192.168.230.6
在zone文件中能夠簡單的理解NS記錄和A記錄做爲一組時是用來告訴前來詢問的DNS服務器你所詢問的域名我不知道對應的ip,可是我知道誰知道並告訴對方下一級別要訪問的DNS服務器,當A記錄單獨出現時就是一個完整域名的ip,能夠直接返回給緩存DNS服務器,而後它再返回給客戶端
這個文件用來告訴客戶端你須要域名解析時要訪問的DNS服務器,通常指向緩存DNS服務器
當咱們想修改或添加指向的DNS服務器時直接修改或者添加「namesrver 對應DNS服務器ip」便可
# Generated by NetworkManager
search magedu.com //定義域名的搜索列表
nameserver 192.168.43.1 //定義DNS服務器的搜索列表