DNS Client / Server
DNS 概述
DNS 全名為 Domain Name System,主要用來負責主機名稱與 IP 的對應。設備之間傳送資料是使用 IP 進行通訊,但人類對於記憶數字不如記憶文字方便,因此需要有將「名稱」轉換成 IP
的機制。
在 DNS 系統中,主機名稱的表示方式通常分為兩種:
- FQDN(Fully Qualified Domain Name):完整網域名稱,例如主機名稱為
www,網域為 linux.class,其 FQDN 為
www.linux.class。
- Short Name(簡短名稱):只取主機名稱部分,例如
www 代表
www.linux.class。
名稱對應表(hosts)
在 DNS 普及前,電腦數量少時會透過一個本機對應表檔案設定名稱與 IP 的對應關係,例如:
在 Unix/Linux 系統中對應檔為 /etc/hosts,Windows 則為
C:\Windows\System32\drivers\etc\hosts。可直接編輯此檔案進行自定義對應。
範例:
測試:
成功會顯示對應的 IP。
DNS 用戶端工具
使用 /etc/hosts 雖然簡單,但當主機數量增加時會導致管理困難,因此改用 DNS 服務來集中管理主機名稱與 IP 的對應。
常見 DNS 記錄類型:
| 類型 |
說明 |
| A |
IPv4 對應 |
| AAAA |
IPv6 對應 |
| CNAME |
別名對應 |
| NS |
DNS 伺服器資訊 |
| MX |
郵件伺服器資訊 |
常用 DNS 用戶端工具包含:
這些工具包裝在 bind-utils 套件中,可透過以下指令安裝:
使用 host 工具範例
範例解說:tw.yahoo.com 是別名,實際對應到多個 IP,說明有多台主機分擔服務。
DNS 查詢順序
Linux 系統查詢主機名稱時,會根據 /etc/nsswitch.conf 中設定的順序進行解析,例如:
代表會依序查詢 /etc/hosts、DNS、再查詢本機名稱。
DNS 查詢的伺服器由 /etc/resolv.conf 設定,例如:
其中 search 代表當輸入 www 時會自動補齊為
www.linux.class。
註:使用 NetworkManager 的系統中建議透過 nmtui 等工具設定 DNS,而非直接編輯
/etc/resolv.conf,以免被覆蓋。
DNS 正解與反解
- 正解(forward lookup):名稱轉為 IP。
- 反解(reverse lookup):IP 轉為名稱。
DNS 採分散式授權結構。上層網域會告知查詢方下層網域的負責伺服器位置,細部記錄由子網域自行管理。
DNS 使用:
- 通常在 UDP 53 埠運作
- 若回應超過 512 bytes 則會切換至 TCP 53 埠
參考資料:
安裝 DNS Server
套件(bind-chroot)
在 Enterprise Linux 中,可使用 bind-chroot 提供 DNS 服務,並使用 chroot 增加安全性。
安裝:
檢查設定檔與記錄檔:
修改主設定檔 /etc/named.conf
修改重點:
設定 DB 檔案
/var/named/db.domainX.linux.class
編輯內容:
啟動 DNS 服務
設定防火牆
確認連接埠是否開啟
應出現類似下列內容:
本機驗證 DNS 記錄
安裝工具:
查詢 DNS Server 記錄:
其它主機驗證
在其他主機進行測試:
DNS Client / Server
DNS 概述
DNS 全名為 Domain Name System,主要用來負責主機名稱與 IP 的對應。設備之間傳送資料是使用 IP 進行通訊,但人類對於記憶數字不如記憶文字方便,因此需要有將「名稱」轉換成 IP 的機制。
在 DNS 系統中,主機名稱的表示方式通常分為兩種:
www,網域為linux.class,其 FQDN 為www.linux.class。www代表www.linux.class。名稱對應表(hosts)
在 DNS 普及前,電腦數量少時會透過一個本機對應表檔案設定名稱與 IP 的對應關係,例如:
在 Unix/Linux 系統中對應檔為
/etc/hosts,Windows 則為C:\Windows\System32\drivers\etc\hosts。可直接編輯此檔案進行自定義對應。範例:
# 修改 /etc/hosts 10.6.X.11 myweb.linux.class測試:
成功會顯示對應的 IP。
DNS 用戶端工具
使用
/etc/hosts雖然簡單,但當主機數量增加時會導致管理困難,因此改用 DNS 服務來集中管理主機名稱與 IP 的對應。常見 DNS 記錄類型:
常用 DNS 用戶端工具包含:
nslookuphostdig這些工具包裝在
bind-utils套件中,可透過以下指令安裝:使用
host工具範例# 查詢 IPv4 host -t a www.google.com # 查詢 IPv6 host -t aaaa www.google.com # 查詢 MX 記錄 host -t mx gmail.com # 查詢 NS 記錄 host -t ns yahoo.com # 查詢 alias 和 IP host tw.yahoo.com範例解說:
tw.yahoo.com是別名,實際對應到多個 IP,說明有多台主機分擔服務。DNS 查詢順序
Linux 系統查詢主機名稱時,會根據
/etc/nsswitch.conf中設定的順序進行解析,例如:代表會依序查詢
/etc/hosts、DNS、再查詢本機名稱。DNS 查詢的伺服器由
/etc/resolv.conf設定,例如:其中
search代表當輸入www時會自動補齊為www.linux.class。註:使用 NetworkManager 的系統中建議透過
nmtui等工具設定 DNS,而非直接編輯/etc/resolv.conf,以免被覆蓋。DNS 正解與反解
DNS 採分散式授權結構。上層網域會告知查詢方下層網域的負責伺服器位置,細部記錄由子網域自行管理。
DNS 使用:
參考資料:
安裝 DNS Server 套件(bind-chroot)
在 Enterprise Linux 中,可使用
bind-chroot提供 DNS 服務,並使用 chroot 增加安全性。安裝:
檢查設定檔與記錄檔:
ls -lh /etc/named.conf ls -lh /var/named/修改主設定檔
/etc/named.confcp -a /etc/named.conf /etc/named.conf_backup vi /etc/named.conf修改重點:
listen-on port 53 { 127.0.0.1; 172.16.2.X; }; recursion no; dnssec-enable no; dnssec-validation no; zone "domainX.linux.class" IN { type master; file "db.domainX.linux.class"; allow-query { any; }; };設定 DB 檔案
/var/named/db.domainX.linux.classcd /var/named cp -a named.empty db.domainX.linux.class vi db.domainX.linux.class編輯內容:
$TTL 3H @ IN SOA @ nsadmin.domainX.linux.class. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS ns ns A 172.16.2.X啟動 DNS 服務
systemctl enable named-chroot systemctl start named-chroot設定防火牆
確認連接埠是否開啟
應出現類似下列內容:
本機驗證 DNS 記錄
安裝工具:
查詢 DNS Server 記錄:
其它主機驗證
在其他主機進行測試: