[精讚] [會員登入]
566

動態DNS -- dynamic DNS實作

BIND9動態DNS設定

此文完整連結 http://n.sfs.tw/11984

複製連結 動態DNS -- dynamic DNS實作@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2018-11-29 15:55:27 最後編修
2017-10-27 13:06:50 By 張○○
 

範例

網域 example.com
主機名稱 ddns
IP 163.17.40.100

# named -v
BIND 9.9.4-RedHat-9.9.4-51.el7 (Extended Support Version)

安裝

# yum install bind*

設定

# vi /etc/named.conf

假設要建立網域 example.com,在zone "." IN 下面加入

zone "example.com" {
        type master;
        file "data/example.com.static"; # 建立靜態的內容
        allow-update {127.0.0.1;};    # 開放 127.0.0.1 進行動態更新
        allow-transfer { none; };  # slave 主機,可能一部或多部,若無請寫 none
};

其中檔案 data/example.com.static

# vi /var/named/data/example.com.static

$ORIGIN .
$TTL 43200      ; 12 hours
example.com.             SOA  ddns.example.com. root.dns.example.com. (
                                2017102704 ; serial
                                36000      ; refresh (10 hours)
                                7200       ; retry (2 hours)
                                36000      ; expire (10 hours)
                                43200      ; minimum (12 hours)
                                )
example.com.              NS      ddns.example.com.
ddns.example.com.         A       163.17.40.100

重新啟動

# service named restart

建立腳本檔

# touch dns.script.txt

server 127.0.0.1
update add example.com. 10800 MX 10 ASPMX.L.GOOGLE.COM.
update add proxy.example.com. 10800 CNAME britannica
update add ceag.example.com. 10800 A 140.128.55.100
update add elesson.example.com. 10800 AAAA 2001:288:5400:4::1000
update add wges.example.com. 10800 TXT "google-site-verification=VHi9xhYVUM8IUicq8IRl7Tje-LKc"
send

上面的IP和記錄只是範例

執行你的腳本

# nsupdate -D -v all_dns_script.txt

  -D 是進入 debug mode,執行時才知道大概哪行有問題
  -v 是執行腳本檔,也可以省略

執行完後會多一個 example.com.static.jnl 檔:

  1. 執行完就會生效,不必重啟
  2. jnl 檔可以刪除,若named重啟restart時,jnl會把記錄寫到 example.com.static 中,但reload不會。
  3. 未來若要刪除得使用指令
  4. 重新啟動時,已加入記錄不會消失,得用nsupdate來刪除,除非這時沒有jnl檔
  5. 重覆執行腳本檔不會怎樣,重覆加入不會怎樣

已知的困難

1. 沒辦法清掉設定上的記錄,就算重啟也一樣

2. 無法動態加上zone

指令錯誤訊息

1. 下指令send出現 couldn't get address for 'your.doamin.name': not found 錯誤
可能原因:忘記下 server 127.0.0.1 這個指令

2. 下指令send出現 update failed: NOTZONE 錯誤
可能原因:設定非該網域資料,例如設定的 zone是example.com,要新增example.com,則指令必需打完整的FQDN:
update add example.com 60 A 1.2.3.2

3. 新增的資料沒有出現
可能原因:忘了下達send指令。

4. update failed: NOTAUTH
你修改的網域並不屬於你,可能你在 named.conf中沒有加入這個網域

5. zone x.x.x/IN: journal rollforward failed: not exact
後面的序號比原來的序號小,例如動態增加記錄未寫到靜態檔卻又修改靜態檔

6. zone x.x.x/IN: journal rollforward failed: journal out of sync with zone
靜態檔和動態檔不一致,解決方法:把jnl刪掉放棄動態檔重新載入。

 

參考資料

[1] abelyang@TWNIC http://phorum.study-area.org/index.php?topic=40717.0

 

你可能感興趣的文章

[CENTOS7] 使用 logrotate 來整理wildfly日誌檔 解決 wildfly 的日誌檔不斷長大的問題

[Centos7] SSL自簽憑證+APACHE+Selinux SSL的自簽憑證

[CENTOS7] 安裝中文字型 如何在Centos7上安裝和移除中文字型?

[CentOS] 新增修改及刪除使用者 新增、修改、刪除使用者和群組

安裝網頁套件管理程式 Bower 一個非常棒的Javascript套件管理程式bower,用完愛不釋手。

[Linux] mongodb 初步--2/3 我使用mongo 的一些大小事:叢集

[bc] linux 的計算機bc 如何計算帶小數點的指數 用 bc 來計算帶小數點的指數,得轉個彎才行

[CENTOS7] 安裝rrdtool+RRDs+PERL 要讓perl繪圖,安裝rrdtool和RRDs

[Centos7] 使用網路安裝 Centos7 使用網路來安裝Centos7,雖然這不是什麼新鮮事,但可以省你的磁碟空間或光碟片

Linux ext3 系統下刪除檔案救回全記錄 今天一個不小心,下了 rm 的指令,從此奮戰一個下午,終於把檔案救回來,以下是全記錄...

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

Linux shell 的date表示法 linux下SHELL中的date表示法

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI

問問題 問問題其實內涵很深,我悟了很久才懂。 有人問題的目的並不一定是想要得到答案,有時只是純粹想問問題..

[NetBeans] 使用git複製別人的專案 NetBeans使用git複製別人的專案及版本控制

[MAC] 安裝APACHE+PHP OS Darwin OpenIDMac1deAir 15.6.0 Darwin Kernel Version 15.6.