天天看點

Linux Bind 安裝

Bind 安裝(以下安裝是以源碼包為主)

安裝包下載下傳

rpm下載下傳位址:https://pkgs.org/download/bind 輸入Bind搜尋,依賴bind-utils、bind-libs、bind-license

rpm安裝時才需要安裝依賴

rpm所有版本下載下傳位址:

http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=1&dl=40&search=bind-9.9&field[]=1&field[]=2

tar所有版本下載下傳位址:ftp://ftp.isc.org/isc

tar下載下傳位址:https://ftp.isc.org/isc/bind9/9.15.1/bind-9.15.1.tar.gz

可視化管理插件:https://gitee.com/opendevops/codo-dns

解壓安裝包

tar xvfz bind-9.15.1.tar.gz 
           

如果你的 tar 指令不支援z選項(用于解壓gz字尾的壓縮包),你可以分兩步做:

gunzip bind-9.3.0.tar.gz
tar xvf bind-9.3.0.tar
           

這樣源代碼就解壓到bind-9.15.1目錄中了。

編譯安裝

cd bind-9.15.1
./configure --prefix=/usr/local/named  --enable-threads
           

參數說明:

正像單詞的意思一樣,configure 是編譯前對源代碼進行針對具體作業系統的編譯參數配置,有很多選項可以選

擇,大家可以用 --help 選項來檢視所有可用的選項,這裡介紹幾個最常用的選項:

參數名 描述
–prefix=/usr/local/bind 設定bind的安裝目錄,預設是/usr/local,有的人喜歡将bind安裝在單獨的目錄就可 以如此設定
–sysconfdir=/etc/bind 設定named.conf配置檔案放置的目錄,預設是"$prefix/etc"
–localstatdir=/var 設定 run/named.pid 放置的目錄,預設是"$prefix/var"
–with-libtool 将BIND的庫檔案編譯為動态共享庫檔案,這個選項預設是未選擇的,如果不選這個選項,那麼編譯後的named指令會比較大,lib目錄中的庫檔案都是.a字尾的,如果選上這個選項,那麼編譯後的named指令會很小,lib目錄中的庫檔案則是.so字尾
–enable-threads 如果你的系統有多個CPU,那麼可以使用這個選項

如果 ./configure 沒有報錯的話,那麼就可以開始編譯源代碼了。

執行  make
           

編譯需要一小會時間,編譯完成後則開始安裝BIND,安裝需要 root 使用者權限,是以要先轉換成root使用者。

執行  make install
           

至此安裝完成,執行以下指令檢視。

cd /usr/local/named/sbin/
./named -v #檢視版本
           

建立運作使用者

#建立使用者named使用者,使用named使用者運作dns

groupadd named  
useradd -g named -s /sbin/nologin named #設定不能登入
           

建立配置檔案目錄

mkdir /usr/local/named/zones        #儲存dns zone配置檔案的目錄
mkdir /usr/local/named/log          #儲存日志就建立這個目錄
touch /usr/local/named/etc/named.conf #儲存DNS配置檔案
           

#配置主配置檔案

cd /usr/local/named/etc/
/usr/local/named/sbin/rndc-confgen > rndc.conf
cat rndc.conf > rndc.key
chmod 777 /usr/local/named/zones/
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
           

#配置named.conf解析

ln -s /usr/local/named/etc/named.conf /etc/named.conf
vi /usr/local/named/etc/named.conf 
           

named.conf 内容說明:

#rndc控制密鑰
key "rndc-key" {
	algorithm hmac-sha256;
	secret "c6iamWqbzArFvUn7BUt27c8MNUU+G9TkVz8ADbnXNRI=";
};

#服務監聽端口
controls {
	inet 127.0.0.1 port 953
	allow { 127.0.0.1; } keys { "rndc-key"; };
};
#配置zone配置檔案目錄
options {
	directory "/usr/local/named/zones";
	pid-file "named.pid"; 
	rrset-order {order cyclic;};#輪詢通路
};

