互聯網訪問絕大(dà)多數都是基于域名的訪問,互聯網訪問的基礎是基于IP來實現的,因此,需要有一(yī)種将域名解析成IP的機制,讓用戶在利用域名訪問時,自動将域名轉換成爲對應的IP,這就是DNS的功能。
DNS的基礎概念
DNS:Domain Name Service,基于C/S模式的域名解析服務,應用層協議;監聽(tīng)在53/udp,53/tcp端口;TCP用來區域傳送; UDP用來解析。
區域(zone)和域(domain)
區域是物(wù)理概念,域是邏輯概念。
比如:sfn.cn.這個域
FQDN–>IP:
正向解析庫和正向解析的功能,就是一(yī)個正向解析區域。
IP–>FQDN:
反向解析庫和反向解析的功能,就是一(yī)個反向解析區域。
一(yī)般而言,一(yī)個域分(fēn)爲正向解析區域和反向解析區域,但是單純的域卻不一(yī)定比區域大(dà),因爲父域的區域,可能就比子域的域要大(dà)。
區域數據庫文件
主要由資(zī)源記錄(RR,resource record)組成。
常見資(zī)源記錄類型:SOA、NS、MX、A、AAAA、PTR、CNAME。
SOA:start of authority,起始授權記錄,一(yī)個區域解析庫有且隻能有一(yī)個SOA記錄,且必須放(fàng)在所有資(zī)源記錄的第一(yī)條。
NS:name service,域名服務記錄,一(yī)個區域解析庫可以有多個NS記錄,一(yī)個NS記錄表示一(yī)台DNS服務器,其中(zhōng)一(yī)個爲主的,其餘的爲輔的。
MX:mail exchanger,郵件交換器,用于标明域内郵件服務器的地址的記錄,MX記錄可以有多個,其MX記錄有優先級的概念,優先級 0-99,數字越小(xiǎo),優先級越高。
A:address,地址記錄,也就是從FQDN–>IPv4
AAAA:address,地址記錄,從FQDN–>IPv6
PTR:pointer,主要用于實現IP–>FQDN
CNAME:别名記錄。
資(zī)源記錄的定義格式
語法:NAME [TTL] IN RR_TYPE VALUE
SOA記錄:
NAME:當前區域的名字,例如:sfn.cn. 或者如果是反向區域,則 1.168.192.in-addr.arpa.
VALUE:有多部分(fēn)組成
<1>當前區域的區域名稱(也可以使用主DNS服務器名稱);
<2>當前區域的管理員(yuán)的郵箱地址,但地址中(zhōng)不能使用@符号,一(yī)般用點号.來替代;
<3>主從服務的協調屬性的定義以及否定答案的緩存時長,整個内容要用()括号括起來,每行内容之後可以用;分(fēn)号表示後面的都是注釋信息。
完整的SOA記錄定義示例:
sfn.cn. 86400 IN SOA sfn.cn. admin.sfn.cn (
2016091801 //代表序列号,不能超過10位
2H //代表從服務器向主服務器同步數據的刷新時間間隔,此處表示2小(xiǎo)時
10M //表示聯系不上主服務器時,從服務器再次聯系主服務器時的間隔時間,10分(fēn)鍾
1W //表示過期時間,也就是服務器始終聯系不上主服務器時的最長等待時間,也就是此時間一(yī)過,就判定主服務器故障,然後從服務器也停止服務,1周
1D //表示否定答案的緩存時長,1天
)
NS記錄:
可有多個NS記錄,一(yī)個NS記錄對應一(yī)個DNS服務器,每個NS記錄應該有一(yī)個對應的A記錄。
NAME:當前區域的區域名稱
VALUE:當前區域的某DNS服務器的名字,例如ns1.sfn.cn
例如:
sfn.cn. 86400 IN NS ns1.sfn.cn.
sfn.cn. 86400 IN NS ns2.sfn.cn.
MX記錄:
MX記錄可以有多個,一(yī)個MX記錄對應一(yī)個郵件服務器,每個記錄的VALUE之前應該有一(yī)個數字,用于表示其優先級,數字越小(xiǎo),優先級越高。每個MX記錄應該有一(yī)個對應的A記錄。
NAME:當前區域的區域名稱
VALUE:當前區域某郵件服務器的主機名
例如:
sfn.cn. IN MX 5 mail1.sfn.cn.
sfn.cn. IN MX 20 mail2.sfn.cn.
A記錄:
FQDN–>IPv4
NAME:某FQDN,如:web.sfn.cn.
VALUE:某IPv4地址
例如:
web.sfn.cn. IN A 1.1.1.1
web.sfn.cn. IN A 1.1.1.2
bbs.sfn.cn. IN A 1.1.1.2
一(yī)個主機名額可以有多個IP,一(yī)個IP也可以有多個主機名
*.sfn.cn. IN A 10.1.32.1
表示将前面沒有單獨定義的都解析到10.1.32.1
sfn.cn. IN A 10.1.32.1
表示當用戶訪問域名前不帶任何字符時,也即是直接訪問sfn.cn.時解析到的地址是10.1.32.1
$GENERATE 1-254 server$ IN A 1.1.1.$
表示将server1.sfn.cn. 解析的地址爲1.1.1.1
server2.sfn.cn. 解析的地址爲1.1.1.2
server3.sfn.cn. 解析爲1.1.1.3
….
server254.sfn.cn. 解析爲1.1.1.254
同理:
$GENERATE 5-20 test$ IN A 1.1.1.2$
表示将test5.sfn.cn. 解析的地址爲1.1.1.25
test6.sfn.cn. 解析的地址爲1.1.1.26
test7.sfn.cn. 解析爲1.1.1.27
….
test20.sfn.cn. 解析爲1.1.1.220
AAAA記錄:
FQDN–>IPv6地址,定義方式與A記錄類似
PTR記錄:
反向解析記錄
NAME:IP地址,有特定格式,IP反過來寫,而且要加特定後綴,如:192.168.1.2的記錄應該寫成2.1.168.192.in-addr.arpa。
VALUE:爲FQDN
例如:
2.1.168.192.in-addr.arpa. IN PTR bbs.sfn.cn.
CNAME記錄:
别名記錄
FQDN格式的别名;
VALUE:FQDN格式的正式名稱
例如:
web.sfn.cn. IN CNAME www.sfn.cn.
表示web.sfn.cn.是www.sfn.cn.的别名
注意:
<1>TTL值可以從全局繼承,不用每個記錄都單獨定義
<2>@可以用來表示當前的區域的名字
<3>相鄰的兩條記錄,其NAME相同時,後面那條記錄的NAME可以省略
<4>任何MX、NS等類型的記錄的value爲一(yī)個FQDN,此FQDN應該有一(yī)個A記錄