DNS
Domain Name System
什么是域名:
是由一串用點(diǎn)分隔的名字組成的Internet上某一臺計(jì)算機(jī)或計(jì)算機(jī)組的名稱,作用是幫助人類記憶主機(jī)耗啦,
如果都使用ip人類是無法記憶的
FQDN:(Fully Qualified Domain Name)全限定域名:同時(shí)帶有主機(jī)名和域名的名稱
由來
計(jì)算機(jī)之間的網(wǎng)絡(luò)通信是使用ip來標(biāo)記主機(jī)的
當(dāng)只有幾臺主機(jī)一起聯(lián)網(wǎng)時(shí),可以使用ip地址來進(jìn)行訪問
當(dāng)主機(jī)數(shù)量到達(dá)幾十上百時(shí),人們無法記憶眾多的ip,于是出現(xiàn)了hosts文件
windows X:\Windows\System32\drivers\etc\hosts
linux /etc/hosts
格式:
127.0.0.1 localhost
::1 localhost
hosts文件是在一個(gè)文件中記錄主機(jī)域名和對應(yīng)ip條目來實(shí)現(xiàn)域名到ip的轉(zhuǎn)換
但hosts文件是每個(gè)主機(jī)各自的維護(hù)的柴信,無法做到實(shí)時(shí)更新茉唉、更改黄锤,當(dāng)網(wǎng)絡(luò)大爆發(fā)時(shí)较雕,
一天接入幾百臺上千臺主機(jī)時(shí)碉哑,根本無法這項(xiàng)工作
當(dāng)網(wǎng)絡(luò)大爆發(fā)時(shí),hosts已經(jīng)無法進(jìn)行維護(hù)郎笆,IANA就在互聯(lián)網(wǎng)上提供了服務(wù)器來專門解決域名到ip映射谭梗,
這就是DNS服務(wù)器
當(dāng)前互聯(lián)網(wǎng)DNS系統(tǒng):
互聯(lián)網(wǎng)上的主機(jī)不計(jì)其數(shù)忘晤,如果只靠IANA來完成域名解析的話宛蚓,維護(hù)的工作太大,而且延時(shí)問題设塔,等等
最后他們設(shè)計(jì)一個(gè)套巧妙的解決方案: 這就是一種 倒樹狀結(jié)構(gòu) 方式來實(shí)際域名解析
根 .
頂級域名(TLD) .com. .net. .org. [...]
注冊的域名 taobao.com. baidu.com. apache.org [...]
根:
全球有 13臺IPv4根 + 25臺IPv6根 這是寫死的
a.root-servers.net. 518400 IN A 198.41.0.4
這些根服務(wù)器并不負(fù)責(zé)具體域名的解析凄吏,只是記錄了tld頂級域名服務(wù)器的IP地址,
tld服務(wù)器中記錄了例如 taobao.com.這個(gè)域 的對應(yīng)dns服務(wù)器IP地址闰蛔,如此一級
一級傳遞直到找到目標(biāo)的解析結(jié)果
要注冊域名需在IANA的外派機(jī)構(gòu)或代理商處申請痕钢,付費(fèi),他會在.com等頂級域名dns服務(wù)器中添加相應(yīng)的解析條目序六。
DNS服務(wù)器的分類:
(1) 主DNS服務(wù)器
負(fù)責(zé)一個(gè)或者多個(gè)域的直接解析的dns服務(wù)器任连,可配置更改
(2) 從DNS服務(wù)器
和主一樣,負(fù)責(zé)一個(gè)或者多個(gè)域的直接解析的dns服務(wù)器例诀,
但不可直接配置更改随抠,resource recode(資源條目)都是從主DNS服務(wù)同步而來
(3) 緩存DNS服務(wù)器
不直接負(fù)責(zé)域的解析,而是接收到客戶端請求后繁涂,負(fù)責(zé)幫客戶端去遞歸回請求結(jié)果
例如: 電信的61.139.2.69
(4) 轉(zhuǎn)發(fā)DNS服務(wù)器
a) 無條件轉(zhuǎn)發(fā):轉(zhuǎn)發(fā)所有針對非本機(jī)負(fù)責(zé)解析的區(qū)域的請求拱她;
b) 條件轉(zhuǎn)發(fā):僅轉(zhuǎn)發(fā)對特定區(qū)域的請求(即轉(zhuǎn)發(fā)域);
DNS查詢的類型:
(1)遞歸查詢
一次請求扔罪,取到請求結(jié)果
(2)迭代查詢
重復(fù)請求秉沼,最后得到結(jié)果
如我們將一個(gè)www.abc.com的dns請求發(fā)給--->營運(yùn)商提供的dns服務(wù)器A,
{
營運(yùn)商的dns服務(wù)器上如果沒有緩存結(jié)果矿酵,
A--->根,根返回一個(gè)tld服務(wù)器的地址唬复,
A--->tld服務(wù)器,tld服務(wù)器返回一個(gè)abc.com.的dns服務(wù)器地址
A--->abc.com.的dns服務(wù)器全肮,abc.com.的dns服務(wù)器返回www.abc.com的地址
}
營運(yùn)商的dns服務(wù)器A將結(jié)果返回給---->我們
在這一次查詢中盅抚,
我們是遞歸(發(fā)一個(gè)請求,就返回了結(jié)果)
而營運(yùn)商的dns服務(wù)器則是迭代(多次請求倔矾,最后取得結(jié)果)
DNS的解析分類:
正向解析:
域名--->IP
反向解析:
IP---->域名
DNS的資源記錄:
name [TTL] IN TYPE record-specific-data
@: 表示當(dāng)前域
SOA: (Start of Authority)叫做起始授權(quán)機(jī)構(gòu)記錄妄均,NS用于標(biāo)識多臺域名解析服務(wù)器柱锹,SOA記錄用于在眾多NS記錄中那一臺是主服務(wù)器
@ IN SOA ns.abc.com. admin.abc.dom. ( ;DNS記錄文件所在的主機(jī)位置,管理員聯(lián)系郵箱
1 ; serial number
3600 ; refresh [1h]
600 ; retry [10m]
86400 ; expire [1d]
3600 ) ; min TTL [1h]
NS: 域名解析服務(wù)器記錄,如果要將子域名指定某個(gè)域名服務(wù)器來解析丰包,需要設(shè)置NS記錄
@ IN NS ns.abc.com.
MX: 建立電子郵箱服務(wù)禁熏,將指向郵件服務(wù)器地址,需要設(shè)置MX記錄邑彪。建立郵箱時(shí)瞧毙,一般會根據(jù)郵箱服務(wù)商提供的MX記錄填寫此記錄
@ IN MX mail.abc.com.
A: 將域名指向一個(gè)IPv4地址(例如:100.100.100.100),需要增加A記錄
ns IN A 192.168.1.253
mail IN A 192.168.1.252
www IN A 192.168.1.254
CNAME: 如果將域名指向一個(gè)域名寄症,實(shí)現(xiàn)與被指向域名相同的訪問效果宙彪,需要增加CNAME記錄。這個(gè)域名一般是主機(jī)服務(wù)商提供的一個(gè)域名
ftp IN CNAME www
AAAA: 將主機(jī)名(或域名)指向一個(gè)IPv6地址(例如:ff03:0:0:0:0:0:0:c1)有巧,需要添加AAAA記錄
DNS的實(shí)現(xiàn):
bind: Berkeley Internet Name Domain
由 isc (Internet Systems Consortium) https://www.isc.org/ 維護(hù)的開源軟件
bind的二進(jìn)制文件
named - Internet domain name server
named-checkconf - named configuration file syntax checking tool
named-checkzone - checks the syntax and integrity of a zone file.
usage: named-checkzone zonename resourcefilename
rndc - name server control utility
是一個(gè)bind的遠(yuǎn)程管理工具释漆,但一般都只是本地運(yùn)行
rndc-confgen
rndc管理工具的key生成工具
主配置文件:
/etc/named.conf
named.conf - configuration file for named
/etc/named.rfc1912.zones
所有管理域的定義文件,是named.conf的補(bǔ)充
/etc/rndc.conf
============================================================================================
named.conf說明:
acl caiwu {
192.168.1.1;
192.168.2.0/24;
};
options{
listen-on port 53 { 127.0.0.1; };服務(wù)綁定的ip和端口
directory "/var/named";工作目錄
allow-query { localhost; };為誰提供查詢
recursion yes;是否為客戶端迭歸
allow-transfer { address_match_element; ... };誰可以作為從服務(wù)器傳送域配置
dnssec-enable no; 關(guān)于dns的安全篮迎,關(guān)閉
dnssec-validation no; 關(guān)于dns的安全男图,關(guān)閉
}
named.rfc1912.zone中的域定義:
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
/var/named/named.localhost,資源記錄文件定義:
$TTL 1D ; 統(tǒng)一定義緩存時(shí)長
@ IN SOA @ rname.invalid. (
0 ; serial 版本號
1D ; refresh 從服務(wù)器刷新時(shí)長
1H ; retry 從服務(wù)器重試時(shí)長
1W ; expire 從服務(wù)器失效時(shí)長
3H ) ; minimum 否定答案緩存時(shí)長
NS @
A 127.0.0.1
AAAA ::1
serial 標(biāo)記當(dāng)前資源記錄的修改甜橱,每次修改手動(dòng)加1
refresh 從服務(wù)器間隔多長時(shí)間到主服務(wù)器同步
retry 從服務(wù)器如果同步失敗逊笆,多長時(shí)間重試
expire 從服務(wù)器一直聯(lián)系不到主服務(wù)器,多長時(shí)間關(guān)閉自己的dns服務(wù)
minimum 如果一個(gè)查詢岂傲,沒有記錄难裆,給出否定答案,對方緩存否定答案的時(shí)間(也就是說镊掖,對方這個(gè)時(shí)間內(nèi)不會再進(jìn)行這個(gè)查詢)
安裝
yum install bind -y
配置 (注意 防火墻)
a) /etc/named.conf
1. 監(jiān)聽端口乃戈、ip
listen-on port 53 { ip; }; 如果監(jiān)聽所有ip就注釋這一行
2. 工作路徑
directory "/var/named"; 資源記錄等文件的存放位置
3. 允許誰在本服務(wù)器查詢
allow-query { ; }; localhost,any,acl...
4. 如果不是本服務(wù)器負(fù)責(zé)的域,是否到根上去遞歸
recursion yes;
b) /etc/named.rfc1912.zones
1. 添加一個(gè)域
例:
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
allow-transfer { 從服務(wù)器ip; }; 如果有從服務(wù)器堰乔,這時(shí)要允許其傳送主服務(wù)器的資源記錄
;如果是從服務(wù)器
type slave;
masters [port] { ip [port]; }; 配置主服務(wù)器的ip
masterfile-format text; 說明類型為txet偏化,否則從服務(wù)器收到的文件為data,不是txt文件
notify yes; 版本更新后發(fā)通知
also-notify { 10.36.17.101;}; 從服務(wù)器ip
file "slaves/abc.com.zone.slave"; 配置從服務(wù)器的配置文件路徑镐侯,需指定到slave目錄下
; named才有寫權(quán)限侦讨,注:不用提供資源記錄文件
};
注解:
type ( master | slave | hint | forward );
master: 主服務(wù)器
slave: 從服務(wù)器
hint: 根
forward:轉(zhuǎn)發(fā)服務(wù)器
file "filename;"
定義當(dāng)前域的資源記錄文件,相對路徑(相對于配置文件中的directory)
allow-update { none; }; 允許誰動(dòng)態(tài)更新資源記錄文件苟翻,none:只能手動(dòng)更新
c) /var/named目錄下創(chuàng)建資源記錄文件
如果是rpm安裝
cp named.localhost abc.com.zone ;修改之
===========================================
$TTL 1D
@ IN SOA ns.abc.com admin.abc.com. (
1 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H );minimum
NS ns.abc.com
NS ns1.abc.com; slave
ns A 10.36.17.100
ns1 A 10.36.17.101; slave
www A 10.36.19.102
d) 修改abc.com.zone 的屬組為named; named是named用戶運(yùn)行的,沒有權(quán)限讀取這個(gè)文件
chown :named abc.com.zone
e) 重載配置文件
rndc reload
測試
dig -t A www.abc.com @ 10.36.17.100
;; ANSWER SECTION:
www.abc.com. 86400 IN A 10.36.19.102
反向解析:
和正向一樣韵卤,可參考
/etc/named.rfc1912.zone
zone "36.10.in-addr.arpa" IN {
type master;
file "10.36.in-addr.zone";
allow-update { none; };
};
/etc/named/10.36.in-addr.zone
$TTL 1D
@ IN SOA ns.abc.com. admin.abc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.abc.com.
A 10.36.17.100
100.17 PTR ns.abc.com.
101.17 PTR ns1.abc.com.
102.19 PTR www.abc.com.
注意:
格式:如解析10.36.0.0 這個(gè)區(qū)域,zone定義中要寫作:
36.10.in-addr.arpa; 反向?qū)?
DNS 工具
rndc:
是bind的遠(yuǎn)程管理工具,named服務(wù)開啟后,會開啟一個(gè)tcp/953端口胰坟,默認(rèn)只接受本地管理凤粗,也應(yīng)該本地管理
rndc [-b address] [-s server] [-p port] [-V] command
常用命令(command)
reload: 重載配置文件
status: 查看named狀態(tài)
flush: 清空所有的服務(wù)器緩存
retransfer zone: 傳送某一區(qū)域,并不檢查版本號
notify zone: 重新對某一區(qū)域傳送發(fā)通知
host:
host hostname [server]
eg.
host www.abc.com 10.36.17.101
nslookup:
交互式的工具
常用
>server 10.36.17.101 ;設(shè)置dns服務(wù)器
>set type=ns ;設(shè)置查詢類型
>www.baidu.com ;要查詢的主機(jī)
dig:
dig [q-type] host [@server] [d-opt]
q-type: is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a] (Use ixfr=version for type ixfr)
d-opt:
+noall +answer 不顯示多余的信息夺艰,只顯示answer結(jié)果
+[no]trace 跟蹤從根開始的查詢過程
-x addr 逆向查詢(將地址映射到名稱)
dig -x 10.36.19.102 @10.36.17.100
dig ns baidu.com @10.36.17.101 +noall +answer
編譯安裝:
準(zhǔn)備用戶
/usr/sbin/groupadd -g 25 -r named
/usr/sbin/useradd -u 25 -r -N -M -g named -s /bin/false -d /var/named -c Named named
安裝依賴包,下載紧索,安裝
yum install openssl-devel libcap-devel
wget https://downloads.isc.org/isc/bind9/9.14.2/bind-9.14.2.tar.gz
tar -xf bind-9.14.2.tar.gz
./configure --prefix=PREFIX --sysconfdir=DIR --localstatedir=DIR
./configure --prefix=/usr/local/bind-9.14.2 --sysconfdir=/etc/named --localstatedir=/var
make && make install
配置
cd /usr/local/
ln -s bind-9.14.2/ ./named
vim /etc/profile.d/named.sh
export PATH=/usr/local/named/sbin:/usr/local/named/bin:$PATH
. /etc/profile.d/named.sh
cd /etc/named/
rndc-confgen > rndc.conf
vim named.conf
:r! cat rndc.conf
刪除rndc部分咖气,去除named部分的注釋
再添加
options{
listen-on port 53 { 10.36.17.101; };
directory "/var/named";
allow-query { any; };
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
/var/named/named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
dig +bufsize=1200 +norec @a.root-servers.net > /var/named/named.ca
設(shè)置權(quán)限
自建的文件都改
屬組named
權(quán)限640
*.key要為644
managed-keys.*文件要使用 named:named
chmod 640 /etc/named/* /var/named/*
chmod 644 /etc/named/*.key /var/named/*.key
chown :named /etc/named/* /var/named/*
啟動(dòng)服務(wù)(注意防火墻)
named -4u named
-4: 只使用ipv4
-u: 使用的用戶
啟動(dòng)后月而,就可使用rndc來控制named
相關(guān):
Administrator Reference Manual
ftp://ftp.isc.org/isc/bind9/9.14.2/ ;版本相關(guān)下載
ftp://ftp.isc.org/isc/bind9/9.14.2/doc/arm/ ;管理員參考手冊