使用nsswitch控制linux dns解析順序


參考:1、DNS原理入門參考:http://www.ruanyifeng.com/blog/2016/06/dns.html

2、http://cn.linux.vbird.org/linux_server/0350dns.php

一、

域名解析與以下四個文件有關:

/etc/hosts

/etc/host.conf 

/etc/resolv.conf

/etc/nsswitch.conf

還有

/etc/hosts.allow 

/etc/hosts.deny

其中nsswitch.conf與系統獲取解析的順序有關

  nsswitch全稱為: network service switch,其是一個通用框架,是各種類型存儲交互的公共實現,實現名稱解析服務
  例如: 用戶名到ID,或者ID到用戶名,再或者IP到域名的查找方式。nsswitch加載了各存儲的api接口,並以模塊方式裝載進nsswitch中,當程序發起nsswitch的api調用時,nswitch會自動完成到各存儲中查找內容
  目前觀察到的情況是,當nscd服務關閉時,nsswitch可以控制dns(/etc/resolv.conf)和files(/etc/hosts)的解析順序,順序考前的優先,一般配置順序是:hosts:     files dns。但是當開啟nscd服務之后,不論nsswitch怎么配置,都是nscd緩存優先。nscd緩存的數據庫文件位置:/var/db/nscd/hosts
  
# more /etc/nsswitch.conf | grep hosts
# hosts:     db files nisplus nis dns
# hosts:      dns files db
hosts:      dns db files

hosts dns #只使用/etc/resolv.conf查詢,不使用/etc/hosts

hosts files #只使用/etc/hosts查詢

 二、getent命令

從nisswitch庫中查找記錄:
 getent hosts www.baidu.com

三、DNS 使用的 port number

好了,既然 DNS 系統使用的是網絡的查詢,那么自然需要有監聽的 port 啰!沒錯!很合理!那么 DNS 使用的是那一個 port 呢?那就是 53 這個 port 啦!你可以到你的 Linux 底下的 /etc/services 這個檔案看看!搜尋一下 domain 這個關鍵詞,就可以查到 53 這個 port 啦!

但是這里需要跟大家報告的是,通常 DNS 查詢的時候,是以 udp 這個較快速的數據傳輸協議來查詢的, 但是萬一沒有辦法查詢到完整的信息時,就會再次的以 tcp 這個協定來重新查詢的!所以啟動 DNS 的 daemon (就是 named 啦) 時,會同時啟動 tcp 及 udp 的 port 53 喔!所以,記得防火牆也要同時放行 tcp, udp port 53 呢!

 

參考

LINUX DNS解析的3種修改方法~

1.HOST 本地DNS解析

vi /etc/hosts

添加規則 例如:

223.231.234.33 www.baidu.com

2.網卡配置文件DNS服務地址 

vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加規則 例如:

DSN1='114.114.114.114'

3.系統默認DNS配置

vi /etc/resolv.conf

添加規則 例如:

nameserver 114.114.114.114

系統解析的優先級 
1>2>3

 

/etc/resolv.conf配置里的search含義

search local.xx local.yy

當nslookup www查詢失敗時,會繼續查詢www.local.xx,如果仍然失敗,繼續查詢www.local.yy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM