bind編譯安裝(精簡版)
阿新 • • 發佈:2019-02-14
bind的編譯安裝
準備工作:
- 我們將系統時間對準(如果時間是準確的,此步忽略)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install ntp
ntpdate us.pool.ntp.org
- 首先我們要下載一個依賴—perl,我們在這裡下載perl的原始碼,這裡我下載的是perl-5.20.3.tar.gz版本
- 我們要在這裡下載bind的原始碼,這裡我下載的是bind-9.10.3-P2.tar.gz版本
編譯安裝:
- 首先我們編譯安裝perl:
cp configure.gnu configure
./configure -des -Dprefix=/usr/local/perl
make
make test //在這步結束的時候有一個error,但不影響我們後續的操作,test沒有完成100%
make install
- 編譯bind:
./configure --prefix=/usr/local/bind/ --enable-threads --enable-largefile --disable-ipv6 --with-openssl=no //--enable-threads 多執行緒支援,--enable-largefile 啟用大檔案支援,--disable-ipv6 關閉ipv6支援
make
make install
配置bind
- 主配置檔案
cd /usr/local/bind/etc/
/usr/local/bind/sbin/rndc-confgen > rndc.conf
cat rndc.conf >rndc.key
named.conf檔案
vi /usr/local/bind/etc/named.conf //此檔案中新增以下內容: options { listen-on port 53 {192.168.1.235;}; //開啟偵聽53埠,any表示接受任意ip連線 directory "/usr/local/bind/var"; //正向反向區域都建立在這個目錄下 pid-file "named.pid"; //檔案內容就是named程序的id allow-query{any;}; //允許任意ip查詢 forwarders{114.114.114.114;8.8.8.8;}; //設定轉發的公網ip }; zone "."
- 產生named.ca檔案
/usr/local/bind/bin/dig -t NS . > /usr/local/bind/var/named.ca //產生named.ca檔案
- 為方便後續操作,進行以下設定
- 執行dns服務
/usr/local/bind/sbin/named //執行dns服務
- 配置dns
echo "nameserver 192.168.1.235" >/etc/resolv.conf //配置dns //ip為搭建dns伺服器的ip,搭建dns伺服器應該使用靜態ip
- 建立軟連結
ln -s /usr/local/bind/etc/named.conf /etc/ //建立軟連結
- 連結bind命令
ln -s /usr/local/bind/sbin/* /usr/bin/ //連結bind命令
rndc reload //重新載入
- 執行dns服務
配置example.com.zone檔案
vi /usr/local/bind/var/example.com.zone $TTL 38400 @ IN SOA bind.example.com. root ( 2009040701 ;serial 1H ;refresh 15M ;retry 1W ;expire 1D ) ;TTL @ IN NS bind //這個是定義區的域名伺服器 @ IN MX 10 mail bind IN A 192.168.1.235 //設定A記錄,bind主機對應的ip mail IN A 192.168.1.235 storage IN A 192.168.1.88 node01 IN A 192.168.1.100 node02 IN A 192.168.1.200 //SOA 一個授權區定義的開始 //NS 標記區域的域名伺服器以及授權子域、 //A A記錄,將主機名轉化成ip地址,一個主機只有一個A記錄 //PTR 與A記錄相反,將ip轉換成主機名,反向解析操作 //MX 郵件交換記錄,定義郵件伺服器的域名
配置example.local檔案
vi /usr/local/bind/var/example.local $TTL 38400 //當有外部DNS伺服器對你的 DNS 的這個領域進行查詢時,這一條記錄會放置在對方DNS伺服器內幾秒鐘的意思 1.168.192.in-addr.arpa. IN SOA bind.example.com. root( 2009040701;serial //序號,作為master和slave更新的依據,例如master 序號為 100 但 slave 序號為 90 時,那麼這個 zone file 的資料就會被傳送到 slave 來更新了 3H ; refresh //H表示小時//slave經過refresh時間之後進行一次主動更新 15M ;retry //M表示分鐘 //refresh時間之後還是無法連線到master,那slave會在retry時間之後再次嘗試連線 1W ;expire //W表示星期 //slave一直無法連線master,經過expire時間之後slave不再連線master,此時認為master掛了 1D) ;minimum //類似為TTL,D表示天 IN NS bind.example.com. //com後面的“.”代表這是一個完整的主機名稱 (FQDN)而不僅是hostname 88 IN PTR storage.example.com. //不能縮排 //設定一個反向解析指標,前面的88代表ip的主機位為88 100 IN PTR node01.example.com. 200 IN PTR node02.example.com.
驗證dns伺服器
- 驗證本地域名是否能夠解析:
/usr/local/bind/bin/dig -t A node01.example.com @192.168.1.235
//若是能夠正常解析為192.168.1.100則說明本地域名能夠解析
驗證公網域名是否能夠解析:
/usr/local/bind/bin/nslookup //這裡我們採用bind自帶的nslookup來解析 > www.baidu.com Server: 192.168.1.235 Address: 192.168.1.235#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 14.215.177.37 Name: www.a.shifen.com Address: 14.215.177.38 //以上顯示的內容證明公網域名也可以解析
開啟防火牆相應的埠,使得客戶端能夠解析
//將以下命令加到/etc/sysconfig/iptables檔案中
-A INPUT -p udp -s 0/0 --dport 53 -j ACCEPT
-A INPUT -p tcp -s 0/0 --dport 53 -j ACCEPT
設定開機自動啟動dns伺服器
//將以下內容加到/etc/rc.d/rc.local
/usr/local/bind/sbin/named //這個是我存放named的絕對路徑,存放的路徑不同這句命令就不同
配置主從dns
- 首先將主從伺服器全部當做主伺服器操作一遍上面的步驟
- 配置主伺服器(192.168.1.235)named.conf檔案
options {
listen-on port 53 {192.168.1.235;};
directory "/usr/local/bind/var";
pid-file "named.pid";
allow-query{any;};
forwarders{114.114.114.114;8.8.8.8;};
notify yes;
also-notify{192.168.1.240;}; // 每次主DNS修改完成後重啟服務會傳送notify
allow-transfer{192.168.1.240;};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "example.com" IN {
type master;
file "example.com.zone";
allow-transfer{192.168.1.240;}; //僅允許240這個ip進行exanple.com這個區域傳送
};
zone "1.168.192.in-addr.arpa" in {
type master;
file "example.local";
allow-transfer{192.168.1.240;};
};
- 配置從伺服器(192.168.1.240)named.conf檔案
options {
listen-on port 53 {192.168.1.240;}; //這裡是240,表示listen240的53埠
directory "/usr/local/bind/var";
pid-file "named.pid";
allow-query{any;};
forwarders{114.114.114.114;8.8.8.8;};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "example.com" IN {
type slave; //表示為從伺服器
file "example.com.zone";
masters{192.168.1.235;}; //表示主伺服器為235
};
zone "1.168.192.in-addr.arpa" in {
type slave;
file "example.local";
masters{192.168.1.235;};
};
剩下再來點邊角料調一下胃口
- 手動新增記錄
- 直接新增刪除或修改zone檔案裡的記錄
- 執行rndc reload zone名稱過載,如rndc reload example.com
- 手動啟動區域傳送
rndc retransfer example.com
- 可以看到啟動過程,根據這個資訊來排錯
/usr/local/bind/sbin/named -g
- 在配置example.local檔案時,建議refresh配置小點,便於更新,但太小佔資源,自己把控~