DNS

      在〈DNS〉中尚無留言

DNS(Domain Name System,網域名稱系統)的主要用途是將網域名稱轉換為 IP 地址,方便使用者透過易記的網址存取網站。而 No-IP 提供的動態 DNS(DDNS)服務,則讓擁有浮動 IP 的使用者也能夠架設網站,當 IP 變更時,No-IP 會自動更新記錄,確保網域始終指向正確的 IP。

然而,為什麼我們還需要自行架設 DNS 伺服器呢?早期 No-IP 的免費帳號可註冊最多三個網域,但現在僅限一個。如果我們需要管理多個網域,例如出租主機空間給客戶,並提供專屬網域指向我們的主機,這時候網域需求可能會達到數十甚至上百個。面對這樣的需求,自行架設 DNS 伺服器就成為更具彈性且經濟的解決方案。

No-IP 本身是一個營利性服務,若需要申請更多網域,則必須付費升級。然而,是否允許使用者在其提供的網域下自行架設 DNS 伺服器呢?答案是不可以的,否則他如何逼你來付費升級呢。

這怎麼解決呢,這只能換個 DDNS 服務了,還好 https://www.dynu.com 提供了免費可架設子網域的功能,請到上述網址註冊並登記一個網域。

其實不需自已架設 DNS

使用 Dynu 所提供的網域,其實並不需要自己架設 DNS,因為 dynu 允許查詢 xxx.mahaljsp.ddnsfree.com 的 IP,只要進入 Dynu 的網站,把 *.mahaljsp.ddnsfree.com 開啟即可。底下的說明只是記錄而以。

網域格式

假設我們向 Dynu 申請了一組網域,例如 mahaljsp.ddnsfree.net,那麼在自行架設 DNS 伺服器後,所建立的子網域將會變成 bot.mahaljsp.ddnsfree.net,也就是在原網域的基礎上,再增加一層子網域。這樣的方式允許我們靈活管理更多子網域,而不受 Dynu 申請數量的限制。

限制

自行架設 DNS 有一個限制,那就是主機本身最好使用固定 IP。若使用浮動 IP,則每當 IP 變更時,需手動更新多項設定,過程繁瑣且容易影響服務的穩定性。因此,若計劃自行架設 DNS,建議搭配固定 IP,以降低維護成本並確保服務持續運作。

安裝

使用底下的指令安裝 DNS 

sudo apt install bind9

設定主檔

假設我們的 ip 是 61.223.74.217。

先開啟 /etc/bind/named.conf.local 修改如下設定

zone "mahaljsp.ddnsfree.com" {
        type master;
        file "/etc/bind/mahaljsp.ddnsfree.com.hosts";
        };

新增 /etc/bind/mahaljsp.ddns.net.hosts

在 /etc/bind上新增 mahaljsp.ddns.net.hosts,更改如下

$TTL 38400
@       IN      SOA     mahaljsp.ddnsfree.com. admin.mahaljsp.ddnsfree.com. (
                        1255760316
                        10800
                        3600
                        604800
                        38400 )
        IN      NS      ns1.mahaljsp.ddnsfree.com.
ns1     IN      A       61.223.74.217
bot     IN      A       61.223.74.217

上述的 mahaljsp.ddnsfree.com. 是向 Dynu 申請的網域,而 admin.mahaljsp.ddnsfree.com. 則用來表示管理者的 Email。原本的格式應該是 admin@mahaljsp.ddnsfree.com,但在 DNS 設定中,需將 “@” 替換為 “.”。 至於這組 Email 是否存在並不重要,因為系統並不會檢查其有效性,但該欄位仍需填寫,且名稱可自行修改。另請特別注意一點,網域後面一定要加 “.”

ns1.mahaljsp.ddnsfree.com. 中的 ns1 是我們自行架設的 DNS 伺服器網域名稱,雖然可以更改,但一般習慣使用 ns1 作為標準命名方式,以維持一致性和可讀性。

上述的 61.223.74.217 是我們的固定 IP。如果使用的是浮動 IP,則每當 IP 變更時,都需要手動更新這裡的設定,這正是浮動 IP 帶來的不便之處。請特別注意,此處必須填寫 IP 地址,不能填入向 No-IP 申請的網域名稱,否則 DNS 解析將無法正常運作。

而 bot 那一行則是用來新增子網域的設定。新增後,子網域將變為 bot.mahaljsp.ddnsfree.com,使其能夠對應到指定的 IP 地址。

開啟 port

DNS 使用 Port 53,因此需要在 IP 分享器中將 Port 53 轉發至我們的伺服器。此外,通訊協定必須設為 TCP/UDP(Both),確保 DNS 查詢能夠正常運作。

重新啟動與測試

使用如下指令重新啟動 DNS

sudo systemctl restart bind9

然後再使用如下指令測試

ping bot.mahaljsp.ddnsfree.com

如果能成功 ping 到指定的 IP,表示設定已正確生效。

設定反向 DNS

反向 DNS 是指由 IP 來查詢網域,這個可有可無。

 

移除 bind9

使用底下指令徹底移除 bind9

sudo systemctl stop bind9
sudo systemctl disable bind9
sudo apt remove --purge bind9 bind9-utils bind9-dnsutils -y
sudo rm -rf /etc/bind

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *