在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

5種最常見的DNS故障診斷及問題處理方法

dyquk4xk2p3d ? 來源:云原生技術愛好者社區 ? 2023-07-10 10:53 ? 次閱讀

本文轉載自:「云原生技術愛好者社區」

原文:https://tinyurl.com/6c3anmaj,版權歸原作者所有

1 DNS 基礎知識

互聯網基于 TCP/IP 協議。為了方便管理網絡內的主機,整個互聯網分為若干個域 (domain),每 個域又可以再分為若干個子域,例如,.com,.org,.edu 都是頂級域,而 google.com 是.com 下面的子域。

網絡中的任意一臺主機(host)都會屬于某個域,并且有自己的名字,稱為主機名( hostname)。例如 example.com 就是.com 域中一臺主機名為 example.com(或 example,hostname 和 domain name 的區別,見這里 )的主機。

域名/主機名是為了方便人記憶,而機器之間通信最終用的還是 IP 地址,因此需要一個將主 機名(域名)轉換成 IP 地址的服務。域名服務系統(DNS, domain name system)做的就是 這個事情,對應的服務器稱為域名服務器(Domain Name Server)。

例如,當通過瀏覽器訪問 example.com,瀏覽器會首先訪問 DNS 服務器,查找 example.com 對應的 IP 地址,然后和這個 IP 建立 TCP 連接,接下來才發起 HTTP 請求。

一個域名可以對應一個 IP 地址,也可以對應多個。對于后者,DNS 服務算法會從中選擇一個 地址返回。大部分網絡服務為了實現高可用,都是對應多個地址,我們后面會看到, baidu.com 就對應多個 IP。

有一些場景會導致訪問 DNS 服務不穩定,例如 DNS 服務器的設置有問題、網絡有丟包、主機 DNS 配置錯誤等等。我們接下來查看幾種 case。

2 準備測試環境

為方便大家跟著上手練習,本文將搭建一個容器環境。

Pull Docker 鏡像:

$sudodockerpullalpine:3.8

運行容器,注意這里一定要帶--privileged 參數 [2],否則后面的部分 tc 命令無法執行:

$sudodockerrun-d--privileged--namectn-1alpine:3.8sleep3600d
$sudodockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
233bc36bde4balpine:3.8"sleep3600d"1minutesagoUp14minutesctn-1

進入容器:

$sudodockerexec-itctn-1sh

查看容器網絡信息

/#ifconfig
eth0Linkencap:EthernetHWaddr02AC00:09
inetaddr:172.17.0.9Bcast:0.0.0.0Mask:255.255.0.0

3 DNS 配置

3.1 查看 DNS 配置

Linux 上的 DNS 配置在/etc/resolv.conf 里面。我們先來查看容器的配置:

/#cat/etc/resolv.conf
#Dynamicresolv.conf(5)fileforglibcresolver(3)generatedbyresolvconf(8)
#DONOTEDITTHISFILEBYHAND--YOURCHANGESWILLBEOVERWRITTEN
nameserver192.168.1.11
nameserver192.168.1.12

這其實是繼承了宿主機的 DNS 配置,在宿主機上執行 cat /etc/resolv.conf 會看到一樣的 結果。

3.2 修改 DNS 配置

可以通過修改/etc/resolv.conf 里面的 nameserver 來配置自己想用的 DNS 服務器。例如內網環境可能都會使用自己的 DNS 服務器,因為它除了 提供內網域名解析之外,公網域名解析也會比較快(相比于網絡供應商的公網 DNS 服務器) 。

4 DNS 問題排查

本節模擬幾種導致 DNS 查詢變慢的場景,如果在實際環境中遇到類似現象,可以考慮往這些 方向排查。

4.1 機器未配置 DNS 導致域名查找失敗

現象:網絡是通的(例如 ping IP 通),但是 DNS 查詢總是失敗

可能的原因:機器沒有配置 DNS 服務器

解決辦法:修改/etc/resolv.conf,給機器配置合適的 DNS 服務器 有時新啟動的機器(不管是物理機、虛擬機還是容器)沒有設置 DNS,導致訪問域名不通。我們來復現一下。

在正常的容器里用 nslookup 工具查看域名對應的 IP 地址:

/#nslookupexample.com

Name:example.com
Address1:93.184.216.34
Address2:260622024825c8:1946

可以看到,我們獲取到了該域名一個 IPv4 地址和一個 IPv6 地址。

將/etc/resolv.conf 里的 DNS 服務器列表用#注釋掉,模擬沒有配置 DNS 服務器的場景。

