文章目錄
1.關於dns的名詞解釋
- dns:domain name service(域名解析服務)
- 關於客戶端:
/etc/resolv.conf
dns指向文件host www.baidu.com
地址解析命令dig www.baidu.com
地址詳細解析信息命令A記錄
:ip地址叫做域名的Address記錄SOA
: 授權起始主機- dns頂級:
. 13
- 次級:
.com .net .edu .org ....
- baidu.com(次級以下)
- 關於服務端
bind
安裝包named
服務名稱/etc/named.conf
主配置文件/var/named
數據目錄- 端口 :53
- 關於報錯信息:
no servers could be reached
服務無法訪問(服務開啓?火牆?網絡?端口?)- 服務啓動失敗 :配置文件寫錯 journalctl -xe查詢錯誤
- dig 查詢狀態
NOERROR ##表示查詢成功
REFUSED ##服務拒絕訪問
SERVFAIL ##查詢記錄失敗,(dns服務器無法到達上級,拒絕緩存)
NXDOMAIN ##此域名A記錄在dns中不存在(無法查詢到此域名,此域名不存在)
2.dns服務的安裝與啓用
- 安裝
dnf install bind.x86_64 -y
- 啓用
systemctl enable --now named##開啓服務
firewall-cmd --permanent --add-service=dns ##在火牆添加dns服務
firewall-cmd --reload##重啓火牆
-
本節實驗內容爲兩臺主機:
-
dns_node1:192.168.1.20
-
dns_node2:192.168.1.30
-
將火牆設置好之後
vim /etc/resolv.conf
,如下圖所示編輯,將node2主機的dns設置爲192.168.1.20,執行dig www.baidu.com
-
執行結果仍爲服務不可到達(排除了網絡,火牆以及dns部署的原因)
-
查詢端口,發現爲node2服務的node1的dns的53端口沒有開啓
-
解決方法:
vim /etc/named.conf
11 listen-on port 53 { any; }; ##在本地所有網絡接口上開啓53端口
19 allow-query { any; }; ##允許查詢A記錄的客戶端列表
34 dnssec-validation no; ##禁用dns檢測使dns能夠緩存外部信息到本機
systemctl restart named
(嚴格注意每行後面都有分號,若是沒有寫分號,服務就無法啓動)- 如下圖所示,查詢成功,服務啓用成功了
3.高速緩存dns
vim /etc/named.conf
20 forwarders { 114.114.114.114; };
4.dns的正向解析
vim /etc/named.conf
查看目錄
vim /etc/named.rfc1912.zones
zone "myr.com" IN { ##維護的域名
type master; ##當前服務器位主dns
file "myr.com.zone"; ##域名A記錄文件
allow-update { none; }; ##允許更新主機列表
};
cd /var/named/
cp -p named.localhost myr.com.zone
vim myr.com.zone
www CNAME myr.a.myr.com. ##規範域名
myr.a A 192.168.1.111 ##正向解析記錄
myr.a A 192.168.1.112
myr.com. MX 1 192.168.1.20. ##郵件解析記錄
systemctl restart named
dig www.myr.com
查詢正向解析dig -t mx myr.com
郵件解析記錄查詢(需要在node2中安裝相關服務)dnf install postfix -y
dnf install mailx-12.5-29.el8.x86_64 -y
5.dns的反向解析
vim /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.ptr";
allow-update { none; };
};
cd /var/named/
cp -p named.loopback 192.168.1.ptr
vim 192.168.1.ptr
systemctl restart named
測試:dig -x 192.168.1.13
6.dns的雙向解析
- 實驗環境:客戶端3臺(服務端爲node1)
- node1中:2個ip
- 192.168.1.10(內網)
- 172.25.254.10(公網)
ifconfig ens160:0 172.25.254.10 netmask 255.255.255.0
l臨時設置兩個ip- node2中:
- 192.168.1.20
- 172.25.254.20
ifconfig ens160:0 172.25.254.20 netmask 255.255.255.0
- 在node3中
vim /etc/resolv.conf
nameserver 192.168.1.10(內網)
- 在node2中:
vim /etc/resolv.conf
nameserver 172.25.254.10(公網)
- 配置方式:
cd /var/named/
cp -p myr.com.zone myr.com.inter
vim myr.com.inter
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
vim /etc/named.rfc1912.inters
zone "myr.com" IN {
type master;
file "myr.com.inter";
allow-update { none; };
};
- vim /etc/named.conf
view localnet {
match-clients { 192.168.1.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view internet {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inters";
include "/etc/named.root.key";
};
systemctl restart named
- 測試:分別在2個網段的主機中作同樣域名的地址解析得到的A記錄不同
7.dns集羣
- node1爲主dns,node2爲輔助dns
- 在node1中(192.168.1.10):
- 主dns:
vim /etc/named.rfc1912.zone
zone "myr.com" IN {
type master;
file "myr.com.zone";
allow-update { none; };
also-notify { 192.168.1.20; }; ##主動通知的輔助dns主機
};
-
vim /var/named/myr.com.zone
-
改變內容
-
在node2(192.168.1.20)中
-
dnf install bind -y
安裝服務 -
firewall-cmd --add-service=dns
設置火牆 -
vim /etc/named.conf
允許端口
listen-on port 53 { any; };
allow-query { any; };
dnssec-validation no;
vim /etc/named.rfc1912.zones
zone "myr.com" IN {
type slave; ##dns狀態位輔助dns
masters { 192.168.1.10; }; ##主dns
file "slaves/myr.com.zone"; ##同步數據文件
};
systemctl restart named
- 如果不對node1,做改變,只做node2的那步,node3仍舊可以通過node2,
dig
到www.myr.com
,但是當你在node1中改變內容時,node3不會得到更新,此時,用node2和node3digwww.myr.com
的內容就會不同
- 測試:
- 在node3中設置dns爲192.168.1.20,用node2和node3
dig www.myr.com
,得到的結果相同
8.dns的更新
dns基於ip地址的更新:
- 在dns中設定:
vim /etc/named.rfc1912.zones
zone "myr.com" IN {
type master;
file "myr.com.zone";
allow-update { 192.168.1.15; }; ##允許指定客戶端更新myr域
also-notify { 192.168.1.20; };
};
- 測試:
- 在192.168.1.15:
nsupdate
> server 192.168.0.20
> update add hello.myr.com 86400 A 192.168.1.111 ##新增A記錄
> send
> update delete hello.myr.com ##刪除A記錄
> send
- 然後在node2(192.168.1.20)中
dig hello.myr.com
,顯示正確
dns基於key的更新:
- 通過
vim /etc/rndc.key
可以查看指定的加密方式
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST myr
- -a HMAC-SHA256指定加密方式
- -b 128代表加密長度
- -n Host指定名稱類型
- 這樣就建立了一個名稱爲myr的HOST類型的key文件
cp -p /etc/rndc.key /etc/myr.key
vim /etc/myr.key
key "myr" {
algorithm hmac-sha256;
secret "FLJKQxlebCudWNThhQtaKg=="; ##通過查看文件得知,上圖中有解釋
};
vim /etc/named.conf
43 include "/etc/myr.key";
vim /etc/named.rfc1912.zones
zone "myr.com" IN {
type master;
file "myr.com.zone";
allow-update { key myr; };
also-notify { 192.168.1.20; };
};
-
systemctl restart named
-
在node3(192.168.1.15)中:
-
前提準備:將在node1中生成的密鑰文件複製到node3中:
-
scp /var/named/Kmyr.+163+15250.key Kmyr.+163+15250.private [email protected]:/mnt
nsupdate -k /mnt/Kmyr.+163+15250.private ##此處的文件是上文中生成的私鑰文件
> server 192.168.1.10
> update add hello.myr.com 86400 A 192.168.1.112
> send
> quit
- 然後在node2(192.168.1.20)中
dig hello.myr.com
,顯示正確 - 注意:需要保證兩臺主機的時間同步,否則dns更新失敗(時間握手)。
9.ddns(dhcp+dns)
- 搭建dncp
dnf install dhcp-server.x86_64 -y
安裝cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
將內容複製過去,對文件進行重寫vim /etc/dhcpd/dhcpd.conf
配置文件(37行以後的全部刪掉)
- 在node1中:
key myr {
algorithm hmac-sha256;
secret "FLJKQxlebCudWNThhQtaKg==";
};
zone myr.com. {
primary 127.0.0.1;
key myr;
}
dns的key更新
- 測試:
- 設定測試主機網絡工作方式爲dhcp
- 設定主機名稱test.myr.com
- 重啓網絡
dig test.myr.com
可以得到正確解析