DNS功能變數名稱系統服務 1.DNS 介紹 1.1什麼是功能變數名稱? 功能變數名稱(Domain Name),簡稱功能變數名稱、網域,是由一串用點分隔的名字組成的Internet上某一臺電腦或電腦組的名稱,用於在數據傳輸時標識電腦的電子方位。具有獨一無二,不可重覆的特性。 1.2什麼是 DNS? 功能變數名稱系統(Domain ...
DNS功能變數名稱系統服務
1.DNS 介紹
1.1什麼是功能變數名稱?
功能變數名稱(Domain Name),簡稱功能變數名稱、網域,是由一串用點分隔的名字組成的Internet上某一臺電腦或電腦組的名稱,用於在數據傳輸時標識電腦的電子方位。具有獨一無二,不可重覆的特性。
1.2什麼是 DNS?
功能變數名稱系統(Domain Name System,縮寫:DNS)是互聯網的一項服務。功能變數名稱解析是把功能變數名稱指向網站空間IP,讓人們通過註冊的功能變數名稱可以方便地訪問到網站的一種服務。IP地址是網路上標識站點的數字地址,為了方便記憶,採用功能變數名稱來代替IP地址標識站點地址。功能變數名稱解析就是功能變數名稱到IP地址的轉換過程。
功能變數名稱的解析工作由DNS伺服器完成。可以理解為DNS就是翻譯官。
正向解析:功能變數名稱 --> IP 地址
反向解析:IP 地址 --> 功能變數名稱
1.3功能變數名稱的組成和分類
常見格式:www.baidu.com
完整格式:www.baidu.com.
-
. 根域,可省略不寫
-
com 頂級域,由ICANN組織指定和管理
- 國家地區功能變數名稱:cn(中國)、hk(香港)、sg(新加坡)等
- 通用頂級功能變數名稱:com(商業機構)、org(非營利組織)、edu(教育機構)等
- 新通用頂級功能變數名稱:red(紅色、熱情)、top(頂級、高端)等
-
baidu 二級域(註冊域),可由個人或組織申請註冊
-
www 三級域(子域),伺服器網站名代表
-
主機名:s1.www.baidu.com.中的s1就是主機名,一般用來表示具體某一臺主機
拓展:com.cn屬於“二級功能變數名稱”,是cn頂級域的子域
2.功能變數名稱解析過程
如客戶機發起查詢請求
www.kernel.org
1.客戶機首先查看查找本地hosts文件,如果有則返回,否則進行下一步
2.客戶機查看本地緩存,是否存在本條目的緩存,如果有則直接返回,否則進行下一步。
3.將請求轉發給指向的 DNS 伺服器。
4.查看功能變數名稱是否本地解析,是則本地解析返回,否則進行下一步。
5.本地DNS伺服器首先在緩存中查找,有則返回,無則進行下一步。
6.向全球13個根域伺服器發起DNS請求,根域返回org域的地址列表。
7.使用某一個 org 域的 IP 地址,發起 DNS 請求,org 域返回 kernel 域伺服器地址列表。
8.用某一個kernel域IP地址,發起DNS請求,kernel域返回www.kernel.org主機的IP地址,本地 DNS 服務收到後,返回給客戶機,併在本地 DNS 伺服器保存一份。
3.DNS 軟體信息
軟體名稱:bind
服務名稱:named
軟體埠:
UDP 53 數據通信(功能變數名稱解析)
TCP 53 數據同步(主從同步)
配置文件:
- 主配置文件:/etc/named.conf(伺服器運行參數)
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
#設置伺服器監聽網卡(可以寫具體某一個IP,也可以寫成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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
#數據文件位置
allow-query { localhost; };
#設置可以訪問伺服器的客戶端IP(可用any)
- 區域配置文件:/etc/named.rfc1912.zones(伺服器解析的區域配置,正反向區域定義信息)
zone "localhost.localdomain" IN {
#正向區域配置文件標簽,修改為要解析的域
type master;
#DNS伺服器類型(master/slave)
file "named.localhost";
#正向數據配置文件名稱(預設保存在/var/name/下)
allow-update { none; };
#允許數據更新的列表(填寫IP地址)
};
zone "1.0.0.127.in-addr.arpa" IN {
# 反向區域配置文件標簽,僅修改IP位置,並且將IP反寫例如:0.168.192.in-addr.arpa
type master;
file "named.loopback";
allow-update { none; };
};
- 數據配置文件:/var/named/xx.xx(主機名和IP地址的對應解析關係,及主從同步信息)
$TTL 1D #功能變數名稱有效解析生存周期(一般指緩存時間)
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ #設置DNS伺服器的功能變數名稱
A 127.0.0.1 #IPv4的功能變數名稱IP解析記錄
AAAA ::1 #IPv6的 功能變數名稱IP解析記錄
~
# @: 功能變數名稱有效解析生存周期(一般指緩存時間)
# SOA:SOA標記(起始授權機構的資源記錄,描述了功能變數名稱的管理品 電子郵件地址 和一此時間參數
#serial 配置文件修改版本(如:20190826)
#refresh 更新頻率(從向主的查詢周期)
# retry 更新失敗的重試時間周期
# expire 無法更新時的失效周期
#minimum 緩存伺服器無法更新時的失效時間
記錄類型:
A: | 地址記錄,用來指定功能變數名稱的IPv4地址的記錄 |
---|---|
CNAME: | 將功能變數名稱指向另一個功能變數名稱,再由另一個功能變數名稱提供ip地址,就需要添加CNAME記錄 |
TXT: | 可填寫任何東西,長度限制255.絕大多數的TXT記錄是用來做SPF的(反垃圾郵件) |
NS: | 功能變數名稱伺服器記錄,如果需要把子功能變數名稱交給其他DNS服務商解析,就需要添加NS記錄。 |
AAAA: | 地址記錄,用來指定功能變數名稱的IPv6地址的記錄 |
MX: | 郵件交換記錄,如果需要設置郵箱,讓郵箱能收到郵件,就需要添加MX記錄。 |
DNS 實驗搭建
4.1 DNS服務搭建
先關閉伺服器和客戶機上的防火牆和SELinux
1.軟體安裝
yum install bind -y
2.配置主配置文件(/etc/named.conf)
options {
listen-on port 53 { any; }; #監聽網卡改為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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; #設置可以訪問伺服器的客戶端為any
3.配置區域文件(/etc/named.rfc1912.zones)
註:先對區域文件進行備份,刪除多餘的模板,只留下一個正向和一個反向(反向修改時,網路位的反寫格式,如192.168.100.20 -> 100.168.192.)
zone "ajaj.com" IN {
type master;
file "ajaj.localhost"; #自定義正向解析文件名
allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {
type master;
file "ajaj.loopback"; # 自定義反向解析文件名
allow-update { none; };
};
4.配置數據文件/var/named/
A. 先複製生成正向解析文件和反向解析文件
cp -a named.localhost ajaj.localhost
cp -a named.loopback ajaj.loopback
B. 編輯正向解析文件(註意功能變數名稱結尾的“.”)
vim ajaj.localhost
$TTL 1D
@ IN SOA ajaj.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.ajaj.com.
dns A 192.168.100.20
www A 192.168.100.21
C.編輯反向解析文件(註意功能變數名稱結尾的".")
vim ajaj.loopback
$TTL 1D
@ IN SOA ajaj.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.ajaj.com.
20 PTR dns.ajaj.com.
21 PTR www.ajaj.com.
5.重啟DNS服務
systemctl restart named
6.客戶端測試
在網卡配置文件中添加 DNS 伺服器的地址,然後用 nslookup 測試。
[root@localhost ~]# nslookup www.ajaj.com
Server: 192.168.100.20
Address: 192.168.100.20#53
Name: www.ajaj.com
Address: 192.168.100.21
4.2 DNS主從
實驗目的:
減輕主伺服器的壓力
先關閉伺服器和客戶機上的防火牆和SELinux
實驗準備:
一臺主伺服器、一臺從伺服器、一臺測試機
搭建過程:
1.搭建主伺服器步驟
安裝 bind 軟體
yum install bind -y
主配置文件的修改
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
區域配置文件的修改
zone "ajaj.com" IN {
type master;
file "ajaj.localhost";
allow-update { 192.168.100.21; };
};
zone "100.168.192.in-addr.arpa" IN {
type master;
file "ajaj.loopback";
allow-update { 192.168.100.21; };
};
主 DNS 的區域配置文件中 allow-updata 參數添加從伺服器 IP 地址。
配置數據文件
cp -a named.localhost ajaj.localhost
cp -a named.loopback ajaj.loopback
正向數據文件
vim ajaj.localhost
$TTL 1D
@ IN SOA ajaj.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.ajaj.com.
dns A 192.168.100.20
www A 192.168.100.23
反向數據文件
vim ajaj.loopback
$TTL 1D
@ IN SOA ajaj.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.ajaj.com.
20 PTR dns.ajaj.com.
23 PTR www.ajaj.com.
啟動 named 服務
systemctl start named
4.搭建從伺服器步驟:
安裝 bind 軟體
yum install bind -y
修改主配置文件
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
配置區域文件
註意:從配置文件的類型需要修改為 slave,並且需要填寫主伺服器的地址
zone "ajaj.com" IN {
type slave;
masters { 192.168.100.20; };
file "slaves/ajaj.localhost";
};
zone "100.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.100.20; };
file "slaves/ajaj.loopback";
};
文件保存位置修改為 file“slaves/atguigu.localhost”;
重啟服務
systemctl start named
在測試機上填寫從伺服器的IP,並使用nslookup測試
nslookup www.ajaj.com
Server: 192.168.100.21
Address: 192.168.100.21#53
Name: www.ajaj.com
Address: 192.168.100.23
4.3DNS緩存伺服器
先關閉伺服器和客戶機上的防火牆和SELinux
實驗作用:
加快解析速度,提高工作效率
實驗軟體:
dnsmasq
配置文件:
/etc/dnsmasq.conf
domain=功能變數名稱
#需要解析的功能變數名稱
server=ip
#主 DNS 伺服器 IP
cache-size=15000
#聲明緩存條數
重啟服務:
systemctl restart dnsmasq
測試效果:
在測試機上填寫DNS 緩存伺服器伺服器的 ip 地址