再次測試:

/#nslookupexample.com

nslookup:can'tresolve'example.com':Tryagain

所以遇到這種問題,可以先去排查/etc/resolv.conf 里面是否配置了 DNS 服務器。

4.2 DNS 服務太慢

現象:DNS 查詢太慢

可能的原因:配置的 DNS 服務器不合理

解決辦法:修改/etc/resolv.conf,配置合適的 DNS 服務器

每個公司一般都有自維護的 DNS 服務器,不僅用來解析內網 DNS,而且可以加速解析公網域名 。

dig 是另外一個功能更強大的 DNS 查詢工具,安裝:

/#apkupdate&&apkaddbind-tools

首先查看使用內網 DNS,查詢域名的延遲:

/#digexample.com
...
example.com.15814INA93.184.216.34

;;Querytime:0msec
;;SERVER:192.168.1.11#53(192.168.1.11)

可以看到非常快,在 1ms 以內。

然后我們測試如果使用 Google 的公網 DNS 服務器 8.8.8.8 [1],延遲會是多少。

修改/etc/resolv.conf,將其他 nameserver 注釋掉,添加一行 nameserver 8.8.8.8。

再次測試:

/#digexample.com
...
example.com.15814INA93.184.216.34

;;Querytime:150msec
;;SERVER:8.8.8.8#53(8.8.8.8)

延遲變成了 150ms,比原來大了 150 多倍。

因此,對于 DNS 查詢特別慢的場景,首先要查看配置的 DNS 服務器是否合理。

4.3 hardcode /etc/hosts 導致跳過 DNS 查詢

現象:某域名訪問太慢、某域名總是指向相同 IP(多 IP 情況下)、特定機器不可訪問 某域名等等

可能的原因:/etc/hosts 有 hardcode 域名及 IP

解決辦法:修改/etc/hosts

前面提到,大部分公網域名都對應多個 IP 地址,因此每次 DNS 查詢拿到的 IP 地址都可能不一 樣,我們用 ping 來測試一下:

/#pingbaidu.com
PINGbaidu.com(220.181.57.216):56databytes
64bytesfrom220.181.57.216:seq=0ttl=45time=26.895ms
64bytesfrom220.181.57.216:seq=1ttl=45time=26.701ms
^C
/#pingbaidu.com
PINGbaidu.com(123.125.115.110):56databytes
64bytesfrom123.125.115.110:seq=0ttl=43time=27.587ms
64bytesfrom123.125.115.110:seq=1ttl=43time=27.757ms
^C

可以看到,兩次 ping 測試(內部首先查詢 baidu.com 對應的 IP 地址)拿到的 IP 地址是不一樣 的。用 nslookup 可以看到它們都是 baidu.com 對應的 IP 地址:

/#nslookupbaidu.com
Name:baidu.com
Address:220.181.57.216
Name:baidu.com
Address:123.125.115.110

/etc/hosts 里面可以直接 harcode 一個域名對應的 IP 地址,這會導致機器跳過 DNS 查詢,直接拿這個 IP 作 為該域名的 IP。我們來驗證一下。

修改/etc/hosts,添加一行 123.125.115.110 baidu.com,再次 ping 測試

/#pingbaidu.com
PINGbaidu.com(123.125.115.110):56databytes
64bytesfrom123.125.115.110:seq=0ttl=43time=27.861ms
^C
---baidu.compingstatistics---
1packetstransmitted,1packetsreceived,0%packetloss
round-tripmin/avg/max=27.861/27.861/27.861ms
/#pingbaidu.com
PINGbaidu.com(123.125.115.110):56databytes
64bytesfrom123.125.115.110:seq=0ttl=43time=27.614ms
^C

這是不管執行多少次,baidu.com 對應的 IP 地址都不會變了。而實際上,這個 IP 地址并不一定是最優的 IP 地址,甚至有可能這 個 IP 不可用,導致訪問 baidu.com 失敗。因此,實際中要極力避免在/etc/hosts 中 hardcode。

4.4 DNS 查詢不穩定

現象:DNS 查詢不穩定,時快時慢

可能的原因:機器上有 tc 或 iptables 規則,導致到 DNS 服務器的 packet 變慢或丟失

解決辦法:修改或刪除 tc/iptables 規則

我們用 tc 來模擬網絡延遲:

/#apkaddiproute2

首先查看有沒有 tc 規則:

/#tc-pqdisclsdeveth0

默認沒有任何規則。

然后我們加一條:每個 packet 延遲 600ms:

/#tcqdiscadddeveth0rootnetemdelay600ms

/#tc-pqdisclsdeveth0
/#qdiscnetem8001:rootrefcnt2limit1000delay600.0ms

測試:

/#digexample.com
...
example.com.15814INA93.184.216.34

;;Querytime:600msec
;;SERVER:192.168.1.11#53(192.168.1.11)

可以看到,DNS 查詢變成了 600ms。

這里我們測試的是固定延遲,這種問題很容易發現。我們還可以測試隨機延遲,或者按 比例延遲等 [2]:

/#tcqdiscchangedeveth0rootnetemdelay600ms10ms25%
/#tcqdiscchangedeveth0rootnetemdelay600ms20msdistributionnormal

此類規則會導致 DNS 查詢速度更有隨機性。

最后刪除 tc 規則:

/#tcqdiscdeldeveth0root

iptables 規則也會導致類似的問題。

很多軟件在運行之后,會在宿主機上添加 tc 或 iptables 規則,例如 OpenStack,K8S 等等 。因此遇到這種隨機延遲問題,首先可以查看機器上是否有 tc 或 iptables 規則。

4.5 DNS 反向查詢不穩定

線上遇到過這樣一個問題:從一臺機器 ping 一個內網域名,每個 ping 包看起來都會卡 5 ~ 30s 不等,但是 CTL-C 關閉 ping 之后,打印出來的統計信息里,既沒有丟包,ping 的延遲也很低 (毫秒級),這就很奇怪。接下來:

dig,很快,毫秒級,說明 DNS 查詢沒有問題

dig 能看到域名對應的 IP,直接 ping 這個 IP,發現是沒有卡頓的

仍然 ping 域名,用 tcpdump 抓包,tcpdump -i eth0 hostand icmp,發現 ping 包都是立即響應的,印證了統計信息里,ping 延遲很低的事實

根據以上信息,說明 ping 卡頓的問題出在這臺機器,而且應該就是 ping 程序本身在做什么耗 時的操作。繼續:

仍然 ping 域名,同時,用 ltrace -p跟蹤 ping 進程,發現卡在一個叫 gethostbyaddr()的函數

查閱文檔,發現這個函數是根據 IP 反向查詢 hostname,需要和 DNS 交互

到這里,基本確定了是 DNS 服務器反向查詢的問題,我們用另外幾個命令行工具驗證一下, 以下三個命令都是根據 IP 反查 hostname:

nslookup

host

dig -x

果然,以上三個命令都會卡住。修改/etc/resolv.conf,換一個 DNS 服務器之后,問題 消失了。接下來,就去查 DNS 服務器的問題吧。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    595

    瀏覽量

    27456
  • DNS
    DNS
    +關注

    關注

    0

    文章

    219

    瀏覽量

    19891
  • TCPIP協議
    +關注

    關注

    0

    文章

    35

    瀏覽量

    11981
  • 虛擬機
    +關注

    關注

    1

    文章

    919

    瀏覽量

    28334
  • CTl
    CTl
    +關注

    關注

    0

    文章

    6

    瀏覽量

    7447

