DNS協議
一、DNS:域名名稱系統
主機解析
正向解析:將計算機名轉換成IP地址
反向解析:將IP地址轉換成計算機名
FQDN(Fully Qualified Domain Name)完全合格域名/全稱域名
DNS查詢的具體工作原理
1. 使用者輸入網址
當你在瀏覽器中輸入一個網址,比如
www.example.com
,瀏覽器首先需要知道這個域名對應的IP地址。因為計算機只能透過IP地址進行通訊,所以DNS的作用就是將域名轉換為IP地址。2. 本地快取查詢
瀏覽器會先查詢自己本地的DNS快取。每次你訪問一個網站,作業系統和瀏覽器都會快取DNS查詢結果。這樣,當你再次訪問相同的網站時,系統就可以直接從快取中提取IP地址,而無需重新進行DNS查詢。
如果快取中有對應的記錄,瀏覽器就直接使用這個IP地址進行訪問。
3. 作業系統查詢DNS伺服器
如果快取中沒有相關記錄,作業系統就會查詢配置的DNS伺服器。通常,作業系統會使用ISP(Internet Service Provider,網際網路服務提供商)提供的DNS伺服器,或者你自己設定的第三方DNS(比如Google的8.8.8.8,Cloudflare的1.1.1.1等)。
4. 遞迴查詢過程
如果本地DNS伺服器也沒有域名的記錄,它會開始一個遞迴查詢的過程。這個過程涉及多個DNS伺服器的逐級查詢。
-
根DNS伺服器:首先,DNS請求會被髮送到根DNS伺服器。根DNS伺服器是DNS系統的頂級伺服器,管理著所有頂級域(如
.com
,.org
,.net
等)。 -
頂級域名伺服器(TLD):根伺服器會根據請求的域名(如
example.com
),將查詢請求指向對應的TLD伺服器(例如.com
域的TLD伺服器)。 -
權威DNS伺服器:TLD伺服器會返回指定域名的權威DNS伺服器地址。這個權威伺服器擁有該域名的確切記錄,可以返回最終的IP地址。
5. 獲取IP地址
一旦查詢到權威DNS伺服器,它會返回對應域名的IP地址。這個地址可以是IPv4(如
192.0.2.1
)或IPv6(如 2001:db8::1
)格式。返回結果後,DNS查詢過程就結束了,作業系統將會把這個IP地址返回給瀏覽器,瀏覽器就可以透過這個IP地址連線到目標網站的伺服器,獲取網站的內容。
6. 本地快取
為了提高效率,DNS伺服器和作業系統都會快取結果。這樣,當再次訪問相同的網站時,就不需要重新進行整個查詢過程,而是直接從快取中取出IP地址。
DNS查詢過程圖解
瀏覽器請求域名解析 →
作業系統查詢本地快取 →
快取命中:直接使用快取的
IP
地址(如果有)。
未命中:查詢DNS伺服器 →
DNS
伺服器查詢根DNS伺服器 →
根DNS伺服器返回TLD伺服器地址 →
TLD
伺服器返回權威DNS伺服器地址 →
權威DNS伺服器返回最終的
IP
地址 →
瀏覽器訪問
IP
地址,載入網頁內容。
DNS
的型別
A記錄(Address Record):將域名對映到IPv4地址。
AAAA
記錄:將域名對映到IPv6地址。
CNAME
記錄(Canonical Name):將一個域名別名對映到另一個域名。
MX
記錄(Mail Exchange):定義郵件交換伺服器,用於處理電子郵件。
NS
記錄(Name Server):指示負責某一域的權威DNS伺服器。
TXT
記錄:儲存文字資訊,常用於驗證域名所有權等用途。
配置dns伺服器
1.安裝bind包
[root@web01 network-scripts]# yum install -y bind
2.啟動named服務
[root@web01 network-scripts]# systemctl enable named.service --now
3.注意事項
dns服務儘量reload,因為restart會清空dns快取
3.檢視埠
[root@web01 network-scripts]# netstat -tunpl |grep -w 53
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3617/named
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2032/dnsmasq
tcp6 0 0 ::1:53 :::* LISTEN 3617/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 3617/named
udp 0 0 192.168.122.1:53 0.0.0.0:* 2032/dnsmasq
udp6 0 0 ::1:53 :::* 3617/named
4.修改配置檔案
[root@web01 network-scripts]# vim /etc/named.conf
options {
# 設定 DNS 伺服器監聽的地址和埠。這裡限制僅在本地迴環地址上監聽。
listen-on port 53 { 127.0.0.1; }; # 只在 IPv4 本地地址上監聽 53 埠
listen-on-v6 port 53 { ::1; }; # 只在 IPv6 本地地址上監聽 53 埠
# 設定 DNS 資料儲存目錄,通常包含資料庫檔案、日誌檔案等。
directory "/var/named"; # 資料庫檔案儲存的預設目錄,通常是 Zone 檔案所在位置。
# 設定快取轉儲檔案的路徑,用於除錯和分析快取資料。
dump-file "/var/named/data/cache_dump.db"; # 快取轉儲檔案,記錄當前快取內容
# 設定統計資訊儲存檔案路徑,用於記錄 DNS 查詢統計資訊。
statistics-file "/var/named/data/named_stats.txt"; # 儲存統計資料的檔案路徑
# 設定記憶體統計資訊檔案,用於記錄記憶體使用情況。
memstatistics-file "/var/named/data/named_mem_stats.txt"; # 儲存記憶體統計資訊的檔案路徑
# 設定安全根金鑰檔案,通常用於 DNSSEC(域名系統安全擴充套件)。
secroots-file "/var/named/data/named.secroots"; # 儲存根金鑰的檔案路徑
# 設定遞迴查詢過程中需要的檔案路徑,用於記錄遞迴查詢狀態。
recursing-file "/var/named/data/named.recursing"; # 儲存遞迴查詢過程中的檔案路徑
# 配置允許查詢的客戶端,只有 localhost(本地地址)可以查詢。
allow-query { localhost; }; # 只能本機查詢本機,可以設定為網段或者any
recursion yes; # 啟用遞迴查詢功能,表示此 DNS 伺服器是一個遞迴伺服器
};
zone "8.168.192.in-addr.arpa" IN {
type master; #主dns
file "named.yutianedu"; #指定zone解析檔案,絕對路徑/var/named
allow-update { none; }; #是否允許自動更新,none代表不允許
};
#
這是根dns的zone
zone "." IN {
type hint;
file "named.ca";
};
配置正向dns(許可權要注意)
[root@web01 named]# cat /etc/named.rfc1912.zones 在這個配置檔案中加一行
zone "myopenai.com" IN {
type master;
file "named.myopenai";
allow-update { none; };
};
[root@web01 named]# cp -p named.localhost named.myopenai 許可權問題
[root@web01 named]# cat named.myopenai
$
TTL 1D
@ IN SOA ns.myopenai.com. root.myopenai.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.myopenai.com.
ns A 192.168.5.11
www A 192.168.5.11
ftp A 192.168.5.12
web CNAME www.baidu.com.
#
配置檔案解析
$
TTL 1D
###生命週期,dns快取檔案最長時間
###SOA記錄:起始授權機構:Start of Authority Record
1D:每天主DNS與備DNS同步一次
1H: 如果主從同步不成功,則每小時重試一次
1W:每小時重試一次,1周內還未同步成功,則放棄
3H:失敗的解析保留3小時在快取中
0:序列號:每次備DNS主動詢問主DNS,你有記錄更新嗎?如果主DNS更新了記錄,需要增加序列號,備份DNS才會同步新的記錄
ns:name server 它用於指定一個域名所對應的 權威 DNS 伺服器,即負責管理該域名的 DNS 資訊的伺服器。
CNAME:別名
將database這個主機新增兩條A記錄,實現DNS輪詢
#
測試
[root@kvm ~]# nslookup
>
www.myopenai.com
Server: 192.168.5.101
Address: 192.168.5.101#53
Name: www.myopenai.com
Address: 192.168.5.11
配置反向解析
1.
[root@dns named]# cat /etc/named.rfc1912.zones
zone "5.168.192.in-addr.arpa" IN {
type master;
file "named.my";
allow-update { none; };
};
2.
[root@dns named]# cat named.my
$
TTL 1D
@ IN SOA ns.myopenai.com. root.myopenai.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.myopenai.com.
ns A 192.168.5.11
11 PTR www.myopenai.com. #PTR: Point Record 反向解析
#
配置檔案解析
3.測試
[root@kvm ~]# nslookup 192.168.5.11
11.5.168.192.in-addr.arpa name = www.myopenai.com.
DNS記錄
A:將一個主機名轉換為IPV4 Address
AAAA: 將一個主機名轉換為IPV6 Address
輔助dns搭建
搭建高可用叢集
主--->從
但從端不能同步給主端
從端DNS不能修改
只能由主端同步資料給從端
環境規劃
主dns:192.168.5.101
從dns:192.168.5.102
從dns配置:
1.修改配置檔案
[root@dns2 slaves]# cat /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
[root@dns2 slaves]# cat /etc/named.rfc1912.zones
zone "myopenai.com" IN {
type slave;
file "slaves/named.myopai";
masters { 192.168.5.101; };
};
zone "5.168.192.in-addr.arpa" IN {
type slave;
file "slaves/myopai.zone";
masters { 192.168.5.101; };
};
2.測試
先斷開主dns
[root@dns ~]# systemctl stop named.service
[root@kvm ~]# nslookup www.myopenai.com
Server: 192.168.5.102 -----> 是備dns在工作
Address: 192.168.5.102#53
Name: www.myopenai.com
Address: 192.168.5.11
轉發dns
[root@web01 ~]
# vim /etc/named.conf
options {
listen-
on
port
53
{ any; };
listen-
on
-v6 port
53
{ any; };
directory
"/var/named"
;
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"
;
secroots-
file"/var/named/data/named.secroots"
;
recursing-
file"/var/named/data/named.recursing"
;
allow-query { any; };
forwarders {
192.168
.
8.254
; };
####轉發DNS
forward first;
forward only;則先透過DNS查詢,如果DNS能解析到,直接返回結果,如果解析不到,嘗試丟給轉發DNS來解析,如果轉發DNS能解析到,則返回給客戶端,如果轉發DNS也解析不到,則返回查詢失敗
forward first; 則先透過DNS查詢,如果DNS能解析到,直接返回結果,如果解析不到,嘗試丟給轉發DNS來解析,如果轉發DNS能解析到,則返回給客戶端,如果轉發DNS也解析不到,則從根DNS開始查詢
forwarders {
114.114
.
114.114
; };
forward only;
連結:https://www.cnblogs.com/cloudwangsa/p/18563730
(版權歸原作者所有,侵刪)

文末福利

即將步入2025年,不少小夥伴在考慮來年的工作方向。
僅目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。

為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套【2024最新運維資料】高階運維工程師必備技能資料包(文末一鍵領取),內容有多詳實豐富看下圖!
共有 20 個模組





······



以上所有資料獲取請掃碼

識別上方二維碼
備註:2024最新運維資料
100%免費領取
(是掃碼領取,不是在公眾號後臺回覆,別看錯了哦)