1、前言
本次實作為利用 zh-Bind 8(或 Bind9) 加上 DHCP 來達成動態 DNS 名稱解析 LAN 端電腦名稱及 IP Address 對應,再開始以前先了解一下相關資訊。何謂 NetBIOS 名稱
電腦名稱及工作群組即可稱之,可利用下列相關指令來查詢目前 NetBIOS 相關資訊。- nbtstat -n: 檢查目前電腦的 NetBIOS 名稱。
- nbtstat -c: 檢查目前電腦的 NetBIOS 快取區內的資料。
NetBIOS node-type
NetBIOS node-type 共有四種,若您要了解目前電腦使用何種 node 可使用指令 ipconfig /all 來查看 ex. Node Type . . . . . : Hybrid。- B-node: 利用廣播方式 (Broadcast)。
- P-node: 利用點對點方式直接找 WINS。
- M-node: B + P 也就是先 B 再 P。
- H-node: P + B 先 P 再 B。
WINS 用戶端預設採用 H-Node (Hybrid) 模式其 NetBIOS 名稱解析過程如下:
- 檢查查詢的電腦名稱是不是自已。
- 檢查本身的 NetBIOS 快取區有沒有資料。
- 向 WINS Server 查詢。
- 送廣播出去找。
- 檢查 LMHOSTS (LMHOSTS 檔案路徑 %systemroot%\system32\drivers\etc)。
- 檢查 HOSTS。
- 向 DNS Server 查詢。
文章目錄
1、前言2、實作環境
3、安裝及設定
4、Zh-Bind 8 部份 (中/英文電腦名稱解析)
DHCP 設定檔 (dhcpd.conf)
zh-bind 設定檔 (named.conf)
步驟1.安裝 zh-bind 套件
步驟2.修改 zh-bind 設定檔 (named.conf)
步驟3.修改正/反向解析檔案
步驟4.啟動 zh-bind 服務
5、Bind 9 部份 (英文電腦名稱解析)
步驟1.產生 TSIG Key
步驟2.修改 BIND 設定檔 (named.conf)
步驟3.修改 dhcpd.conf
步驟4.修改 rc.conf
步驟5.啟動相關服務 named 及 dhcpd 服務
6、參考
7、Me FAQ
Q1.named: denied update from 192.168.78.1.49197 for "weithenn.home" IN ?
Q2.dhcpd: Unable to add forward map from 王小明.weithenn.home to 192.168.88.88: timed out ?
Q3.named: denied update from 192.168.78.1.49202 for "88.168.192.in-addr.arpa" IN ?
Q4.named: error processing update packet (YXDOMAIN) id 25494 from 192.168.78.1.49160 ?
Q5.安裝 zh-bind8.3.7 套件時出現錯誤?
Q6.named: sysquery: no addrs found for root NS?
2、實作環境
- FreeBSD 6.x-RELEASE
- FreeBSD 5.x-RELEASE
- isc-dhcp3-3.x
- BIND 9.3.2
- zh-bind-8.3.7
3、安裝及設定
在配合名稱解析套件 BIND 採用 zh-bind (中/英文 電腦名稱解析)、BIND (英文 電腦名稱解析) 二部份進行說明。4、Zh-Bind 8 部份 (中/英文電腦名稱解析)
DHCP 設定檔 (dhcpd.conf)
因為希望 DHCP Server 在分配 IP Address 資訊給 DHCP Client 時就順便將內部 Domain 的資訊給 DHCP Client。# vi /usr/local/etc/dhcpd.conf //修改 DHCP 設定檔內容如下
option domain-name "weithenn.home"; //指定內部 Domain Name
option domain-name-servers 192.168.88.10; //指定內部 DNS IP
option netbios-name-servers 192.168.88.10; //指定內部 WINS IP
option netbios-dd-server 192.168.88.10;
option netbios-node-type 8;
option netbios-scope "";
default-lease-time 28800;
max-lease-time 86400;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates.
ddns-updates on;
ddns-update-style interim;
do-forward-updates on;
ddns-domainname "weithenn.home";
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# This is a very basic subnet declaration.
zone weithenn.home. {
primary dmz.weithenn.home;
}
zone 88.168.192.in-addr.arpa. {
primary dmz.weithenn.home;
}
subnet 192.168.88.0 netmask 255.255.255.0 {
range 192.168.88.10 192.168.88.200;
option routers 192.168.88.1;
option subnet-mask 255.255.255.0;
}
zh-bind 設定檔 (named.conf)
步驟 1. 安裝 zh-bind 套件
為何安裝 zh-bind? 因為內建的 BIND 套件僅支援英文電腦名稱,安裝 zh-bind 可支援解析 中文電腦名稱。# cd /usr/ports/chinese/bind8 //切換到安裝路徑
# make install clean //安裝並清除暫存檔案
步驟 2. 修改 zh-bind 設定檔 (named.conf)
修改 zh-bind 設定檔 named.conf 建立 2 個區域 (Zone) 請依個人網路環境自行調整。# vi /etc/namedb/named.conf
zone "weithenn.home" {
type master;
notify yes;
file "dyn/named.weithenn.home"; //動態更新正向解析路徑
allow-update {192.168.88.1;};
};
zone "88.168.192.in-addr.arpa" {
type master ;
file "dyn/named.88.168.192.in-addr.arpa" ; //動態更新反向解析路徑
allow-update {192.168.88.1;};
};
步驟 3. 修改正/反向解析檔案
建立及修改正 / 反向解析檔案 (zone file) 內容如下請依個人網路環境自行調整。正向解析檔案 (Name > IP): 屆時 DHCP Client 資料將會動態更新至此檔。
# vi /etc/namedb/dyn/named.weithenn.home
;BIND DUMP V8
$ORIGIN home.
weithenn 3600 IN SOA dmz.weithenn.home. hostmaster.bsd.weithenn.org. (
2004121301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
3600 IN NS dmz.weithenn.home. ;Cl=2
反向解析檔案 (IP > Name): 屆時 DHCP Client 資料將會動態更新至此檔。
# vi /etc/namedb/primary/named.88.168.192.in-addr.arpa
$TTL 3600
@ IN SOA dmz.weithenn.home. hostmaster.bsd.weithenn.org. (
2004121301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS dmz.weithenn.home.
1 IN PTR gateway.weithenn.home.
10 IN PTR dmz.weithenn.home.
步驟 4. 啟動 zh-bind 服務
請鍵入如下指令啟動 zh-bind 服務,再預設的情況下 zh-bind 服務找尋的 zh-bind 設定檔為 /usr/local/etc/named.conf,因此我們必須建立連結至個人習慣設定檔路徑上 /etc/namedb/named.conf 以便 zh-bind 服務可正確找到我們所設定的設定檔。# /usr/local/sbin/named -u bind -g bind //啟動zh-bind
修改 /etc/rc.conf 以便系統重新開機時能自動載入 zh-bind 服務
# vi /etc/rc.conf //加入如下三行內容
named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-u bind -g bind"
啟動 zh-bind 服務成功後可看到類似如下訊息,由下列訊息可知正在動態更新 DHCP Client 資訊並寫入指定的正 / 反向解析檔案 (zone file)。
named273: starting (/etc/namedb/named.conf). named 8.3.7-REL Sat Jan 10 23:50:22 GMT 2004 root@wv1u.btc.adaptec
.com:/usr/obj/usr/src/usr.sbin/named
named273: limit files set to fdlimit (1024)
named273: dynamic zone file 'dyn/named.weithenn.home' is writable //寫入正向解析
named273: dynamic zone file 'dyn/named.88.168.192.in-addr.arpa' is writable //寫入反向解析
named274: Ready to answer queries.
5、Bind 9 部份 (英文電腦名稱解析)
步驟 1. 產生 TSIG Key
請於 Master DNS Server 鍵入如下指令產生 TSIG key (Symmetric HMAC-MD5 keys) 並記得所設定的 keyname (ex. home)。# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST <keyname>
執行完指令後系統會產生 2 個檔案 .key、.private
K<keyname>+157+<keyid>.key
K<keyname>+157+<keyid>.private
此例實所產生的 keyname 為 home 其產生的相關檔案如下所示,其中 keyid 是唯一的 Serial Number
Khome.+157+60109.key
Khome.+157+60109.private
步驟 2. 修改 BIND 設定檔 (named.conf)
zone file 的內容與 zh-bind 相同就不在多述,而 named.conf 設定則有些微不同。# vi /etc/namedb/named.conf
### Internal DDNS Zone
key "home" {
algorithm HMAC-MD5;
secret "GlMeusOMdPwbdVM+spMyHjCig/CxMw=="; //secret 內容為 Khome.+157+60109.key (從最後算起)
};
zone "weithenn.home" {
type master;
notify yes;
file "dynamic/named.weithenn.home"; //動態更新正向解析路徑
allow-update {key "home";};
};
zone "88.168.192.in-addr.arpa" {
type master ;
notify yes;
file "dynamic/named.88.168.192.in-addr.arpa"; //動態更新反向解析路徑
allow-update {key "home";};
};
上例的 secret 內即為抓 .key 的內容 (第 8 個欄位值),例如此例的 Khome.+157+60109.key 內容如下:
# cat Khome.+157+60109.key
home. IN KEY 512 3 157 hz0fEkyD3IpzPQyQGV+xZYSxZdLNbJ+Tlsvzpl2VAIIwKnCkgMQLrzMu GlMeusOMdPwbdVM+spMyHjCig/CxMw==
步驟 3. 修改 dhcpd.conf
與 zh-bind 所設定的 dhcpd.conf 內容不一樣的地方如下: key home {
algorithm hmac-md5;
secret "GlMeusOMdPwbdVM+spMyHjCig/CxMw==";
}
zone weithenn.home. {
primary gateway.weithenn.home.
key home;
}
zone 88.168.192.in-addr.arpa. {
primary gateway.weithenn.home.
key home;
}
步驟 4. 修改 rc.conf
修改 /etc/rc.conf 以便系統重新開機時能自動載入 named 服務。# vi /etc/rc.conf //加入如下三行內容
named_enable="YES"
named_flags="-u bind"
dhcpd_enable="YES"
步驟 5. 啟動相關服務 named 及 dhcpd 服務
鍵入如下指令啟動 named 及 dhcpd 服務。# /etc/rc.d/named start //啟動 named 服務
# /usr/local/etc/rc.d/isc-dhcpd.sh //啟動 dhcpd 服務
若設定及正確的話應該可以看到 zonefile.jnl 暫存檔最後就會更新內容至 zone file,值得注意的是 Bind9 是把 dynamic update 更新的資料是先寫在 zonefile.jnl 內,而不是直接對 zonefile 直接進行更新寫入動作,所以若是直接把 named 服務停止則更新到 zonefile.jnl 檔案內資料將不會寫入 zonefile 內,此時必須使用 rndc stop 才可將 zonefile.jnl 內更新資料回存至 zonefile 。
named.weithenn.home.jnl
named.88.168.192.in-addr.arpa.jnl
6、參考
7、Me FAQ
Q1. named: denied update from 192.168.78.1.49197 for "weithenn.home" IN ?
Error Message:啟動 named 服務後發現如下錯誤訊息?
named744: denied update from 192.168.78.1.49197 for "weithenn.home" IN
Ans:
請於 DNS 設定檔 name.conf 中 weithenn.home 的 zone 下加入此行 allow-update {192.168.78.1;}; 也就是允許 DHCP Server 的 IP Address 進行 zone file 的更新。
Q2. dhcpd: Unable to add forward map from 王小明.weithenn.home to 192.168.88.88: timed out ?
Error Message:啟動 named 服務後發現如下錯誤訊息?
dhcpd: Unable to add forward map from 王小明.weithenn.home to 192.168.88.88: timed out
Ans:
- 請確定啟動 zh-bind 才可解析中文電腦名稱
- 請確定設定檔路徑
預設值: /usr/local/etc/named.conf
修改後: /etc/namedb/named.conf (建立連結至如上路徑)
Q3. named: denied update from 192.168.78.1.49202 for "88.168.192.in-addr.arpa" IN ?
Error Message:啟動 named 服務後發現如下錯誤訊息?
named753: denied update from 192.168.78.1.49202 for "88.168.192.in-addr.arpa" IN
Ans:
- 請確定啟動 zh-bind 才可解析中文電腦名稱
- 請確定設定檔路徑
預設值: /usr/local/etc/named.conf
修改後: /etc/namedb/named.conf (建立連結至如上路徑)
Q4. named: error processing update packet (YXDOMAIN) id 25494 from 192.168.78.1.49160 ?
Error Message:啟動 named 服務後發現如下錯誤訊息?
named274: error processing update packet (YXDOMAIN) id 25494 from 192.168.78.1.49160
Ans:
找了google Google後查到 YXDOMAIN 訊息長示不應該存在的某一名字但它存在。
此次為將正向解析檔案內該筆對應資料刪除後再重新啟動 DNS 服務便不在出現錯誤訊息
# vi /etc/namedb/dyn/named.weithenn.home
gateway 3600 IN A 192.168.78.1 ;Cl=2 //刪除此筆解析記錄
Q5. 安裝 zh-bind8.3.7 套件時出現錯誤?
Error Message:安裝 zh-bind8.3.7 套件時出現如下錯誤訊息 (FreeBSD 6.0-Release -p7) 且安裝無法繼續
ns_notify.c: In function `sysnotify_slaves':
ns_notify.c:310: warning: passing arg 3 of `nlookup' from incompatible pointer type
ns_notify.c: In function `sysnotify_ns':
ns_notify.c:362: warning: passing arg 3 of `nlookup' from incompatible pointer type
(u=${USER-root} d=`pwd` h=`hostname || uname -n` t=`date`; sed -e "s|%WHEN%|${t}|" -e "s|%VERSION%|"8.3.7-REL"|"
-e "s|%WH OANDWHERE%|${u}@${h}:${d}|" < version.c > tmp_version.c); sleep 1
sed: 1: "s|%WHEN%|2006年 5月25日 ...": bad flag in substitute command: '?
*** Error code 1
Stop in /usr/ports/chinese/bind8/work/src/bin/named.
*** Error code 1
Ans:
升級為 FreeBSD 6.1-Stable 後再次執行安裝即可順利安裝了。
zh-bind-8.3.7 The Berkeley Internet Name Domain, an implementation of DNS
Q6. named: sysquery: no addrs found for root NS?
Error Message:啟動 named 服務後發現如下錯誤訊息?
named7913: sysquery: no addrs found for root NS
Ans:
表示您 DNS 內的 Root DNS 檔案太舊,請下載新的 Root DNS 檔案即可。
# cd /etc/named
# fetch ftp://ftp.internic.net/domain/named.root