#配置log日志服務
logging
{
	channel dnsquery.log
	{
		file "/usr/local/named/log/dnsquery.log" versions 3 size 10M;
		severity info;
		print-time yes;
	};
	category queries { dnsquery.log; };
};
view "internal"
{
  #配置根DNS伺服器配置檔案,以下配置中file的路徑都是相對directory指定的路徑,及必須放到directory目錄下
	zone "." {#可不配做
       type hint;
       file "named.root";#根 dns 伺服器的資訊
       #下載下傳位址ftp://ftp.rs.internic.net/domain/named.cache named.cache 重命名為 named.root
	};
	zone "localhost" IN{#本地解析,可不配做
		type master;
        file "localhost.zone";
		allow-update {none;};
	};
	zone "0.0.127.in-addr.arpa" IN{#可不配做
		type master;
       file "localhost.local";
		allow-update {none;};
	};
	zone "keeplived.com" IN{
		type master;
       file "keeplived.zone";
		allow-update {none;};
    };
    zone "shiny.com" IN{#正向解析
		type master;
       file "shiny.zone";
		allow-update {none;};
    };
    zone "192.168.1.in-addr.arpa" IN{#反向解析,一般是郵箱才需要配置反向解析
		type master;
		file "shiny.local";
		allow-update {none;};
    };
};

#localhost.zone 正向解析配置
$TTL 86400
@       IN      SOA     localhost.      admin.localhost.(
                        2019061701
                        1H
                        5M
                        7D
                        1D )
        IN      NS      localhost.
localhost.      IN      A       127.0.0.1

#localhost.local 反向解析配置
$TTL 86400
@       IN      SOA     localhost.      admin.localhost.(
                        2019061701
                        1H
                        5M
                        7D
                        1D )
        IN      NS      localhost.
1       IN      PTR     localhost.

#shiny.zone正向解析配置
#admin.163.com 為郵箱,随意指定一個,@為本域,即shiny.com 
$TTL 7200
@       IN      SOA     shiny.com.      admin.163.com.(
                        2019061701
                        1H
                        5M
                        7D
                        1D )
@       IN      NS      www.shiny.com.
www     IN      A       192.168.1.221
        IN      A       192.168.1.222 #一個域名對應多個位址(可以實作負載,ttl設定成1 或者 0)

#shiny.local反向解析配置(根據需要進行配置,一般是郵箱服務才需要)
$TTL 7200
@       IN      SOA     192.168.1.in-addr.arpa.      admin.163.com.(
                        2019061701
                        1H
                        5M
                        7D
                        1D )
@       IN      NS      www.shiny.com.
221     IN      PTR     www.shiny.com.
222     IN      PTR     www.shiny.com.
           

#授予named通路權限

chown -R named:named /usr/local/named
           

運作DNS服務

/usr/local/named/sbin/named -g -u named & #-g 列印啟動日志 -u 指定使用者
tail -f /var/log/message #檢視啟動日志
/usr/local/named/sbin/named restart #重新開機服務
/usr/local/named/sbin/rndc status #檢查DNS伺服器運作狀态
dig 域名 #檢視域名解析是否成功
#更改配置時可以通過reload及時生效
/usr/local/named/sbin/rndc reload

           

Linux DNS配置

vi /etc/resolv.conf
nameserver 域名伺服器位址
           

resolv.conf的關鍵字主要有四個,分别是:

nameserver //定義DNS伺服器的IP位址

domain //定義本地域名

search //定義域名的搜尋清單

sortlist //對傳回的域名進行排序

#Window重新整理本地域名緩存,Linux無需重新整理

ipconfig /flushdns #當伺服器域名對應IP調整後,如果要馬上生效,用戶端需要重新整理緩存

#域配置項說明

配置項 說明
TTL time to live 生存時間,預設為秒
@ 表示相應的域名,表示一個域名定義的開始這裡代表gr.org
IN 表示後面的資料使用的是INTERNET标準
SOA 表示授權開始
ns.gr.org. 該域的主域名伺服器
root.gr.org. 管理者郵件位址(這裡的郵件位址中的用.來代替常見的郵件位址的@.)
20150317 serial(d. adams)表示配置檔案的修改版本,格式是年月日當日修改的次數,每次修改時都應該修改這個數字,要不然所做修改的不會更新到網上的其它DNS伺服器的資料庫上,即你所做的更新很可能對于不以你你的所配置的DNS伺服器資料庫上,即你所做的更新很可能對于不以你的所配置的DNS伺服器為DNS伺服器的用戶端來說就不會反映出你的更新,也就對他們來說你更新是沒意義的
6H refresh,定義以機關(M分,H時,W周,預設是秒即不帶機關)的重新整理頻率,即規定從域名伺服器多長時間查詢一個主伺服器,以伺服器的資料的是最新的
30M retry,以30分鐘的時間間隔重試,即當從伺服器試圖在主伺服器上查詢更新時,而連接配接失敗了,則這個值規定了從伺服器多長時間後重試
1W expire,規定從伺服器在向主伺服器更新失敗之後清除記錄的時間
15M minimum TTL,規定緩沖伺服器不能與主伺服器聯系上的清除記錄時間
NS net server,表示該主機是域名伺服器
A address,定義了一條A記錄,表示該主機名到IP位址的對應記錄
MX mail exchange,定義一條郵件記錄
CNAME 定義了對應主機的一個别名
PTR 指一條反向域名解析PTR記錄,類似A記錄(PTR指針記錄由IP位址提供商提供)

#DNS負載均衡優點

  1. 将負載均衡的工作交給DNS,省去了網站管理維護負載均衡伺服器的麻煩。
  2. 技術實作比較靈活、友善,簡單易行,成本低,使用于大多數TCP/IP應用。
  3. 對于部署在伺服器上的應用來說不需要進行任何的代碼修改即可實作不同機器上的應用通路。
  4. 伺服器可以位于網際網路的任意位置。
  5. 同時許多DNS還支援基于地理位置的域名解析,即會将域名解析成距離使用者地理最近的一個伺服器位址,

    這樣就可以加速使用者通路,改善性能

#DNS負載均衡缺點

  1. 目前的DNS是多級解析的,每一級DNS都可能緩存A記錄,當某台伺服器下線之後,即使修改了A記錄,

    要使其生效也需要較長的時間,這段時間,DNS任然會将域名解析到已下線的伺服器上,最終導緻使用者通路失敗。

  2. 不能夠按伺服器的處理能力來配置設定負載。DNS負載均衡采用的是簡單的輪詢算法,不能區分伺服器之間的差異,

    不能反映伺服器目前運作狀态,是以其的負載均衡效果并不是太好。

  3. 可能會造成額外的網絡問題。為了使本DNS伺服器和其他DNS伺服器及時互動,保證DNS資料及時更新,

    使位址能随機配置設定,一般都要将DNS的重新整理時間設定的較小,但太小将會使DNS流量大增造成額外的網絡問題。

配置檔案例子:

named.conf

key "rndc-key" {
	algorithm hmac-sha256;
	secret "YrKX8ketu7iMDv32tndictV7ZmhKU+SuW1bhQhvmGPY=";
};

controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "rndc-key"; };
};

options {
	directory "/usr/local/named/zones";
	pid-file "named.pid"; 
	rrset-order {order cyclic;};#輪詢通路
};

logging
{
	channel dnsquery.log
	{
		file "/usr/local/named/log/dnsquery.log" versions 3 size 10M;
		severity info;
		print-time yes;
	};
	category queries { dnsquery.log; };
};

view "internal"
{
	  zone "." {
		type hint;
		file "/usr/local/named/etc/named.root";
	  };
    zone "shiny.com" IN{
		type master;
        file "shiny.zone";
		allow-update {none;};
    };
};
           

shiny.zone

$TTL 7200
@       IN      SOA     shiny.com.      admin.163.com.(
                        2019103001
                        1H
                        5M
                        7D
                        1D )
@       IN      NS      www.shiny.com.
www     IN      A       192.168.1.221