DNS域名解析
-
-
- 什麼是DNS
-
- 基本使用
- DHCP機制
- 域名層級關系
- DNS解析域名過程---找人問路時指指路不帶路的過程
- DNS記錄類型:
- 其他DNS工具
- 手動清理本地DNS緩存方法
-
-
- MacOS
- Windows
- Linux
-
-
什麼是DNS
Domain Name System的縮寫,就是域名解析系統,作用就是根據域名網址解析出對應的IP位址
-
基本使用
- 查詢DNS:dig url/dig +short url
- 分級查詢:dig +trace url
-
DHCP機制
DNS伺服器的IP位址,是由網管動态配置設定,儲存在/etc/resolv.conf中,---->nameserver:10.226.146.254
域名層級關系
DNS中的域名都是用句點來分割,代表了不同層次之間的界限。越靠後表示層次越高。
主機名.初級域名.頂級域名.根域名(baike.baidu.com.root)
host.sld.tld.root
www.example.com.root
root根域名一般情況下都省略了。全球總共才14個,ipv6下中國才有根
DNS解析域名過程—找人問路時指指路不帶路的過程
以通路 www.163.com 這個域名為例,來看一看當你通路 www.163.com 時,會發生哪些事:
- 浏覽器先查找本地 DNS 緩存,有則傳回,沒有則進入下一步
- 檢視本地 hosts 檔案有沒有相應的映射記錄,有則傳回,沒有則進入下一步
- 向本地 DNS 伺服器(一般都是你的網絡接入伺服器商提供,三大營運商)發送請求進行查詢,本地DNS伺服器收到請求後,會先查下自己的緩存記錄,如果查到了直接傳回就結束了,如果沒有查到,本地DNS伺服器就會向DNS的根域名伺服器發起查詢請求:請問老大,www.163.com 的ip是啥?
- 根域名伺服器收到請求後,看到這是個 .com 的域名,就回信說:這個域名是由 .com 老弟管理的,你去問他好了,這是.com老弟的聯系方式(ip1)
- 本地 DNS 伺服器接收到回信後,照着老大哥給的聯系方式(ip1),馬上給 .com 這個頂級域名伺服器發起請求:請問 .com 大大,www.163.com 的ip 是啥?
- .com 頂級域名伺服器接收到請求後,看到這是 163.com 的域名,就回信說:這個域名是 .163.com 老弟管理的,你就去問他就行了,這是他的聯系方式(ip2)
- 本地 DNS 伺服器接收到回信後,按照前輩的指引(ip2),又向 .163.com 這個權威域名伺服器發起請求:請問 163.com 大大,請問 www.163.com 的ip是啥?
- 163.com 權威域名伺服器接收到請求後,确認了是自己管理的域名,馬上查了下自己的小本本,把 www.163.com 的ip告訴了 本地DNS伺服器。
- 本地DNS伺服器接收到回信後,非常地開心,這下總算拿到了www.163.com的ip了,馬上把這個消息告訴了要求查詢的客戶(就是你的電腦)。由于這個過程比較漫長,本地DNS伺服器為了節省時間,也為了盡量不去打擾各位老大哥,就把這個查詢結果偷偷地記在了自己的小本本上,友善下次有人來查詢時,可以快速回應。
-
總結起來就是三句話:
從"根域名伺服器"查到"頂級域名伺服器"的NS記錄和A記錄(IP位址)
從"頂級域名伺服器"查到"次級域名伺服器"的NS記錄和A記錄(IP位址)
從"次級域名伺服器"查出"主機名"的IP位址
DNS記錄類型:
A:位址記錄(Address),傳回域名指向的IPV4位址。
NS:域名伺服器記錄(Name Server),傳回儲存下一級域名資訊的伺服器位址。該記錄隻能設定為域名,不能設定為IP位址。
MX:郵件記錄(Mail eXchange),傳回接收電子郵件的伺服器位址。
CNAME:規範名稱記錄(Canonical Name),傳回另一個域名,即目前查詢的域名是另一個域名的跳轉
AAAA:将域名指向一個IPV6位址
PTR:逆向查詢記錄(Pointer Record),隻用于從IP位址查詢域名。
其他DNS工具
host url -->可以看作dig指令的簡化版本,傳回目前請求域名的各種記錄
nslookup url
nslookup url 114.114.114.114 -->指定公網的域名伺服器進行DNS查詢
whois url–>檢視域名的注冊情況
手動清理本地DNS緩存方法
MacOS
$ sudo dscacheutil -flushcache
$ sudo killall -HUP mDNSResponder
Windows
$ ipconfig /flushdns
Linux
#使用NSCD的DNS緩存
$ sudo /etc/init.d/nscd restart
#伺服器或者路由器使用DNSMASQ
$ sudo dnsmasq restart