1.dns配置
日常管理主機過程中,會有很多地方需要使用到主機名的,當主機非常多的時候,就不适合使用hosts來管理和同步的所有主機hosts了,這個時候就可以使用dns來管理主機名映射和變動
dns 在linux中如何配置,這裡就不多說,百度一下“Linux bind 服務配置”就能找到很多相關文章
這裡說說使用dns管理主機名會碰見的一些情況
在很多公司的主機名标準命名規範裡,很少會有使用标準域名格式命名的,一般都會使用\'-\'(橫杠) 來分割幾個字段,每個字段表達不同的意思,以此來命名主機的,也有一些會使用\'_\'(下劃線) 來分割主機名的。像這種使用一般字元串來命名主機名的,在使用dns 解析的時候,最基本的是,不知道該如何設定主機名所在的域名稱(因為主機名根本沒有域名稱),不知道該如何隻給一個字元串,就能解析成對應的ip。這個時候這裡就需要使用Linux /etc/resolv.conf 的功能了。在這個配置檔案裡可以使用
domain localhost.localdomain #域名可以自定義
#這樣的方式來設定主機所在的預設域,這樣在配置主機名A記錄的時候,可以配置到對應的域名localhost.localdomain下
#使用domain配置域名之後,在使用hostname -d的時候便會傳回這個域名,未配置的時候此指令傳回空
search localhost.localdomain #域名可以自定義
#這個參數可以同domain一樣達到目的,随意配置其中一個即可
#這個參數跟domain有些差別,這個參數設定的是預設搜尋域,而不是主機的預設域,主機沒有域,但是當在此主機上解析某字元串的時候,會預設優先搜尋此域
#即nslookup hostname 首先解析的即是hostname.localhost.localdomain ,不存在時直接解析字元串,都失敗,則傳回找不到
#配置這個參數後,使用hostname -d 指令傳回的依然是空,表明主機沒有預設域
此配置可以同步到所有的主機上,這樣即可在所有主機上直接使用主機名解析到對應的ip,而又無須配置hosts檔案
因dns标準規定的原因,主機名使用dns管理的時候,主機名中不能包含\'_\'(下劃線),雖然使用hosts檔案管理的時候可以使用下劃線,但是在java,以及c語言新網絡api中,即使是hosts檔案管理也是無法識别含有下劃線的主機名,會抛出異常。是以在主機管理中,主機名規劃需要提前規劃好。
在Linux 的 /etc/resolv.conf 配置檔案中如果存在多個nameserver 的配置的話,如果第一個dns位址可用,則永遠不會用到後面的dns配置。除非前面的dns無法通路,經過逾時時間判定無法通路之後才會向後面的dns服務發起請求。是以在配置自己私有的dns的時候需要注意要将dns寫在第一位。并且不建議配置過多的nameser 字段,這樣會造成前面都失效逾時之後才會通路到合适的dns,這樣會造成所有網絡相關請求服務都緩慢異常