建立DNS域名服务器
在 “ TCP/IP” 的 网 路 世 界 里 , 每 部 电 脑 的 身 分 都 是 由 4 个
数 字 所 组 成 的 “ IP Address” 来 辨 识 ( 例 如 168.95.192.1 ) , 这 些
数 字 号 码 就 像 是 我 们 的 身 分 证 号 码 一 样 , 某 些 部 份 数 字 分
别 代 表 不 同 的 意 义 。 当 我 们 在 使 用 网 际 网 路 资 源 时 , 如 果
直 接 使 用 “ IP Address” 来 进 行 连 线 , 那 是 最 直 接 不 过 了 ! 但
是 , 全 部 数 字 化 的 位 址 在 使 用 上 真 的 有 些 不 够 友 善 , 光 是
记 一 堆 数 字 就 够 头 疼 的 了 !
网 路 位 址 vs. 主 机 名 称
还 好 , 提 供 “ TCP/IP” 网 路 服 务 的 作 业 系 统 都 提 供 系 统
管 理 者 可 以 建 立 一 个 名 叫 “ HOSTS” 的 档 案 ( 例 如 Linux/UNIX中
的 /etc/hosts) , 在 这 个 系 统 档 案 档 案 里 , 系 统 管 理 者 可 以 将
已 知 的 网 路 机 器 分 别 赋 予 一 个 「 主 机 名 称 」 并 且 相 对 映 该
机 器 的 “ IP Address” 。 如 此 一 来 , 在 进 行 网 路 连 线 时 , 使 用
者 就 不 必 一 定 要 直 接 指 定 “ IP Address” 来 连 线 , 因 为 系 统 可
以 提 供 应 用 程 式 透 过 “ HOSTS” 中 所 提 供 的 「 主 机 名 称 与 位 址
对 照 资 料 」 取 得 该 「 主 机 名 称 」 的 「 网 路 位 址 」 。
这 样 子 , 使 用 网 路 程 式 时 是 方 便 多 了 , 但 是 , 国 际 网
路 的 机 器 成 千 上 万 , 如 果 只 是 利 用 “ HOSTS” 的 方 式 来 处 理
主 机 名 称 」 与 「 网 路 位 址 」 的 对 映 工 作 , 那 实 在 是 件 很 没
效 率 又 几 乎 不 可 能 的 事 。 所 以 , 如 果 网 路 使 用 的 领 域 只 是
单 纯 的 内 部 网 路 , 因 为 机 器 数 目 不 多 的 情 形 , 那 麽 使 用
HOSTS” 就 可 以 应 付 网 路 连 线 上 的 需 求 了 。
为 了 因 应 大 型 网 路 上 「 主 机 名 称 」 与 「 网 路 位 址 」 对
映 的 需 求 , 就 有 所 谓 建 立 「 名 称 伺 服 器 」 来 负 责 以 「 主 机
名 称 」 查 询 「 网 路 位 址 」 的 工 作 , 依 据 建 立 的 架 构 方 式 大
致 有 两 种 , “ Domain Name System” ( 简 称 : DNS) 、 “ NFS Network
Information Service” ( 简 称 : NIS) 。 我 们 都 可 以 在 Linux系 统 中
架 设 这 两 种 服 务 程 式 。
“ NIS” 较 早 是 由 Sun所 提 出 的 解 决 方 案 , 运 用 “ RPC” 的
功 能 来 提 供 解 决 「 主 机 名 称 与 位 址 」 的 查 询 , “ NIS” 的 伺
服 程 式 大 都 是 以 “ yp” 起 头 的 程 式 档 案 ( ypbind、
ypinit....) 。 笔 者 并 不 准 备 在 这 里 说 明 “ NIS” 伺 服 器 的 建 立
方 式 。 而 是 将 焦 点 摆 在 「 建 立 DNS名 称 伺 服 器 」 的 话 题 上 。
DNS服 务 型 态 的 种 类
时 下 在 国 际 网 路 上 所 存 在 的 「 名 称 伺 服 器 」 一 般 都 是
属 於 DNS伺 服 器 , 因 此 笔 者 才 会 将 焦 点 放 在 “ DNS” 的 建 立
上 。 由 於 “ DNS” 已 经 有 个 相 当 标 准 的 规 定 , 因 此 虽 然 不 同
平 台 上 作 业 系 统 可 能 有 相 当 的 差 异 , 但 是 建 立 “ DNS Server”
的 方 式 可 能 都 非 常 类 似 。 而 对 於 使 用 “ DNS” 的 方 式 也 是 大
同 小 异 。 关 於 使 用 或 架 设 “ DNS” 的 部 份 , 可 以 大 致 归 为 下
面 几 类 :
● 使 用 远 端 名 称 伺 服 器 :
如 果 自 己 主 机 上 并 没 有 架 设 “ DNS” , 可 以 设 定 一 台 已
知 的 「 名 称 伺 服 器 」 作 为 本 主 机 网 路 连 线 时 的 名 称 资 讯 的
提 供 者 。 在 Linux 系 统 中 , 我 们 可 以 藉 由 “ /etc/resolv.conf” 这
个 系 统 参 数 档 案 来 指 定 本 主 机 的 「 远 端 名 称 伺 服 器 」 。 例
如 :
simon:~# cat /etc/resolv.conf
#
#电 信 局 HINET的 名 称 伺 服 器 为 168.95.192.1
#下 面 就 设 定 该 主 机 为 本 主 机 的 「 名 称 伺 服 器 」
#
#
nameserver 168.95.192.1
#
#
一 般 使 用 者 环 境 大 都 是 属 於 这 一 类 的 使 用 型 态 。
● 所 谓 “ Cache-Only ” 的 名 称 伺 服 器 :
一 个 「 名 称 伺 服 器 」 也 不 可 能 拥 有 国 际 网 路 上 所 有 的
主 机 资 讯 , 因 此 它 提 供 一 个 转 送 方 式 , 将 自 己 「 名 称 伺 服
器 」 无 法 处 理 的 「 查 询 要 求 」 转 送 至 上 一 层 的 「 名 称 伺 服
器 」 查 询 , 然 後 将 所 得 到 的 查 询 结 果 , 传 送 给 提 出 查 询 要
求 的 主 机 。
而 “ Cache-Only” 的 “ DNS” 就 是 该 伺 服 器 的 主 机 资 讯 里 除
了 自 己 之 外 就 没 有 了 , 它 将 所 有 的 查 询 要 求 都 转 送 至 其 他
伺 服 器 去 查 询 。
● “ Primary” 名 称 伺 服 器 :
一 个 完 整 功 能 的 「 名 称 伺 服 器 」 , 管 理 一 个 或 数 个
Domain” 的 机 器 资 讯 。 而 这 些 主 机 相 关 的 资 料 都 依 照 格 式 储
存 於 伺 服 器 的 档 案 目 录 中 , 然 後 会 在 伺 服 器 启 动 时 将 这 些
资 料 读 入 系 统 。
● “ Secondary” 名 称 伺 服 器 :
基 本 上 它 也 是 一 个 完 整 功 能 的 「 名 称 伺 服 器 」 , 只 是
所 不 同 的 是 , 它 的 主 机 资 料 并 非 完 全 储 存 於 伺 服 器 所 在 的
档 案 目 录 , 而 由 某 个 “ Primary DNS” 来 提 供 。
在 本 次 的 主 题 里 , 我 们 会 就 以 建 立 “ Cache-Only” 以 及
Primary” 的 名 称 伺 服 器 做 个 范 例 说 明 。
使 用 BIND-4.9.6建 立 DNS Server
在 Linux系 统 里 , 我 们 使 用 “ BIND” ( Berkeley Internet Name
Domain Name Server) 来 建 立 我 们 的 「 名 称 伺 服 器 」 。
BIND” 这 个 软 体 每 个 Linux安 装 套 件 都 会 有 , 所 以 你 只 要
确 定 在 安 装 时 把 “ BIND” 软 体 安 装 至 Linux系 统 中 , 那 麽 就 已
经 具 备 建 立 “ DNS Server” 的 软 体 环 境 了 。 不 过 在 架 设 “ DNS”
之 前 , 笔 者 建 议 读 者 最 好 能 够 对 於 网 路 主 机 名 称 的 命 名 原
则 先 有 些 概 念 ( 不 妨 参 考 前 几 期 HOPE_NET月 刊 上 的 网 路 专 题 、
或 是 坊 间 网 路 相 关 的 书 籍 , 我 就 不 在 此 详 述 ) 。 接 下 来 我
们 以 一 个 假 设 环 境 来 配 合 说 明 架 设 「 DNS名 称 伺 服 器 」 的 步
骤 。 假 设 环 境 的 一 些 情 形 如 下 :
领 域 名 称 ( Domain) : simon.net
伺 服 器 主 机 名 称 ( Host) : simon
伺 服 器 网 路 位 址 ( IP) : 192.9.100.1
根 名 称 伺 服 器 ( Root DNS) : hinet.net ( 168.95.192.1)
● 建 立 “ /etc/named.boot” 启 动 设 定 档
“ BIND” 伺 服 程 式 在 启 动 时 首 先 会 读 取 “ /etc/named.boot”
这 个 控 制 档 , 因 此 首 先 就 来 进 行 “ named.boot” 的 设 定 工 作 。
(A)“ directory” 是 用 来 指 定 「 主 机 相 关 资 讯 」 资 料 档 案 的 所
在 目 录 。
(B)“ named.boot” 一 般 常 用 到 的 资 料 格 式 为 「 格 式 、 领 域 、 来
源 主 机 或 档 案 、 备 份 档 案 名 称 」 , 除 了 设 定 “ Secondary DNS”
时 较 会 用 到 备 份 档 案 这 个 栏 位 外 , 其 馀 大 都 只 用 到 前 叁 个
栏 位 。 关 於 档 案 名 称 部 份 并 没 有 限 制 , 除 了 “ named.boot” 不
可 变 更 之 外 , 其 他 的 主 机 资 料 档 案 可 以 自 行 指 定 名 称 。 (图
一)
(C)“ cache” 表 示 在 < root.cache> 这 个 档 案 设 定 着 本 伺 服 器 的
上 层 网 路 名 称 伺 服 器 。
“ primary” 则 分 别 设 定 每 个 指 定 「 领 域 」 的 主 机 的 资 料
档 案 。
(D)在 「 领 域 」 这 个 栏 位 中 「 .」 代 表 “ OTHER” , 在 本 例 子
中 , 如 果 查 询 的 主 机 所 在 领 域 并 未 特 别 定 义 时 , 则 使 用
cache」 的 设 定 转 至 上 层 名 称 伺 服 器 查 询 。 而 对 於 我 们 自 己
管 理 的 「 领 域 」 则 可 以 使 用 “ primary” 、 “ secondary” 来 定 义
各 别 「 领 域 」 主 机 资 料 纪 录 所 在 。
< simon.net> 是 一 般 主 机 名 称 的 形 式 , 有 些 时 候 使 用 者
会 以 “ IP Address” 来 查 询 主 机 资 讯 , 对 此 需 求 , 也 可 以 参 照
< 100.9.192.INADDR.ARPA> 的 格 式 来 定 义 < 192.9.100.x> 的 主 机 资
讯 。
● 建 立 “ /etc/named.hosts” 主 机 资 料
数 字 所 组 成 的 “ IP Address” 来 辨 识 ( 例 如 168.95.192.1 ) , 这 些
数 字 号 码 就 像 是 我 们 的 身 分 证 号 码 一 样 , 某 些 部 份 数 字 分
别 代 表 不 同 的 意 义 。 当 我 们 在 使 用 网 际 网 路 资 源 时 , 如 果
直 接 使 用 “ IP Address” 来 进 行 连 线 , 那 是 最 直 接 不 过 了 ! 但
是 , 全 部 数 字 化 的 位 址 在 使 用 上 真 的 有 些 不 够 友 善 , 光 是
记 一 堆 数 字 就 够 头 疼 的 了 !
网 路 位 址 vs. 主 机 名 称
还 好 , 提 供 “ TCP/IP” 网 路 服 务 的 作 业 系 统 都 提 供 系 统
管 理 者 可 以 建 立 一 个 名 叫 “ HOSTS” 的 档 案 ( 例 如 Linux/UNIX中
的 /etc/hosts) , 在 这 个 系 统 档 案 档 案 里 , 系 统 管 理 者 可 以 将
已 知 的 网 路 机 器 分 别 赋 予 一 个 「 主 机 名 称 」 并 且 相 对 映 该
机 器 的 “ IP Address” 。 如 此 一 来 , 在 进 行 网 路 连 线 时 , 使 用
者 就 不 必 一 定 要 直 接 指 定 “ IP Address” 来 连 线 , 因 为 系 统 可
以 提 供 应 用 程 式 透 过 “ HOSTS” 中 所 提 供 的 「 主 机 名 称 与 位 址
对 照 资 料 」 取 得 该 「 主 机 名 称 」 的 「 网 路 位 址 」 。
这 样 子 , 使 用 网 路 程 式 时 是 方 便 多 了 , 但 是 , 国 际 网
路 的 机 器 成 千 上 万 , 如 果 只 是 利 用 “ HOSTS” 的 方 式 来 处 理
主 机 名 称 」 与 「 网 路 位 址 」 的 对 映 工 作 , 那 实 在 是 件 很 没
效 率 又 几 乎 不 可 能 的 事 。 所 以 , 如 果 网 路 使 用 的 领 域 只 是
单 纯 的 内 部 网 路 , 因 为 机 器 数 目 不 多 的 情 形 , 那 麽 使 用
HOSTS” 就 可 以 应 付 网 路 连 线 上 的 需 求 了 。
为 了 因 应 大 型 网 路 上 「 主 机 名 称 」 与 「 网 路 位 址 」 对
映 的 需 求 , 就 有 所 谓 建 立 「 名 称 伺 服 器 」 来 负 责 以 「 主 机
名 称 」 查 询 「 网 路 位 址 」 的 工 作 , 依 据 建 立 的 架 构 方 式 大
致 有 两 种 , “ Domain Name System” ( 简 称 : DNS) 、 “ NFS Network
Information Service” ( 简 称 : NIS) 。 我 们 都 可 以 在 Linux系 统 中
架 设 这 两 种 服 务 程 式 。
“ NIS” 较 早 是 由 Sun所 提 出 的 解 决 方 案 , 运 用 “ RPC” 的
功 能 来 提 供 解 决 「 主 机 名 称 与 位 址 」 的 查 询 , “ NIS” 的 伺
服 程 式 大 都 是 以 “ yp” 起 头 的 程 式 档 案 ( ypbind、
ypinit....) 。 笔 者 并 不 准 备 在 这 里 说 明 “ NIS” 伺 服 器 的 建 立
方 式 。 而 是 将 焦 点 摆 在 「 建 立 DNS名 称 伺 服 器 」 的 话 题 上 。
DNS服 务 型 态 的 种 类
时 下 在 国 际 网 路 上 所 存 在 的 「 名 称 伺 服 器 」 一 般 都 是
属 於 DNS伺 服 器 , 因 此 笔 者 才 会 将 焦 点 放 在 “ DNS” 的 建 立
上 。 由 於 “ DNS” 已 经 有 个 相 当 标 准 的 规 定 , 因 此 虽 然 不 同
平 台 上 作 业 系 统 可 能 有 相 当 的 差 异 , 但 是 建 立 “ DNS Server”
的 方 式 可 能 都 非 常 类 似 。 而 对 於 使 用 “ DNS” 的 方 式 也 是 大
同 小 异 。 关 於 使 用 或 架 设 “ DNS” 的 部 份 , 可 以 大 致 归 为 下
面 几 类 :
● 使 用 远 端 名 称 伺 服 器 :
如 果 自 己 主 机 上 并 没 有 架 设 “ DNS” , 可 以 设 定 一 台 已
知 的 「 名 称 伺 服 器 」 作 为 本 主 机 网 路 连 线 时 的 名 称 资 讯 的
提 供 者 。 在 Linux 系 统 中 , 我 们 可 以 藉 由 “ /etc/resolv.conf” 这
个 系 统 参 数 档 案 来 指 定 本 主 机 的 「 远 端 名 称 伺 服 器 」 。 例
如 :
simon:~# cat /etc/resolv.conf
#
#电 信 局 HINET的 名 称 伺 服 器 为 168.95.192.1
#下 面 就 设 定 该 主 机 为 本 主 机 的 「 名 称 伺 服 器 」
#
#
nameserver 168.95.192.1
#
#
一 般 使 用 者 环 境 大 都 是 属 於 这 一 类 的 使 用 型 态 。
● 所 谓 “ Cache-Only ” 的 名 称 伺 服 器 :
一 个 「 名 称 伺 服 器 」 也 不 可 能 拥 有 国 际 网 路 上 所 有 的
主 机 资 讯 , 因 此 它 提 供 一 个 转 送 方 式 , 将 自 己 「 名 称 伺 服
器 」 无 法 处 理 的 「 查 询 要 求 」 转 送 至 上 一 层 的 「 名 称 伺 服
器 」 查 询 , 然 後 将 所 得 到 的 查 询 结 果 , 传 送 给 提 出 查 询 要
求 的 主 机 。
而 “ Cache-Only” 的 “ DNS” 就 是 该 伺 服 器 的 主 机 资 讯 里 除
了 自 己 之 外 就 没 有 了 , 它 将 所 有 的 查 询 要 求 都 转 送 至 其 他
伺 服 器 去 查 询 。
● “ Primary” 名 称 伺 服 器 :
一 个 完 整 功 能 的 「 名 称 伺 服 器 」 , 管 理 一 个 或 数 个
Domain” 的 机 器 资 讯 。 而 这 些 主 机 相 关 的 资 料 都 依 照 格 式 储
存 於 伺 服 器 的 档 案 目 录 中 , 然 後 会 在 伺 服 器 启 动 时 将 这 些
资 料 读 入 系 统 。
● “ Secondary” 名 称 伺 服 器 :
基 本 上 它 也 是 一 个 完 整 功 能 的 「 名 称 伺 服 器 」 , 只 是
所 不 同 的 是 , 它 的 主 机 资 料 并 非 完 全 储 存 於 伺 服 器 所 在 的
档 案 目 录 , 而 由 某 个 “ Primary DNS” 来 提 供 。
在 本 次 的 主 题 里 , 我 们 会 就 以 建 立 “ Cache-Only” 以 及
Primary” 的 名 称 伺 服 器 做 个 范 例 说 明 。
使 用 BIND-4.9.6建 立 DNS Server
在 Linux系 统 里 , 我 们 使 用 “ BIND” ( Berkeley Internet Name
Domain Name Server) 来 建 立 我 们 的 「 名 称 伺 服 器 」 。
BIND” 这 个 软 体 每 个 Linux安 装 套 件 都 会 有 , 所 以 你 只 要
确 定 在 安 装 时 把 “ BIND” 软 体 安 装 至 Linux系 统 中 , 那 麽 就 已
经 具 备 建 立 “ DNS Server” 的 软 体 环 境 了 。 不 过 在 架 设 “ DNS”
之 前 , 笔 者 建 议 读 者 最 好 能 够 对 於 网 路 主 机 名 称 的 命 名 原
则 先 有 些 概 念 ( 不 妨 参 考 前 几 期 HOPE_NET月 刊 上 的 网 路 专 题 、
或 是 坊 间 网 路 相 关 的 书 籍 , 我 就 不 在 此 详 述 ) 。 接 下 来 我
们 以 一 个 假 设 环 境 来 配 合 说 明 架 设 「 DNS名 称 伺 服 器 」 的 步
骤 。 假 设 环 境 的 一 些 情 形 如 下 :
领 域 名 称 ( Domain) : simon.net
伺 服 器 主 机 名 称 ( Host) : simon
伺 服 器 网 路 位 址 ( IP) : 192.9.100.1
根 名 称 伺 服 器 ( Root DNS) : hinet.net ( 168.95.192.1)
● 建 立 “ /etc/named.boot” 启 动 设 定 档
“ BIND” 伺 服 程 式 在 启 动 时 首 先 会 读 取 “ /etc/named.boot”
这 个 控 制 档 , 因 此 首 先 就 来 进 行 “ named.boot” 的 设 定 工 作 。
(A)“ directory” 是 用 来 指 定 「 主 机 相 关 资 讯 」 资 料 档 案 的 所
在 目 录 。
(B)“ named.boot” 一 般 常 用 到 的 资 料 格 式 为 「 格 式 、 领 域 、 来
源 主 机 或 档 案 、 备 份 档 案 名 称 」 , 除 了 设 定 “ Secondary DNS”
时 较 会 用 到 备 份 档 案 这 个 栏 位 外 , 其 馀 大 都 只 用 到 前 叁 个
栏 位 。 关 於 档 案 名 称 部 份 并 没 有 限 制 , 除 了 “ named.boot” 不
可 变 更 之 外 , 其 他 的 主 机 资 料 档 案 可 以 自 行 指 定 名 称 。 (图
一)
(C)“ cache” 表 示 在 < root.cache> 这 个 档 案 设 定 着 本 伺 服 器 的
上 层 网 路 名 称 伺 服 器 。
“ primary” 则 分 别 设 定 每 个 指 定 「 领 域 」 的 主 机 的 资 料
档 案 。
(D)在 「 领 域 」 这 个 栏 位 中 「 .」 代 表 “ OTHER” , 在 本 例 子
中 , 如 果 查 询 的 主 机 所 在 领 域 并 未 特 别 定 义 时 , 则 使 用
cache」 的 设 定 转 至 上 层 名 称 伺 服 器 查 询 。 而 对 於 我 们 自 己
管 理 的 「 领 域 」 则 可 以 使 用 “ primary” 、 “ secondary” 来 定 义
各 别 「 领 域 」 主 机 资 料 纪 录 所 在 。
< simon.net> 是 一 般 主 机 名 称 的 形 式 , 有 些 时 候 使 用 者
会 以 “ IP Address” 来 查 询 主 机 资 讯 , 对 此 需 求 , 也 可 以 参 照
< 100.9.192.INADDR.ARPA> 的 格 式 来 定 义 < 192.9.100.x> 的 主 机 资
讯 。
● 建 立 “ /etc/named.hosts” 主 机 资 料