原文標題:5 種最常見的 DNS 故障診斷及問題處理方法

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LabVIEW在齒輪箱故障診斷中的應用

    LabVIEW強大數據處理和仿真能力,開發了一個先進的齒輪箱故障診斷系統。該系統主要采用小波包的獨立分量分析(ICA)方法,有效地提取齒輪箱的故障特征頻段。 在
    發表于 12-25 18:55

    分形特征的模擬電路故障診斷方法

    針對模擬電路中存在的非線性問題,提出一以模擬電路分形特征為輸入量的故障診斷方法。通過對多測試分量數據進行分形特征提取,輸入神經網絡建立信息融合中心融合處理各分形特征量,利用多源性互補
    發表于 05-06 08:57

    電子電路故障診斷處理

    針對不同電力電子裝置進行了研究,從故障診斷的特點與作用出發,利用科學的診斷方法,對其進行了有效的分析與處理,以此確保電力電子裝置的正常運行,保證社會生產與社會活動的持續進行。
    發表于 04-24 13:39

    電子電路故障診斷處理

    針對不同電力電子裝置進行了研究,從故障診斷的特點與作用出發,利用科學的診斷方法,對其進行了有效的分析與處理,以此確保電力電子裝置的正常運行,保證社會生產與社會活動的持續進行。
    發表于 04-25 16:55

    模擬電路故障診斷中的特征提取方法

    析所具有的時頻局部化特性、良好的去噪能力,無需系統模型結構的優勢使之成為分析和處理此類信號的有效工具,也是目前在模擬電路故障診斷領域使用最多的一特征提取方法,對模擬電路中的軟、硬
    發表于 12-09 18:15

    【下載】《模擬電路故障診斷

    檢修的專著。作者Bob Pease是模擬電路設計界的傳奇人物。在多年的實際工作中,他總結了一系列的技術與方法,大大提高了模擬電路診斷與檢修的速度,把通常讓人頭疼的問題變得簡單有趣。《模擬電路故障診斷
    發表于 10-20 17:56

    【轉】電力電子電路故障診斷方法

    方法不再適用,只能以輸出波形來診斷電力電子電路是否有故障及有何種故障故障診斷的關鍵是提取故障
    發表于 03-06 20:35

    傳感器的故障分類與診斷方法

    方法和不依賴于數學模型的方法。 1、基于解析數學模型的方法根據殘差產生的形式不同,基于解析數學模型的方法可以進一步分為:參數估計法、狀態估計法和等價空間法。 基于模型的
    發表于 10-30 15:57

    基于電流測試的混合電路故障診斷

      摘要:在運用小波神經網絡進行混合電路故障診斷的過程中,測試參數的選取至關重要。研究了一基于電流測試的故障診斷。該方法即通過PSPICE模擬電路的靜態及動態電流信息,再通過小波神經
    發表于 11-05 15:50

    常見變頻器故障診斷處理

    影響輸出電壓(即頻率)的變化。修改該參數后故障消除。四、綜述變頻器的應用日趨廣泛,其日常維護管理,故障診斷處理會經常遇到。本文對通用變頻器的故障診斷
    發表于 10-17 07:29

    工業鍋爐故障診斷的改進數據挖掘方法

    針對工業鍋爐的常見故障,提出了一基于數據挖掘方法的鍋爐故障診斷技術。通過建立一個智能化的數據挖掘工具,直接從大量實時數據中獲取故障診斷知識
    發表于 01-11 14:28 ?13次下載

    模擬故障診斷中的容差處理方法

    基于斜率故障模型的故障診斷方法較好地解決了線性電路的軟故障和硬故障診斷問題,是一很有價值的
    發表于 06-13 17:06 ?50次下載
    模擬<b class='flag-5'>故障診斷</b>中的容差<b class='flag-5'>處理</b><b class='flag-5'>方法</b>

    模擬電路故障診斷方法

    為了解決模擬電路故障診斷復雜多樣難于辨識的問題, 有效提高分類的準確度, 提出了一模擬電路故障診斷的新方法
    發表于 03-30 16:10 ?55次下載
    一<b class='flag-5'>種</b>模擬電路<b class='flag-5'>故障診斷</b><b class='flag-5'>方法</b>

    數控系統常見故障診斷與維修方法有哪些

    本文首先介紹了數控系統的常見故障,其次介紹了數控系統常見故障及造成原因,最后介紹了數控系統故障診斷常用的8種方法
    發表于 11-04 10:23 ?9661次閱讀

    晶閘管故障診斷方法

    晶閘管作為一重要的電力電子器件,在電力控制系統、工業電機驅動、可再生能源發電等領域廣泛應用。然而,晶閘管在使用過程中可能會遇到各種故障,影響其正常工作。以下是對晶閘管故障診斷方法的詳
    的頭像 發表于 08-27 11:31 ?1072次閱讀
    主站蜘蛛池模板: 免费边摸边吃奶边叫床视频gif| 啪啪色视频| 午夜视频www| 久久久久久久蜜桃| 久久夜色精品| 国产亚洲人成网站天堂岛| 丰满寡妇一级毛片| 毛片的网站| 久久涩精品| 成人a在线| 天天干天天插天天操| 成年人黄色免费网站| 一级看片免费视频囗交| 色网综合| 视频在线高清完整免费观看| 中文字幕第一区| 中国videos偷窥| 五月婷婷色综合| 欧美香蕉视频| 国产精品美女在线| 特黄一级视频| 欧美性猛交xxxx黑人喷水| 成人爽a毛片在线视频网站| 丁香欧美| 最新合集丨新片速递| 色婷婷一区| 黄 色 片成 人免费观看| 在线免费色视频| 好吊色视频988gao在线观看| 岛国大片在线播放| 在线观看国产精美视频| 色播六月| 国产或人精品日本亚洲77美色| 天天添| 搡女人视频免费| 办公室桌震娇喘视频大全在线| 色噜噜成人综合网站| 国产三级三级三级| 热久久影院| 国产看片视频| 男男gay污小黄文|