DNS服务搭建
目錄
DNS簡介
DNS解析原理
DNS的相關配置
DNS主從服務
DNS緩存服務
DNS智能解析(分離解析)
DNS簡介
-
DNS的功能
DNS 域名系統(Domain Name System) 的縮寫,它的功能是將域名解析成ip。我們日常上網瀏覽網頁時,在瀏覽器(如:IE)的地址欄中常輸入的是網站的網址,其實網址這個概念在專業的角度稱為域名。即:網址=域名。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
而域名主要是給我們人去使用的。我們知道,在網絡上,計算機與計算機之間的尋址方式是靠的ip地址。IP地址是四段數字組成的,而我們人去記憶不同網站的ip地址,這種數字化的地址很容易記錯或記混,我們人的思維模式更習慣于記憶名稱,如:百度、163、QQ等網站,我們可以很輕松的寫出它們的網址。所以,為了方便人與主機之間的溝通,在internet上,就需要有一臺服務器,記錄著網站域名(即網址)與服務器ip的對應關系。類似于表格,當我們上網時,在瀏覽器地址欄中輸入網址,客戶端則會向DNS服務器發出詢問請求,DNS服務器通過查表得到對應服務器的IP,返回給客戶端,客戶端再以這個ip地址尋址到達服務器,申請訪問web頁面。所以,一次上網的過程中,客戶端其實會向外發送兩次請求,第一次是詢問DNS,查表得到web服務器的ip,第二次是按照所獲得的ip,尋址找到web服務器請求訪問頁面。DNS上查表的過程,我們用更專業的術語表示就叫做解析。所以DNS服務器又稱為域名解析服務器,其功能就是將域名解析成ip的。
以上過程我們可以想象成生活中的手機電話簿功能:我們可以記住每個朋友的姓名,但我們是記不住每個朋友的手機號的,這就需要用電話簿記錄各個朋友的手機號,當我們需要給某個朋友打電話時,一定會先查電話簿,查到電話后,即可撥號打電話了。這里的電話簿的功能就相當于DNS的功能。
-
DNS命名空間
DNS可以負責全球網絡的域名解析工作,那么全球的網絡必然或有一套嚴謹的命名規范,那就是DNS命名空間的功能????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
我們假設將全球的網絡資源都放到一個總的虛擬的域之下,這個總域我們稱為根域即.域(點域)。在根域之下,劃分為多個二級域,這些域被稱為頂級域,頂級域是不允許企業或個人直接申請的,頂級域是由全球的網絡維護商按照國家、地區、行業等分配的,如:.cn.表示中國地區,.hk.表示香港,.org.表示國際組織,.com.表示工商企業的,.net.表示網絡提供商等等。因為所有域都在根域(即.域)之下,所以,一般書寫時我們可以把最后的.省略,如:.com?? .cn等?????????????????????????????????????????????????????????????????????????????????????????????作為企業或個人,只可以在頂級域下申請子域,申請到子域后即可在子域下指定自己的網絡層次了。如下圖:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ???????????????????????????????????????????????????????????????????????????????
-
命名相關概念
先來分析一下域名的格式,我們知道上網時在瀏覽器輸入域名后,瀏覽器會自動在域名前寫上http://字樣,即指定了通信協議,這種協議+地址的格式我們稱為url。
url??統一資源定位符,即協議+完整網絡路徑,如:http://www.baidu.com。
其實我們日常中常說的鏈接,專業稱謂就是url。如:我們會給朋友要的某網店鏈接,某電影的下載鏈接等,這些都是url。
全稱域名(FQDN)?其實我們日常中說的域名(如www.baidu.com),嚴格來講并不是標準的叫法。在專業的稱謂中,一個完整的網址應該稱為全稱域名,簡寫FQDN(英文單詞為全質量的域名)。而FQDN規定最多由255個字符組成。
域名? 標準定義中,域名的概念只是指所在域部分,如:baidu.com。
主機名(又稱NetBios名)?FQDN中的www部分稱為主機名部分。規定主機名最多16個字符,但最后一個字符固定為.(點),所以只有前15個字符可自定義。
小結,可見FQDN是由主機名+域名組成。
-
DNS解析原理
-
客戶端解析順序
-
Windows/Linux:本地hosts文件------DNS服務器
-
-
DNS支持的解析模式
-
正向解析: 客戶端拿著域名,請求DNS解析,獲取到ip
-
反向解析: 客戶端拿著ip,請求DNS解析,獲取到域名
-
-
DNS的解析過程
客戶機首先查看查找本地hosts文件,如果有則返回,否則進行下一步
客戶機查看本地緩存,是否存在本地的緩存中,如果有則直接返回,否則進行下一步。
將請求轉發給指向的DNS服務器。
查看域名是否本地解析,是則本地解析返回,否則進行下一步。
本地DNS服務器首先在緩存中查找,有則返回,無則進行下一步。
向全球13個根域服務器發起DNS請求,根域返回org域的地址列表。
使用某一個org域的IP地址,發起DNS請求,org域返回kernel域服務器地址列表。
使用某一個kernel域IP地址,發起DNS請求,kernel域返回www.kernel.org主機的IP地址,本地DNS服務收到后,返回給客戶機,并在本地DNS服務器保存一份。
-
遞歸:
-
發生在客戶機與指定的DNS服務器之間
-
返回的確定值
-
-
迭代:
-
發生在指定DNS服務器與后續DNS服務器之間
-
返回近似的值
-
DNS的相關配置
-
軟件包:bind
-
服務名:named
-
擴展命令:nslookup
-
擴展命令的軟件包:bind-utils
-
默認端口:
-
UDP:53端口,數據通信(域名解析)
-
TCP:53端口,數據同步(主從同步)
-
-
配置文件:
-
主配置文件:/etc/named.conf (服務運行的參數)
-
區域配置文件:/etc/named.rfc1912.zones (正反向區域定義信息)
-
數據配置文件:/var/named/ (主機名和IP的對應解析關系)
-
記錄類型:
| A: | 地址記錄,用來指定域名的IPv4地址的記錄 |
| CNAME: | 將域名指向另一個域名,再由另一個域名提供ip地址,就需要添加CNAME記錄 |
| TXT: | 可填寫任何東西,長度限制255。絕大多數的TXT記錄是用來做SPF的(反垃圾郵件) |
| NS: | 域名服務器記錄,如果需要把子域名交給其他DNS服務商解析,就需要添加NS記錄。 |
| AAAA: | 地址記錄,用來指定域名的IPv6地址的記錄 |
| MX?3: | 郵件交換記錄,如果需要設置郵箱,讓郵箱能收到郵件,就需要添加MX記錄。 |
DNS基本功能搭建(關防護、服務器+測試機)
服務器配置?# 安裝軟件bind$ yum -y install bind$ yum -y install bind-utils ?#安裝nslookup$ vim /etc/named.conf#監聽的連接服務器網卡:listen-on port 53 {any;}#監聽的客戶端的請求地址,如指定網段:20.20.20.x/24;allow-query {any;}#配置區域配置文件(注:備份文件、只留一個正向和反向配置塊)$ vim /etc/named.rfc1912.zones#正向記錄:zone "要解析成的域名,如hongfu.com" IN {type master;file "正向的數據配置文件名";allow-update {none;};}#反向記錄:zone "解析網段的倒序(如:30.168.192).in-addr.arpa" IN {type master;file "反向的數據配置文件名";allow-update {none;};}#配置數據文件$ cd /var/named/$ cp -a named.localhost 正向的數據配置文件名$ cp -a named.loopback 反向的數據配置文件名 $ vim 正向的數據配置文件名 ?#注:寫域名最后加上根域$TTL 1D@ ? ? ? IN SOA 要解析成的域名.(如hongfu.com.) rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.要解析成的域名. ? #配置dns服務器的域名dns ? ? A ? ? ? 192.168.66.74www A 192.168.66.74#配置正向解析記錄 DNS主服務器的IP$ vim 反向的數據配置文件名 ?#注:寫域名最后加上根域$TTL 1D@ ? ? ? IN SOA 要解析成的域名. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.要解析成的域名. ? #配置dns服務器的域名74 ? ? PTR ? ? dns.要解析成的域名. ? #配置反向解析記錄,只輸入ip最后一位#啟動dns服務$ systemctl start named 測試機配置# 測試機(服務器本機或其他機器)在網卡配置中添加DNS1$ vim /etc/sysconfig/network-scripts/ifcfg-ens33DNS1 = dns服務器ip$ systemctl restart network$ yum -y install bind-utils ?#安裝nslookup$ nslookup 要解析的域名# 確認物理機的DNS$ cat /etc/resolv.confDNS主從服務
DNS主從服務搭建(關防護、主服務器+從服務器+測試機)主服務器配置$ yum -y install bind$ vim /etc/named.conf#監聽的連接服務器網卡:listen-on port 53 {any;}#監聽的客戶端的請求地址,如指定網段:20.20.20.x/24;allow-query {any;}#配置區域配置文件(注:備份文件、只留一個正向和反向配置塊)$ vim /etc/named.rfc1912.zones#正向記錄:zone "要解析成的域名,如hongfu.com" IN {type master;file "正向的數據配置文件名";allow-transfer {從服務器IP;};}#反向記錄:zone "解析網段的倒序(如:30.168.192).in-addr.arpa" IN {type master;file "反向的數據配置文件名";allow-transfer {從服務器IP;};}$ cd /var/named#配置數據文件$ cd /var/named/$ cp -a named.localhost 正向的數據配置文件名$ cp -a named.loopback 反向的數據配置文件名 $ vim 正向的數據配置文件名 ?#注:寫域名最后加上根域$TTL 1D@ ? ? ? IN SOA 要解析成的域名.(如hongfu.com.) rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.要解析成的域名. ? #配置dns服務器的域名dns ? ? A ? ? ? 192.168.66.74www A 192.168.66.74#配置正向解析記錄 DNS主服務器的IP$ vim 反向的數據配置文件名 ?#注:寫域名最后加上根域$TTL 1D@ ? ? ? IN SOA 要解析成的域名. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.要解析成的域名. ? #配置dns服務器的域名67 ? ? PTR ? ? dns.要解析成的域名. ? #配置反向解析記錄,只輸入ip最后一位#啟動dns服務$ systemctl start named 從服務器配置$ yum -y install bind$ vim /etc/named.conflisten-on port 53 {any;}allow-query {any;}$ vim /etc/named.rfc1912.zones#正向記錄:zone "要解析成的域名" IN {type slave;masters { 主服務器ip; };file "slaves/正向的數據配置文件名";masterfile-format text;}#反向記錄:zone "解析網段的倒序.in-addr.arpa" IN {type slave;masters { 主服務器ip; };file "slaves/反向的數據配置文件名";masterfile-format text;}#無需配置數據文件,啟動服務自動同步到/var/named/slaves文件中,slaves文件中存在兩個數據文件就說明從服務器搭建好了 測試機# 安裝解析工具nslookup$ yum -y install bind-utils# 修改網卡配置,添加DNS1=從服務器IP$ vim /etc/sysconfig/network-scripts/ifcfg-ens33DNS1 = 從dns服務器ip$ nslookup 要解析的域名 設置主從服務器的實時同步# 主DNS服務上的主配置文件(/etc/named.conf)不需要更改# 在主DNS服務上添加實時同步的設置$ vim /etc/named.rfc1912.zones# 正向記錄:zone "要解析成的域名" IN {type master;file "正向的數據配置文件名";allow-transfer {從服務器IP};# 添加實時同步配置allow-update {從服務器IP};also-notify {從服務器IP};}# 反向記錄:zone "解析網段的倒序.in-addr.arpa" IN {type master;file "反向的數據配置文件名";allow-transfer {從服務器IP};# 添加實時同步配置allow-update {從服務器IP};also-notify {從服務器IP};}# 在主DNS服務上更改數據$ vim 正向的數據配置文件名$TTL 1D@ IN SOA 要解析成的域名.(如hongfu.com.) rname.invalid(1 ? ? ? ; serial#序列號每次數據修改都需要增加1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.要解析的域名. dns ? ? A ? ? ? 192.168.30.67www ? ? A ? ? ? 192.168.30.68 # 添加或修改一條數據# 重啟named服務$ systemctl restart named# 從服務器上不需要做任何修改,查看數據文件數據就被同步過來了# 客戶機上配置從服務器IP為DNS1,能正常解析出更改的域名DNS緩存服務
DNS緩存服務搭建(關防護、主服務器+從服務器+測試機)主服務器# 同主從實驗中的主服務器配置 緩存服務器# 安裝緩存軟件$ yum -y install dnsmasq# 配置緩存$ vim /etc/dnsmasq.confdomain=要解析的域名server=主dns服務器IPcache-size=15000# 啟動服務$ systemctl start dnsmasq 測試機# 修改網卡配置,添加DNS1=緩存服務器IP$ vim /etc/sysconfig/network-scripts/ifcfg-ens33DNS1 = 緩存dns服務器ip# 安裝解析工具nslookup$ yum -y install bind-utils# 關閉主服務器,仍能解析主服務器解析過的域名、但主配置了但沒解析過的緩存也不能解析$ nslookup 要解析的域名DNS智能解析(分離解析)
-
解析原理:智能DNS就是將對用戶發起的查詢進行判斷出是哪個運行商的用戶查詢,然后將請求轉發給相應的運營商IP處理,減少跨運營訪問的時間,提高訪問速度。
-
應用場景:一些網站為了讓用戶有更好的體驗、更快的解析速度,會把來自不同運營商的用戶解析成對應地域的服務器上,大大提升了訪問速度。
智能DNS搭建(關防護、雙網卡且DNS服務+內網測試機+外網測試機)
實驗環境DNS服務器:ens33(vmnet1):192.168.30.67ens34(vmnet2):192.168.88.75開啟路由轉發網站服務器:ens33(vmnet1):192.168.30.68ens34(vmnet2):192.168.88.76開啟路由轉發內網測試機:ens33(vmnet1):192.168.30.xx 網關和DNS1都設置為DNS服務器的內網IP(192.168.30.67)外網測試機:ens34(vmnet2):192.168.88.xx網關和DNS1都設置為DNS服務器的外網IP(192.168.88.75) 服務器配置# 按上面的實驗環境,配置相應的物理網卡和網卡信息?# 安裝DNS軟件包$ yum -y install bind# 修改主配置文件$ vim /etc/named.confview lan{match-clients{192.168.30.0/24;};zone "." IN {type hint;file "named.ca";}include "/etc/lan.zones";}view wan{match-clinets{any;};zone "." IN {type hint;file "named.ca";}include "/etc/wan.zones";}#include "/etc/named.rfc1912.zones"; # 注釋掉默認的區域配置文件?# 配置區域文件、配置同上$ cp -a /etc/named.rfc1912.zones /etc/lan.zones$ cp -a /etc/named.rfc1912.zones /etc/wan.zones$ vim /etc/lan.zoneszone "hongfu.com" IN {type master;file "hongfu.zheng.lan";allow-update { any; };};zone "30.168.192.in-addr.arpa" IN {type master;file "hongfu.fan.lan";allow-update { any; };};$ vim /etc/wan.zoneszone "hongfu.com" IN {type master;file "hongfu.zheng.wan";allow-update { any; };};zone "88.168.192.in-addr.arpa" IN {type master;file "hongfu.fan.wan";allow-update { any; };};?# 配置數據文件$ cd /var/named$ cp -a named.localhost hongfu.zheng.lan$ cp -a named.loopback hongfu.fan.lan$ cp -a named.localhost hongfu.zheng.wan$ cp -a named.loopback hongfu.fan.wan$ vim hongfu.zheng.lan$TTL 1D@ ? ? ? IN SOA hongfu.com. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.hongfu.com.www ? ? A ? ? ? 192.168.30.68dns ? ? A ? ? ? 192.168.30.67$ vim hongfu.fan.lan$TTL 1D@ ? ? ? IN SOA hongfu.com. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.hongfu.com.67 ? ? PTR ? ? dns.hongfu.com.68 ? ? PTR ? ? www.hongfu.com.$ vim hongfu.zheng.wan$TTL 1D@ ? ? ? IN SOA hongfu.com. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.hongfu.com.www ? ? A ? ? ? 192.168.88.76dns ? ? A ? ? ? 192.168.88.75$ vim hongfu.fan.wan$TTL 1D@ ? ? ? IN SOA hongfu.com. rname.invalid. (0 ? ? ? ; serial1D ? ? ; refresh1H ? ? ; retry1W ? ? ; expire3H ) ? ; minimumNS ? ? dns.hongfu.com.75 ? ? PTR ? ? dns.hongfu.com.76 ? ? PTR ? ? www.hongfu.com.?# 重啟服務$ systemctl restart named?# 開啟路由轉發# CentOS7:$ vim /usr/lib/sysctl.d/50-default.confnet.ipv4.ip_forward=1# 驗證開啟成功$ grep ip_forward /usr/lib/sysctl.d/50-default.conf$ reboot?# CentOS6:$ vim /etc/sysctl.confnet.ipv4.ip_forward=1# 驗證開啟成功$ sysctl -p ? 網站服務器# 按上面的實驗環境,配置相應的物理網卡和網卡信息?#:$ yum -y install httpd$ systemctl start httpd$ ss -antp | grep :80$ cd /var/www/html ? # 寫測試界面echo "test pages~" > index.html$ curl localhost ? ?# 模擬瀏覽器訪問網站?# 開啟路由轉發# CentOS7:$ vim /usr/lib/sysctl.d/50-default.confnet.ipv4.ip_forward=1# 驗證開啟成功$ grep ip_forward /usr/lib/sysctl.d/50-default.conf$ reboot或:# CentOS6:$ vim /etc/sysctl.confnet.ipv4.ip_forward=1# 驗證開啟成功$ sysctl -p ? 內網測試機# 按上面的實驗環境,配置相應的物理網卡(vmnet1)和網卡信息?# 配置網卡信息$ vim /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.30.xxGATEWAY=192.168.30.67DNS1=192.168.30.67$ service network restart?# 安裝解析工具$ yum -y install bind-utils# 測試DNS解析功能$ nslookup 配置的域名?# 測試網頁功能:$ curl 網站服務器域名 外網測試機# 按上面的實驗環境,配置相應的物理網卡(vmnet2)和網卡信息?# 配置網卡信息$ vim /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.88.xxGATEWAY=192.168.88.75DNS1=192.168.88.75$ service network restart?# 安裝解析工具$ yum -y install bind-utils# 測試DNS解析功能$ nslookup 配置的域名?# 測試網頁功能$ curl 網站服務器域名總結
- 上一篇: 关于Mac下载brew报curl: (7
- 下一篇: 使用的设备标识号已超出本地系统范围 VM