使用bind架設內網dns

在之前的spark on yarn集群配置中,感覺最麻煩的就是各個機器之間的網絡配置了,一直想簡化這部分的工作。
一開始的辦法是一臺機器一臺機器的編輯/etc/network/interfaces 文件和/etc/hosts 文件使各臺機器都有固定的ip和通過機器名稱可以轉換成對應的ip,這樣一旦集群中一臺機器發生變動,各臺機器都要過一遍,很是麻煩。
現在一般的家用路由器上都有根據mac地址分配固定ip的功能,所以只要在路由器上配置dhcp分配的規則,將各個機器的網卡mac地址填入就可以將機器的ip固定住了。
接下來就是機器之間互相識別的事了,這里我們在集群內選定一臺主機,作為dns服務器,其他的機器只要將dns服務設定為這臺機器,就可以識別其他機器名稱所對應的ip了。
按慣例,給出操作環境:

Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-66-generic x86_64

服務端

首先安裝bind

sudo apt-get install bind9

安裝完畢之后開始配置。
先要說一些基本認知:

  1. 所有的配置文件都在/etc/bind/
  2. 要使配置生效,需要重啟bind9服務sudo service bind9 restart
  3. 服務啟動的日志在/var/log/syslog中,需要查看之以確保配置正確和生效

然后我們開始配置bind,參照ubuntu的bind中文wiki
修改named.conf.local
添加一個zone節點,這里我們的zone名字是“mwnet”:

zone "mwnet" {
    type master;
    file "/etc/bind/db.mwnet";
};  

然后將“db.local”文件復制成“db.mwnet”,并修改之:

; 
; BIND data file for local loopback interface 
; 
$TTL 604800 
@       IN  SOA mwnet. root.localhost. ( 
    2 ; Serial 
    604800 ; Refresh 
    86400 ; Retry 
    2419200 ; Expire 
    604800 ) ; Negative Cache TTL 
@       IN  NS  mwnet. 
@       IN  A   192.168.3.9 
Y40     IN  A   192.168.3.9 
X230    IN  A   192.168.3.11 
;省略不展示其他機器信息...

其中第5、11行就是將"localhost"修改成了自己的zone名稱。
第12行是必須的,指定默認的域名解析到的ip,包括“ns.mwnet”的解析。
從第13行開始就是機器名稱的解析了。
接著增加一個反向解析的配置,這一步必須要做,否則hdfs的datanode啟動會失敗。
同樣修改named.conf.local
添加一個zone節點:

zone "3.168.192.in-addr.arpa" {
        type master;
        notify no;
        file "/etc/bind/db.192.168.3";
};

然后將db.127文件復制成db.192.168.3,并修改之:

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     mwnet. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
9       IN      PTR     ns.mwnet.
9       IN      PTR     Y40.mwnet.
11      IN      PTR     X230.mwnet.
;省略不展示其他機器信息...

注意這里PTR記錄和 db.mwnet里面的A記錄是一一對應的。
保存修改之后重啟服務。

客戶端

接下來修改各臺機器的dns服務器設置,需要改動/etc/resolvconf/resolv.conf.d/base文件:

search mwnet
domain mwnet
nameserver 192.168.3.9

第1行寫search是為了在尋找主機的時候,自動在主機名稱后面加上“.mwnet”,以便dns服務器解析。
第2行寫domain是為了讓本機加入"mwnet"域,這樣完整的主機名就變成了設備名稱+“.mwnet”。
第3行指定了dns服務器的地址。
需要注意的是這個改動必須重啟機器后生效。

補充

如果之前沒有改動過/etc/hosts 文件,需要注意一點就是把系統自動添加機器名稱解析到127.0.1.1的記錄刪除,很多事情都壞在這條記錄上。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 概述 在網絡環境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對應服務器獲取相應的...
    ghbsunny閱讀 2,980評論 0 7
  • DNS工作原理 DNS 查詢的過程 DNS( Domain Name System)是“域名系統”的英文縮寫,是一...
    ghbsunny閱讀 9,018評論 0 0
  • 什么是DNS及功能: DNS(Domain name server),是將IP地址轉換為域名地址。當在互聯網訪問外...
    魏鎮坪閱讀 7,690評論 0 8
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 一、實現從根,com,rj.com 模擬互聯網的DNS架構 DNS(Domain Name System,域名系統...
    ssjinyao閱讀 1,533評論 0 7