DNS通訊過程簡介

網(wǎng)上有很多文章講解DNS原理赐劣,很多寫的很不錯(cuò),但是有些太過宏觀哩都,有些又過于細(xì)節(jié)魁兼。但作為一個(gè)碼農(nóng),不想止于宏觀概念漠嵌,又不想深陷實(shí)現(xiàn)細(xì)節(jié)咐汞,就想知道DNS通訊的過程盖呼。。化撕。如果你也是一樣的想法几晤,你就來對了地方。

DNS通訊過程概要

首先請看一個(gè)典型的DNS通訊示意圖(以訪問www.qq.com為例)

實(shí)際的DNS通訊過程非常復(fù)雜植阴,比如上述⑦蟹瘾,因?yàn)橛蠧DN加速可能有多次NS查詢以返回最佳IP,又比如有DNS服務(wù)器為了安全會有反向查詢(從IP查名稱)掠手,還有DNSSEC相關(guān)查詢憾朴,上圖為了說明故意簡化。

名詞解釋

user process:請求通過名稱得到IP地址訪問網(wǎng)絡(luò)的用戶程序惨撇,例如IE伊脓。

DNS Resolver:接受DNS查詢,代理用戶進(jìn)程獲取域名對應(yīng)的IP地址魁衙”ㄇ唬可以作為單獨(dú)進(jìn)程,也可作為用戶進(jìn)程的一部分剖淀。根據(jù)功能不同纯蛾,又可分為Stub Server和Full-Service Resolver.

Stub Resolver:接受DNS查詢,有緩存功能的纵隔,先在緩存查找翻诉,若命中直接返回,若沒有命中捌刮,直接轉(zhuǎn)發(fā)查詢請求到Full-Service Resolver碰煌。如果沒有緩存功能,就直接轉(zhuǎn)發(fā)請求绅作。Full-Service Resolver的地址是直接配置的芦圾。如下圖

10開頭的是局域網(wǎng)DNS服務(wù)器,另外2個(gè)是運(yùn)營商提供的DNS服務(wù)器(冗余備份作用)俄认,實(shí)際上只需要保留10開頭的那個(gè)个少。另外完全可以自己指定比如8.8.8.8,還不用接受GW的域名審查眯杏。

Full-Service Resolver:接受DNS查詢夜焦,先在緩存查找,若命中直接返回岂贩,若沒有命中茫经,就開始遞歸查詢Authority Name Server(權(quán)威名稱服務(wù)器),直到查詢到目標(biāo)地址或者超時(shí),并且緩存查詢結(jié)果。遞歸查詢(Recursive Query)的起點(diǎn)根服務(wù)器(13臺)的IP地址卸伞,是提前配置在服務(wù)器上褥紫。另外,還可以作為本地網(wǎng)絡(luò)的權(quán)威名稱服務(wù)器瞪慧,自定義內(nèi)部網(wǎng)絡(luò)的名稱和IP映射髓考。

Authority Name Server:接受DNS查詢,如果存在查詢請求的答案則直接返回答案弃酌;如果是子域名查詢氨菇,則返回子域名名稱服務(wù)器地址;否則妓湘,直接拒絕查蓉。

驗(yàn)證一下

準(zhǔn)備工作

首先在Ubuntu上安裝bind9(bind9是功能全面的DNS服務(wù)器,通過配置可以作為Full-Service Resolver或者Authority Name Server)榜贴。

安裝命令如下:

sudo apt install bind9

更改配置

sudo vi /etc/bind/named.conf.options

作為Full-Service Resolver

配置文件如下


options {

forwarders {

8.8.8.8;//如果沒有命中緩存豌研,則轉(zhuǎn)發(fā)查詢請求到8.8.8.8,那么8.8.8.8充當(dāng)Full-Service Resolver(由此可知DNS查詢可以轉(zhuǎn)發(fā)請求唬党,形成查詢處理鏈)鹃共。如果沒有配置轉(zhuǎn)發(fā),開始遞歸查詢驶拱,如示意圖所示霜浴。

};

dnssec-validation no;

auth-nxdomain no;? ? # conform to RFC1035

recursion yes;//允許遞歸查詢,否則只能充當(dāng)權(quán)威名稱服務(wù)器蓝纲,而權(quán)威名稱服務(wù)器只返回自己管轄范圍的主機(jī)或者子域名查詢請求阴孟,其他直接拒絕。

};

啟動bind9

sudo systemctl start bind9

驗(yàn)證是否啟動成功

sudo systemctl status bind9

在windows(192.168.2.100)上税迷,安裝wireshark(免費(fèi)永丝,去baidu找一下),并啟動監(jiān)聽箭养。

在Ubuntu(192.168.2.106)上慕嚷,輸入下列命令,啟動DNS通訊監(jiān)控

sudo tcpdump -li any 'udp port 53'

在windows命令行輸入

nslookup - 192.168.2.106

為了簡化通訊露懒,接著輸入

set retry=1

set type=A

開始查詢闯冷,接著輸入

www.qq.com

wireshark在windows上監(jiān)控如下

