1、dns的安裝及開啟
dnf install bind.x86_64 -y ?? ??? ?#安裝
#Berkeley Internet Name Domain (BIND)
systemctl enable --now named?? ?#啟用dns服務,服務名稱叫named
firewall-cmd --permanent --add-service=dns #火墻設置
firewall-cmd --reload?? ??? ??? ?#重啟火墻
setenforce 0?? ??? ??? ??? ??? ?#調整內核級火墻為警告模式
2、配置dns服務使內網主機可以訪問其dns資源
netstat -antlupe | grep named?? ??? ??? ??? ?#可以查看dns開放端口
vim /etc/named.conf?? ??? ??? ??? ??? ??? ??? ?#編輯dns配置文件,對文件做以下修改
11行左右 listen-on port 53 { any; }; ?? ??? ?#在本地所有網絡接口上開啟53端口
19行左右 allow-query { any; }; ?? ??? ??? ??? ?#允許查詢A記錄的客戶端列表,提供服務給所有主機
20行左右 forwarders { 114.114.114.114; };?? ?#將源換為國內的,指定資源從114上取,這樣速度會快一點
34行左右 dnssec-validation no; ?? ??? ??? ??? ?#禁用dns檢測使dns能夠緩存外部信息到本機,開著會因為檢測不合規返回不了“答案”
##每一個字符串一定要用分號結尾
systemctl restart named?? ??? ??? ??? ??? ??? ?#重啟服務
使用內網其他主機測試:
vim /etc/resolv.conf #編輯dns指向文件 nameserver 192.168.187.129
#添加我們配置的dns服務器的ip dig www.baidu.com
#解析測試我們的dns服務器配置是否成功
顯示NOERROR就是沒有問題!
3、DNS的正向解析
企業內部也需要對外提供dns做相應的解析工作!
準備工作:
在上個高速緩存配置的基礎上,先編輯主配置文件vim /etc/named.conf
,將源注釋掉
然后使用命令nm-connection-editor
將dns服務器在的主機和測試主機的ip都改為靜態ip
dns服務器的IP改成:192.168.187.129
測試主機IP改為:192.168.187.136? ?
修改配置并保存
(1)主機記錄A記錄
第一步:添加域名語句塊
vim /etc/named.rfc1912.zone
##和主配置文件里的內容一樣,里邊有要維護域名的語句塊
##主配置文件讀取域名信息就會到這個文件里讀取
##我們可以在這個文件里添加我們要維護的域名的語句塊
添加:
zone "lucky.com" IN { ?? ??? ??? ?#維護的域名
?type master; ?? ??? ??? ??? ??? ?#當前服務器位主dns
?file "lucky.com.zone"; ?? ??? ?#域名A記錄文件,要解析域名時看的是這個文件
?allow-update { none; }; ?? ??? ?#允許更新主機列表
};
第二步:編輯域名A記錄文件
cd /var/named/?? ??? ??? ??? ?#進入數據目錄
cp -p named.localhost lucky.com.zone?? ??? ?#復制模板得到我們要的域名A記錄文件,一定要加-p參數,所屬組相同
vim lucky.com.zone?? ??? ??? ?#編輯A記錄文件
A記錄文件內容及解釋如下:
$TTL 1D #TIME-TO-LIVE(dns地址保存時間長度)
@ IN SOA dns.lucky.com. root.lucky.com ( ?? ??? ?#SOA授權起始(Start of Authority),誰授權的
#@符的值就是/etc/named.rfc1912.zone文件里我們編寫的域名語句塊引號里的內容
#不是以.結尾的字符串都會被自動補齊@符的值
?0 ; serial ?? ??? ??? ?#域名版本序列號,下文dns集群會用到,有詳細解釋
?1D ; refresh ?? ??? ??? ?#刷新時間(輔助dns)
?1H ; retry ?? ??? ??? ?#重試時間(輔助dns)
?1W ; expire ?? ??? ??? ?#過期時間(輔助dns,查詢失敗過期停止對輔助域名的應答)
?3H ) ; minimum ?? ??? ?#A記錄最短有效期
??? ??? ?NS ?? ?dns.lucky.com.
dns ?? ?A ?? ?192.168.187.129
lucky.a A ?? ?192.168.187.97 ?? ??? ?##正向解析記錄
lucky.a A ?? ?192.168.187.99
復制并編輯A記錄文件
第三步:重啟并在另一臺內網主機測試systemctl restart named
另一臺主機先檢查下dns服務器是不是我們設置的
然后dig www.lucky.com
,如圖測試成功!
##多個ip會自動做輪調
(2)規范域名轉換CNAME記錄
當內部主機名不規范時,對外開放的是規范域名。
那么對外開放的域名只有一個,將對外開放的域名轉換到內部主機再做解析
dns服務器端:
vim /var/named/lucky.com.zone?? ??? ??? ?#編輯A記錄文件
添加:
www ? ? CNAME ? www.a.lucky.com.
#www.a.lucky.com.就是不規范域名
systemctl restart named?? ??? ?#重啟dns
客戶端:
dig www.lucky.com?? ??? ??? ?#另一臺主機測試
編輯文件
重啟
另一臺主機測試,如圖設置成功!
(3)郵件解析MX記錄
什么是MX記錄?
當我們在發送郵件時,假設我們用的163.com郵箱,需要將163.com解析成ip才能進行數據傳輸,這個ip就叫這個域的mx記錄(負責郵件發送和接收的ip)。
dns服務器端
vim /var/named/lucky.com.zone
#編輯A記錄文件 添加后保存退出:
lucky.com. MX 1 192.168.187.129.
systemctl restart named
#重啟dns
添加時寫的是服務器ip
客戶端:
dnf install postfix mailx -y? ? ? ? ? #安裝提供郵件投遞協議的軟件postfix和發送郵件的客戶端mailx systemctl start postfix? ? ? ? ? ? ? ?#開啟postfix服務?
dig -t mx lucky.com? ? ? ? ? ? ? ? ? #查看mx記錄
查看mx記錄,沒有問題
發郵件給root@lucky.com(自行類比@qq.com)
##因為在dns服務器端25端口是自用的(回環),所以不會收到郵件,所以我們在測試端看發送隊列看下效果即可
##如圖即是正向解析成功
4、DNS的反向解析
逆向查詢記錄PTR記錄
什么是PTR記錄?
郵件接收方只會顯示發送方的ip,需要做反向解析,顯示真實的域名,讓用戶知道郵件從哪兒來的。從ip到域名就是ptr記錄。
dns服務器端
vim /etc/named.rfc1912.zones?? ??? ??? ?#編輯文件
添加:
zone "187.168.192.in-addr.arpa" IN {
? ? ? ? type master;
? ? ? ? file "192.168.187.ptr";
? ? ? ? allow-update { none; };
};
cd /var/named/
cp -p named.loopback 192.168.187.ptr?? ??? ?#復制模板得到ptr文件
vim 192.168.187.ptr?? ??? ??? ??? ??? ??? ??? ?#編輯ptr記錄文件
修改成下文:
$TTL 1D
@ ? ? ? IN SOA ?dns.lucky.com. rname.invalid. (
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ; serial
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1D ? ? ?; refresh
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1H ? ? ?; retry
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1W ? ? ?; expire
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3H ) ? ?; minimum
? ? ? ? NS ? ? ?dns.lucky.com.
dns ? ? A ? ? ? 192.168.187.129
233 ? ? PTR ? ? www.lucky.com.
#反向解析IP192.168.187.233應該得到域名www.lucky.com
systemctl restart named?? ??? ??? ??? ??? ??? ?#重啟
編輯named.rfc1912.zones文件
編輯ptr記錄文件
客戶端:dig -x 192.168.187.233
測試如圖成功!
5、DNS的雙向解析
雙向解析:
在內網中的主機解析得到內網的ip,
在外網中的主機解析得到外網的ip。
實驗環境:
我們需要一臺雙網卡主機模擬內網,一臺單網卡主機模擬外網
dns服務器端做內網主機:
添加一個網卡,將ip設為192.168.0.0/24網段的
原來的192.168.187.0/24網段的做內網ip
單網卡主機做外網主機:
ip改為192.168.0.0/24網段的,模擬外網主機,并且將網關設為dns服務器端192.168.0.0/24網段的ip,保證兩臺主機能相互通信
兩臺主機更改完網絡后都需重啟網絡
nmcli connection reload
nmcli connection up
網絡名 例如客戶端網卡名為ens160,那么就是
nmcli connection up ens160
設置完后ping一下通了即可
dns服務器端(內網主機):
vim /etc/named.conf #編輯主配置文件
將下圖內容注釋掉:
注釋掉后,在下邊添加如下內容:
view localnet {
? ? ? ? match-clients { 192.168.187.0/24; };
? ? ? ? zone "." IN {
? ? ? ? ? ? ? ? type hint;
? ? ? ? ? ? ? ? file "named.ca";
? ? ? ? };
? ? ? ? include "/etc/named.rfc1912.zones";
};
view internet {
? ? ? ? match-clients { any; };
? ? ? ? zone "." IN {
? ? ? ? ? ? ? ? type hint;
? ? ? ? ? ? ? ? file "named.ca";
? ? ? ? };
? ? ? ? include "/etc/named.rfc1912.zones.inter";
};
拷貝/etc/named.rfc1912.zones文件得到/etc/named.rfc1912.zones.inter文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter
vim /etc/named.rfc1912.zones.inter?? ??? ?#編輯外網配置文件
做如下圖更改:
拷貝A記錄文件得到外網的A記錄文件
cp -p /var/named/lucky.com.zone /var/named/lucky.com.inter
vim /var/named/lucky.com.inter?? ??? ?#編輯外網A記錄文件
做如下圖更改:
#把ip都改成我們想讓外網主機訪問時看到的ip
重啟systemctl restart named
vim /etc/resolv.conf? ? ? ?#添加dns服務器
ip nameserver 192.168.187.129
#因為更改過網絡,所以可能需要重新添加
客戶端(外網主機)
vim /etc/resolv.conf? ? ? ? ? ? ? ? ? ? #添加dns服務器
ip nameserver 192.168.187.129? ? #因為更改過網絡,所以可能需要重新添加
測試:
dns服務器端(內網主機):
dig -x 192.168.187.233
測試,如圖顯示的內網ip,成功!
客戶端(外網主機):dig -x 192.168.187.233
測試,如圖顯示的外網ip,成功!
6、DNS集群
當我們的主dns服務器訪問量過大時,服務器不足以支撐這么大的訪問量,我們可以增加n臺輔助dns來分擔訪問壓力。
我們下面以增加一臺輔助dns來實驗如何使主輔dns同步更新!
輔助dns:
我以上面用過的客戶端主機為輔助dns
先將其IP改為和主dns一個網段的,192.168.187.136
更改完網絡后需重啟網絡
nmcli connection reload
nmcli connection up ens160
dnf install bind.x86_64 -y ?? ??? ?#也安裝dns
#Berkeley Internet Name Domain (BIND)
systemctl enable --now named?? ?#啟用dns服務,服務名稱叫named
firewall-cmd --permanent --add-service=dns #火墻設置
firewall-cmd --reload?? ??? ??? ?#重啟火墻
setenforce 0?? ??? ??? ??? ??? ?#調整內核級火墻為警告模式
vim /etc/named.conf?? ??? ??? ??? ?#編輯主配置文件
注釋掉11,12,19行
vim /etc/named.rfc1912.zones?? ?#在文件中加入域名語句塊
添加:
zone "lucky.com" IN {
? ? ? ? type slave;?? ??? ??? ??? ?#類型是輔助dns
? ? ? ? masters { 192.168.187.129; };?? ?#主dns
? ? ? ? file "slaves/lucky.com.zone";?? ?#數據同步到slaves目錄下
};
編輯主配置文件注釋掉如圖三行,就相當于全部都開啟(any)
添加域名語句塊
vim /etc/resolv.conf
nameserver 192.168.187.136? ? #將dns服務器改為自己的,為了看效果
systemctl restart named? ? #重啟dns服務
主dns:
我以上面配好的dns服務器192.168.187.129這臺主機為主dns
先去掉上個實驗的配置,防止影響
vim /etc/named.conf? ?
#編輯主配置文件
注釋掉如下圖內容:
vim /etc/named.rfc1912.zones
在域名語句塊內添加如下內容:
also-notify { 192.168.187.136; };? ?#輔助dns的ip
systemctl restart named? ? ? ? ? ? ?#重啟dns
測試:
輔助dns:
dig www.lucky.com
得到如圖結果:
主dns:
vim /var/named/lucky.com.zone
#編輯A記錄文件 更改下ip和serial值:
之后在輔助dns端重新dig看是否同步成功
serial值的作用:
每更改一次該值并重啟主dns服務后,輔助dns就會重新同步A記錄
即重新同步域名所對應ip
一天可以改99次
值可以任意寫!
!!!!!但只能增量更改!!!!!
其他值解釋:
?1D ; refresh ?? ??? ??? ?#刷新時間(輔助dns)
?1H ; retry ?? ??? ??? ?#重試時間(輔助dns)
?1W ; expire ?? ??? ??? ?#過期時間(輔助dns,查詢失敗過期停止對輔助域名的應答)
?3H ) ; minimum ?? ??? ?#A記錄最短有效期
輔助dns:dig www.lucky.com
得到如圖結果:
測試成功!ip同步成功!
DNS(DHCP+DNS)動態域名解析
dhcp能自動分配ip,當重新分配時怎么讓dns知道ip重新分配了呢?ddns可以解決這個問題,實現動態域名解析。
更新原理:制作一個key,讓dhcp能更新dns的A記錄,key是更新域名的鑰匙。
在/var/named目錄下生成一個更新數據,在系統讀取A記錄時會把.jnl結尾的更新文件與A記錄文件整合實現。
ddns服務端
dnf install dhcp-server -y?? ??? ?#安裝dhcp服務器
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf?? ??? ?#復制模板得到配置文件
vim /etc/dhcpd/dhcpd.conf?? ??? ?#編輯dhcp配置文件
做如下圖修改:
#修改最終結果是剩31行
systemctl start dhcpd?? ??? ?#開啟dhcp
接下來制作更新域的“鑰匙”key:
#/etc/rndc.key是dns默認使用的key模板,用的是SHA-256加密,所以我們下面也要使用SHA-256加密
cd /mnt/
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST luckykey
#SHA256加密方式是對稱的,公鑰和私鑰是一樣的
cp -p /etc/rndc.key /etc/lucky.key?? ??? ?#復制key模板得到key文件
vim /etc/lucky.key?? ??? ??? ??? ??? ??? ?#編輯key文件
改成如下內容:
key "luckykey" {?? ??? ??? ??? ??? ??? ?#我們前面取的key名字
? ? ? ? algorithm hmac-sha256;?? ??? ??? ?#加密方式
? ? ? ? secret "/P/GVMVRb/dNIjtr2qYvMg==";?? ??? ?#我們前面生成的密鑰,最好復制粘貼
};
vim /etc/named.conf? ? ? ? ?#更改dns主配置文件加key文件指向
在第45行左右添加key文件指向:
include "/etc/lucky.key";
vim /etc/named.rfc1912.zones? ? ? ? ? ? ?#域名語句塊在這里
在域名語句塊里添加key更新:
如下圖:
systemctl restart named?? ??? ?#重啟dns
接下來測試一下該key能否更新dns:
nsupdate -k Kluckykey.+163+37031.private?? ??? ?#-k指定key,不指定send會失敗
> update add hello.lucky.com 86400 A 192.168.187.111?? ?#新增A記錄
> send?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#成功
> update del hello.lucky.com?? ??? ??? ??? ??? ??? ??? ?#刪除A記錄
> send?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#成功
> quit?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#退出
測試成功!繼續下一步
vim /etc/dhcp/dhcpd.conf ?? ??? ??? ?#編輯dncp配置文件
打開dns更新的“開關”:
第14行取消注釋,并改為interim(網絡更新):
ddns-update-style interim;
在最后指定key,相當于讓dhcp拿到了dns更新的“鑰匙”:
key luckykey {?? ??? ??? ??? ??? ??? ??? ?#我們前面取得key的名字,別寫錯了
? algorithm hmac-sha256;
? secret /P/GVMVRb/dNIjtr2qYvMg==;?? ??? ?#最好直接復制前面我們生成的key文件里的防止出錯
};
在最后加入key要更新的域:
zone lucky.com. {
? primary 127.0.0.1;?? ??? ??? ??? ??? ?#dns在本機,所以直接寫本機回環接口就可以了
? key luckykey;?? ??? ??? ??? ??? ??? ??? ?#我們前面取得key的名字,別寫錯了
}
刪掉jnl文件(不然前面的更新測試會影響):
rm -fr /var/named/lucky.com.zone.jnl
重啟兩個服務:
systemctl restart dhcpd
systemctl restart named
客戶端:
首先要關閉VM虛擬機的本地dhcp服務,如下圖操作即可:
##如果是真機是linux系統直接在虛擬機里改配置文件即可
選擇更改設置
取消勾選本地dhcp服務
然后將我們之前設置的靜態ip改為dhcp:
nm-connection-editor
測試下我們是否關閉本地dhcp成功:
nmcli connection up ens160? ? ? ? ? #重啟網卡
cat /etc/resolv.conf? ? ? ? #看下dns服務用的誰的
如圖是用的我們自己配置的,設置成功!
改下主機名方便測試:
hostnamectl? ? ? ?#查看主機名?
hostnamectl set-hostname nodeb.lucky.com? ? ? #改主機名為nodeb.lucky.com
測試:
客戶端:
dig? ? nodeb.lucky.com
ifconfig? ? ?看兩個出來的ip一樣否
如圖是一樣的
dns服務端:
vim /etc/dhcp/dhcpd.conf? ? ?#編輯dncp配置文件
改一下ip范圍:
我改為了77-90,如下圖:
重啟下dhcp服務: systemctl restart dhcpd
客戶端
nmcli connection up ens160? ? ? ? ? ? ? ? #重啟網卡,
那么會重新獲取ip
dig nodeb.lucky.com
ifconfig 看兩個出來的ip一樣否
如圖,重新獲取的ip是我們上面重新設置的范圍內的,dns解析也是同步的
測試成功!