本節索引:
一、DNS服務相關介紹
二、實驗:搭建正向主DNS服務器
三、實驗:泛域名解析,提高訪問感受
四、實驗:利用DNS實現web服務器負載均衡
五、實驗:實現反向解析
六、實驗:搭建正向從DNS服務器
七、實驗:實現子域
八、實驗:forward轉發
九、實驗:實現智能DNS
一、DNS服務相關介紹
DNS:Domain Name Service 應用層協議
C/S,53/udp, 53/tcp
BIND:Bekerley Internat Name Domain
ISC (www.isc.org)
名字解析服務:將全稱域名解析為IP地址
FQDN:Fully Qualified Domain Name,完整主機名
www.magedu.com???????? 完整主機名(FQDN)
www?? ????????? 主機名,或者別名
magedu.com ???????? domain域名
分散式解決方案:小環境,特定應用內部集群
/etc/hosts
集中式解決方案:NIS,適合中小型環境
分布式(既分散又集中)解決方案:DNS
本地名稱解析配置文件:hosts
Linux:??? /etc/hosts
Windows:%WINDIR%/system32/drivers/etc/hosts
???????? 122.10.117.2? www.magedu.com
???????? 93.46.8.89??? www.google.com
權威DNS服務器:查詢FQDN所在的DNS服務器
13組服務器,13個IP地址存放根域
IPv6,25組跟服務器
DNS查詢類型:
?? 遞歸查詢:負責到底
? 迭代查詢:不負責到底
解析類型:
正向解析:FQDN –> IP
反向解析:IP –> FQDN
注意:正反向解析是兩個不同的名稱空間是兩棵不同的解析樹
DNS服務器的類型:
主DNS服務器
從DNS服務器
緩存DNS服務器(轉發器)
主DNS服務器:管理和維護所負責解析的域內解析庫的服務器
從DNS服務器:從主服務器或從服務器“復制”(區域傳輸)解析庫副本
序列號:解析庫版本號,主服務器解析庫變化時,其序列遞增 刷新時間間隔:
服務器從主服務器請求同步解析的時間間隔
重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
過期時長:從服務器聯系不到主服務器時,多久后停止服務
“通知”機制:主服務器解析庫發生變化時,會主動通知從服務器
bind
相關文件:
/etc/named.conf????????????????????????????? 主配置文件
/usr/sbin/named?????????????????????????????? 主程序
/usr/lib/systemd/system/named.service????? 服務
/var/named?????????????????????????????? 存放數據庫
/var/named/named.localhost??????????????? 區域解析庫參考文件
cat /var/named/named.localhost??
$TTL 1D ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?一天作為緩存期
@?????? IN SOA? @ rname.invalid. (?????????????????????????????????? 第一個@表示當前域名,第二個@表示主DNS服務器,rname.invalid表示管理員郵箱
0?????? ; serial ? ? ? ? ? ?版本序列號,序列號越大表示數據越新,需手動更改
1D????? ; refresh??????? 刷新時間
1H????? ; retry??????????? 重試時間
1W????? ; expire??????? 過期時間
3H )??? ; minimum????? 否定答案的TTL值
NS????? @
A?????? 127.0.0.1
AAAA??? ::1
資源記錄:
區域解析庫:由眾多RR組成:
資源記錄:Resource Record, RR
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,
必須位于解析庫的第一條記錄,定義了誰是主DNS服務器,管理員郵箱及刷新時間(從屬DNS服務器拉取
主DNS服務器數據的時間)、重試時間、過期時間及否定答案的TTL值
A:internet Address,作用,FQDN –> IP
AAAA:FQDN –> IPv6
PTR:PoinTeR,IP –> FQDN
NS:Name Server,專用于標明當前區域的DNS服務器
CNAME:Canonical Name,別名記錄,如www
MX:Mail eXchanger,郵件交換器
資源記錄定義的格式:
語法:name [TTL] IN rr_type value
注意:
(1) TTL可從全局繼承
(2) @可用于引用當前區域的名字
(3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢
方式響應
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值
進行定義;此僅表示通過多個不同的名字可以找到同一個主機
二、實驗:搭建正向主DNS服務器
前期準備:
主DNS服務器:192.168.30.10
web服務器:192.168.30.16
客戶端:192.168.30.11
實驗預期:
客戶端訪問通過主DNS解析訪問http服務器搭建的網頁
具體步驟:
1主DNS服務器安裝bind包:
yum install bind
2 備份主配置文件,注意保留屬性
cp /etc/named.conf? /etc/named.conf.bak? -a
3.開啟named服務
Systemctl? start? named
Systemctl? enable? named
4.修改主配置文件:
vim /etc/named.conf
options {
???????? listen-on port 53 { localhost; };
???????? allow-query???? { local;any; };
};
5.修改區域配置文件:
6創建區域解析數據庫文件
可參照named.localhost文件進行創建
cp named.localhost? magedu.com.zone -a
vim magedu.com.zone
$TTL 1D
@????? ?IN SOA? dns1.magedu.com. admin.magedu.com. (
??????????????????????????????????????? 0?????? ; serial
??????????????????????????????????????? 1D????? ; refresh
??????????????????????????????????????? 1H????? ; retry
?????????????????????????????????????? ?1W????? ; expire
??????????????????????????????????????? 3H )??? ; minimum
magedu.com.??????? NS????? dns1
dns1 ? ? ? ? ? ? ? ? ? ? ? ? A??????? 192.168.30.10
www???????????????? ?? ????A??????? 192.168.30.16
7重新加載named服務:
Systemctl reload named?? 或?? rndc? reload
8如啟動失敗,可使用語法檢查
named-checkconf????????? 主配置文件語法檢查
named-checkzone “magedu.com” /var/named/magedu.com.zone?????? 解析庫文件語法檢查
9切換至客戶端進行測試:
dig www.magedu.com ?@192.168.30.10??????????? 指定從192.168.30.10解析www.magedu.com
10切換到web服務器:
echo welcome to Magedu > /var/www/html/html.index
service httpd start
11.切換至客戶端:
添加DNS到網卡配置文件
重啟網絡服務
Service httpd restart
12.測試訪問www.magedu.com
我們看到,客戶端已經由主DNS服務器解析成功訪問到我們自己搭建的http網頁!
三、實驗:泛域名解析,提高訪問感受
前期準備:
實驗環境承接上
實驗預期:
客戶端訪問網頁時,即使將主機名輸出,也可正常訪問
具體步驟:
1修改主DNS服務器端區域數據庫解析文件:
增加此行:泛域名解析,如wwwww.magedu.com也可正常訪問
*? A? 192.168.30.7
2客戶端測試:
我們看到即時主機名輸出,也可正常訪問到www.magedu.com的http頁面
四、實驗:利用DNS實現web服務器負載均衡
前期準備:
主DNS服務器:192.168.30.10
web服務器1:192.168.30.16
web服務器2:192.168.30.12
客戶端:192.168.30.11
實驗預期:
當客戶端訪問網頁時,由主DNS服務器隨機指向一臺web服務器
具體步驟:
1修改區域解析庫數據文件:
添加下列行:
websrv A 192.168.30.17
websrv A 192.168.30.27
www? CNAME? websrv
重新加載named服務:
rndc reload
2切換至客戶端測試:
我們看到當ping測www.magedu.com時,將隨機指向一臺web服務器
五、實驗:實現反向解析
前期準備:
DNS服務器:192.168.30.10
測試客戶端:192.168.30.11
具體步驟:
1修改DNS服務器區域配置文件,添加反向解析區域
2添加方向區域解析數據庫文件
重啟named服務
rcdn reload
3切換客戶端建測試
dig -x? IPaddr 是一個專門測試反向解析的命令
dig -x 192.168.30.16
我們看到192.168.30.16反向解析到了websrv.magedu.com
dig -x 192.168.30.17
192.168.30.16反向解析到了appsrv.wxlinux.com
dig -x 192.168.30.100
192.168.30.16反向解析到了mail.magedu.com
與DNS服務器區域解析文件對應關系相一致
六、實驗:搭建正向從DNS服務器
前期準備:
主DNS服務器:192.168.30.10
從DNS服務器:192.168.30.12
web服務器:192.168.30.16
客戶端:192.168.30.11
實驗預期:
搭建從DNS服務器,當主DNS服務器宕機時,由從DNS實現地址解析
具體步驟:
1.修改主DNS服務器主配置文件,
vim /etc/named.conf
options {
???????? listen-on port 53 { localhost; };
???????? allow-query???? { local;any; };
???????? allow-transfer? { 從DNS的IP };????????????????????????? 加此行
};
2修改主DNS服務器區域數據庫解析文件
將從DNS服務器同步進去
3修改從DNS服務器主配置文件
vim /etc/named.conf
allow-transfer { none; };???????? 加此行
4修改從DNS服務器區域配置文件
重啟named服務
rndc reload
5確認從DNS服務器slave區域文件同步成功
6模擬主DNS服務器宕機,將虛擬機網卡斷開連接
7添加從服務器地址到客戶端的DNS列表中:
8.客戶端測試
ping www.magedu.com
經過短暫的等待(dns切換時間),從DNS服務器解析地址成功!
?
七、實驗:實現子域
實驗預期:
www.bj.magedu.com
www.zz.magedu.com??????? ???? 使能正常訪問
方法一:修改主DNS區域解析文件
直接將子域指向子域web服務器:
www.bj? A?????? 192.168.30.17
www.zz? A?????? 192.168.30.27
方法二:本機獨立子域
適用場景:訪問量不大,較小規模,由同一個主DNS服務器管理
vim /etc/named.rfc1912.zones
zone “bj.magedu.com” IN {
???????? type master
???????? file “bj.magedu.com.zone”;
zone “zz.magedu.com” IN {
???????? type master
???????? file “zz.magedu.com.zone”;
cp magedu.com.zone bj.magedu.com.zone? -a
vim bj.magedu.com.zone
cp magedu.com.zone zz.magedu.com.zone? -a
vim zz.magedu.com.zone
方法三:委派給另一臺主機維護子域,實現分布式DNS管理
前期準備:
主域magedu.com: 192.168.30.10
子域bj.magedu.com: 192.168.30.16
web服務器1:www.magedu.com: 192.168.30.17
web服務器2:www.bj.magedu.com: 192.168.30.27
測試客戶端:192.168.30.11
1關閉dnssec功能
vim /etc/named.conf
dnssec-enable no;
dnssec-validation no;
2修改主域DNS區域解析文件,主域web服務器指向192.168.30.17
vim /var/named/magedu.com.zone
$TTL 1D
@?????? IN SOA? dns1.magedu.com. admin.magedu.com. (
??????????????????????????????????????? 0?????? ; serial
??????????????????????????????????????? 1D????? ; refresh
??????????????????????????????????????? 1H????? ; retry
??????????????????????????????????????? 1W????? ; expire
??????????????????????????????????????? 3H )??? ; minimum
???? NS???? ?dns1.magedu.com.
bj????????????? ?? NS????? dns2.magedu.com. ??? ##新增
dns1?????? A??????? 192.168.30.10
dns2????????????????? ?? A??? 192.168.30.17???????????????? ??????? ##新增
3切換至子域DNS服務器,添加bj.magedu.com的區域配置
vim /etc/named.rfc1912.zones
4添加子域DNS區域解析文件,將web服務器指向192.168.30.27
重啟named服務
rndc reload
5切換客戶端進行測試
dig? www.bj.magedu.com @192.168.30.10
ping www.bj.magedu.com
我們看到www.bj.magedu.com將通過主域DNS轉發至子域DNS,再經子域DNS解析指向web服務器
dig? www.magedu.com @192.168.30.10
ping www.magedu.com
而www.magedu.com還是由主域DNS負責解析,這樣就實現了主域和子域DNS簡單的分布式管理
八、實驗:forward轉發
(一)全局性轉發:
對非本機所負責解析區域的請求,全轉發給指定的服務器
注意:被轉發的服務器需要能夠為請求者做遞歸否則轉發請求不予進行
前期準備:
DNS服務器1: 192.168.30.10
DNS服務器2: 192.168.30.16
Web服務器:192.168.30.100
測試訪問端: 192.168.30.11
實驗預期:
當FQDN在DNS1服務器無法解析時,直接指向到DNS2服務器進行轉發
1在DNS2服務器上建立www.wxlinux.com的區域文件及解析數據庫文件,并將www.wxlinux.com指向web服務器:192.168.30.100
2切換到訪問端用DNS2服務器解析www.wxlinux.com,可以解析成功
dig www.wxlinux.com @192.168.30.16
3切換至DNS1服務器修改主配置文件
vim /etc/named.conf
options {
?????? forward first|only;????????? ????????????????????????? ##first優先在指向DNS服務器解析,only表示只在
???????? forwarders { 192.168.30.17; }???????????????????????? ##指向的DNS服務器解析
};
注意確定主配置文件recursion yes;并且關閉dnssec功能否則也將導致實驗失敗
重啟named服務
rndc reload
4切換至客戶端進行測試:
首先清除dns緩存記錄
rndc flush
進行ping測,解析成功(由于未搭建web服務器,所以顯示主機不可達)
ping www.wxlinux.com
指定DNS1服務器解析地址,發現DNS1直接指向了DNS2服務器進行解析
dig www.wxlinux.com @192.168.30.10
(二)特定區域轉發:
僅轉發對特定的區域的請求,比全局轉發優先級高
前期準備:
同全局轉發實驗
實驗預期:
只有在訪問wxlinux.com域時,才優先指向DNS2服務器進行解析
1在DNS1刪除剛才的全局配置,新增加區域配置文件內容如下:
只有當訪問wxlinux.com域時,才優先轉發DNS2服務器解析
vim /etc/named.rfc1912.zones
zone “wxlinux.com” IN {
???????? type forward;
???????? forward first|only;
???????? forwarders {192.168.30.16;};
清理DNS1服務器的DNS緩存
rndc flush
2切換至客戶端測試:
解析成功,只在訪問wxlinu.com優先指向DNS2服務器進行解析
dig www.wxlinux.com @192.168.30.10
九、實驗:實現智能DNS
前期準備:
DNS服務器:兩塊網卡地址分別為172.20.113.242和192.168.30.10
模擬192.168.30.0/24網段為北京地區地址段
模擬172.20.0.0/16?? 網段為上海地區地址段
實驗預期:
北京用戶訪問時返回192.168.30.1
上海用戶訪問時返回192.168.30.2
其他地區用戶訪問時防護192.168.30.3
1在主配置文件中添加ACL
2建立與ACL映射的數據庫
3建立view,一但采用viwe,必須把所有區域信息放到view語句塊中,否則將失效,為了便于管理,我們將主配置文件中此段內容剪切至/etc/named.rfc19212.zones中
vim /etc/named.conf
添加view:如圖
4創建view對應的區域數據信息
cp? /etc/named.rfc1912.zone??? /etc/named.rfc1912.zone.beijing –a
cp? /etc/named.rfc1912.zone??? /etc/named.rfc1912.zone.shanghai –a
vim /etc/named.rfc1912.zone.beijing
zone “wxlinux.com” IN {
???????? type master
???????? file “wxlinux.com.zone.beijing”;
vim /etc/named.rfc1912.zone.shanghai
zone “wxlinux.com” IN {
???????? type master
???????? file “wxlinux.com.zone.beijing”;
最終生成三個獨立的區域數據信息
重啟named服務
rndc reload
5切換到客戶端進行測試:
(1)192.168.30.0/24測試
dig www.wxlinux.com @192.168.30.10
當地址為192.168.30.0/24段時,web服務器指向192.168.30.1
(2)172.20.0.0/16測試
dig www.wxlinux.com @172.20.113.242
當地址為172.20.0.0/16段時,web服務器指向192.168.30.2
(3)其他網段測試
切換回DNS服務器端:
dig www.wxlinux.com @127.0.0.1
由于127.0.0.1不屬于上述兩個網段之一,所以DNS服務器將web服務器地址指向192.168.0.3
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100091