只有2個(gè)包通訊,一個(gè)請求砂心,一個(gè)應(yīng)答

Ubuntu監(jiān)控如下

查詢請求轉(zhuǎn)發(fā)給8.8.8.8(google-public-dns)懈词,接收應(yīng)答并緩存,然后轉(zhuǎn)發(fā)給DNS查詢客戶端(上述windows)

在windows上再次輸入

www.qq.com

Ubuntu上監(jiān)控如下

有緩存辩诞,不再轉(zhuǎn)發(fā)坎弯,直接返回緩存結(jié)果

作為權(quán)威名稱服務(wù)器

更改配置文件如下

sudo vi /etc/bind/named.conf.options

options {

forwarders {

8.8.8.8;//recursion no的情況下轉(zhuǎn)發(fā)無效

};

dnssec-validation no;

auth-nxdomain no;? ? # conform to RFC1035

recursion no;

};

編輯本地zone文件

sudo vi /etc/bind/named.conf.local

添加以下內(nèi)容

zone "my.net" IN {

type master;

file "/etc/bind/db.mynet";

};

添加mynet的配置文件

sudo vi /etc/bind/db.mynet

$TTL 7200

@ IN SOA ns admin (

2017060909

3600

900

604800

86400

)

@? ? ? ? ? ? IN NS ns

ns IN A? 10.100.99.195

dav IN A 10.100.99.195

www IN A 10.100.99.195

simon IN A? 10.100.99.221

重啟bind9

sudo systemctl restart bind9

sudo systemctl status bind9

在windows上輸入以下命令

nslookup - 192.168.2.106

set retry=1

set type=A

www.qq.com

wireshark監(jiān)控如下


只作為名稱服務(wù)器,對于其他域的查詢直接拒絕

Ubuntu監(jiān)控如下


只作為名稱服務(wù)器,對于其他域的查詢直接拒絕

作為Full-Service Resolver抠忘,但不設(shè)置轉(zhuǎn)發(fā)的情形

沒有做撩炊。。崎脉。

還有更多的pattern拧咳,請各位自己去試驗(yàn)啦。

總結(jié)

通過搭建DNS服務(wù)器以及包監(jiān)控工具囚灼,驗(yàn)證了本文開始部分的DNS通訊示意圖骆膝。實(shí)際的DNS通訊遠(yuǎn)比上述復(fù)雜。特別是DNS是明文通訊灶体,為了確保DNS通訊安全阅签,防止攔截,劫持蝎抽,釣魚政钟,DNS通訊規(guī)范引入DNSSEC,一種類似數(shù)字簽名的技術(shù)來確保DNS通訊安全樟结。有興趣的讀者养交,可以繼續(xù)調(diào)查。

參考

http://www.ruanyifeng.com/blog/2016/06/dns.html

http://www.ietf.org/rfc/rfc1123.txt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓢宦,一起剝皮案震驚了整個(gè)濱河市层坠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刁笙,老刑警劉巖破花,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疲吸,居然都是意外死亡座每,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門摘悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峭梳,“玉大人,你說我怎么就攤上這事蹂喻〈型郑” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵口四,是天一觀的道長孵运。 經(jīng)常有香客問我,道長蔓彩,這世上最難降的妖魔是什么治笨? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任驳概,我火速辦了婚禮,結(jié)果婚禮上旷赖,老公的妹妹穿的比我還像新娘顺又。我一直安慰自己,他們只是感情好等孵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布稚照。 她就那樣靜靜地躺著,像睡著了一般俯萌。 火紅的嫁衣襯著肌膚如雪锐锣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天绳瘟,我揣著相機(jī)與錄音雕憔,去河邊找鬼。 笑死糖声,一個(gè)胖子當(dāng)著我的面吹牛斤彼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蘸泻,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼琉苇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悦施?” 一聲冷哼從身側(cè)響起并扇,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抡诞,沒想到半個(gè)月后穷蛹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昼汗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年肴熏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷窒。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛙吏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞋吉,到底是詐尸還是另有隱情鸦做,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布谓着,位于F島的核電站泼诱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漆魔。R本人自食惡果不足惜坷檩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望改抡。 院中可真熱鬧矢炼,春花似錦、人聲如沸阿纤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欠拾。三九已至胰锌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藐窄,已是汗流浹背资昧。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荆忍,地道東北人格带。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像刹枉,于是被迫代替她去往敵國和親叽唱。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理微宝,服務(wù)發(fā)現(xiàn)棺亭,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 2,867評論 0 7
  • 目錄: 一些基本概念主機(jī)名DNS名稱解析DNS 解析的后端存儲名稱解析總結(jié) 大規(guī)模域名解析的體系架構(gòu)DNS 解析需...
    C86guli閱讀 12,477評論 3 34
  • 14.1 引言 域名系統(tǒng)(DNS)是一種用于TCP/IP應(yīng)用程序的分布式數(shù)據(jù)庫蟋软,它提供主機(jī)名字和IP地址之間的轉(zhuǎn)換...
    張芳濤閱讀 1,874評論 0 8
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,135評論 2 34