10.07.2015 Views

寬頻網路與Linux伺服器Part I

寬頻網路與Linux伺服器Part I

寬頻網路與Linux伺服器Part I

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Upstream/Upload 上 傳 就 需 要 依 靠 數 據 撥 號 網 路 了 , 等 到 國 內法 令 通 過 可 以 讓 纜 線 數 據 機 業 者 經 營 雙 向 傳 輸 的 業 務 時 , 纜線 數 據 機 將 會 變 成 主 流 性 的 網 際 網 路 連 接 管 道 。ADSL 的 技 術 是 在 獨 立 的 一 條 電 話 線 上 所 提 供 的 專 屬 網 路服 務 ,Cable modem 纜 線 數 據 機 則 是 在 共 享 媒 介 ( 有 線 電 視 纜線 ) 上 提 供 服 務 , 雖 然 Cable modem 宣 稱 整 體 下 行 頻 寬 可 達36Mbps, 但 實 際 上 這 一 個 頻 寬 是 由 同 一 段 纜 線 下 且 使 用 同一 個 6MHz 頻 帶 的 所 有 用 戶 所 共 享 , 所 以 當 同 一 個 時 間 上 網的 使 用 者 越 多 時 , 每 位 使 用 者 所 分 享 到 的 頻 寬 就 會 有 高 低 起伏 之 不 同 , 無 法 保 證 每 個 用 戶 的 連 線 品 質 都 可 以 達 到 一 定 的水 準 與 速 度 , 此 外 Cable modem 與 ADSL 最 大 的 不 同 在 於 可 使用 的 線 路 數 目 。纜 線 數 據 機 目 前 筆 者 個 人 認 為 最 大 的 優 勢 在 於 「 價 錢 」,目 前 有 線 電 視 一 個 月 的 月 租 最 高 為 六 百 元 , 最 近 台 北 市 更 制定 出 月 租 費 的 最 高 額 度 不 得 超 過 五 百 五 十 元 , 加 上 纜 線 數 據機 單 向 傳 輸 月 租 費 九 百 多 元 或 者 雙 向 傳 輸 月 租 費 一 千 兩 百多 元 來 看 , 纜 線 數 據 機 的 「 經 濟 效 益 」 的 確 高 於 中 華 電 信 每個 月 要 花 上 四 五 仟 元 以 上 月 租 費 好 上 許 多 。但 是 不 管 怎 說 , 對 國 內 的 使 用 者 、 讀 者 而 言 ,「 寬 頻 」 網路 時 代 的 確 已 經 來 臨 了 , 每 一 位 網 際 網 路 的 使 用 者 都 有 可 能會 接 觸 、 運 用 、 使 用 到 寬 頻 網 路 , 不 管 是 ADSL 或 CableModem。網 際 網 路 上 提 供 了 非 常 多 可 運 用 的 資 源 , 以 往 因 為 礙 於 網際 網 路 頻 寬 的 關 係 , 數 據 機 撥 接 的 使 用 者 通 常 都 沒 有 能 力 提供 資 源 給 網 際 網 路 上 的 其 他 「 網 友 」, 大 多 只 有 單 方 向 的 擷取 網 際 網 路 的 資 源 , 這 其 中 包 含 了 免 費 的 WWW 網 頁 、 免 費的 電 子 郵 件 、 免 費 的 計 數 器 、 免 費 的 FTP 等 等 。但 是 現 在 網 際 網 路 的 頻 寬 越 來 越 高 了 ,「 寬 頻 」 網 路 的 使用 者 、 讀 者 群 越 來 越 多 , 這 些 原 本 依 靠 他 人 提 供 的 資 源 現 在全 部 都 可 以 拉 回 來 到 自 己 的 系 統 上 來 處 理 , 也 就 是 可 以 在 自己 的 區 域 網 路 裡 架 設 WWW 伺 服 器 、 電 子 郵 件 Mail 伺 服 器 、


FTP 伺 服 器 等 等 , 對 一 般 的 使 用 者 而 言 , 再 去 申 請 一 個 免 費的 區 域 名 稱 Domain Name 回 來 對 應 、 使 用 , 就 可 以 擁 有 個 人或 中 小 企 業 專 屬 的 WWW 伺 服 器 、 電 子 郵 件 Mail 伺 服 器 、FTP伺 服 器 囉 , 而 且 這 些 必 須 使 用 到 的 資 源 全 部 拉 回 來 自 己 管理 , 可 以 省 去 擔 心 Security 保 密 方 面 的 擔 心 與 困 擾 , 再 也 不必 擔 心 免 費 的 伺 服 器 故 障 以 至 於 某 一 方 面 的 資 源 無 法 使 用的 困 擾 。筆 者 舉 一 個 最 簡 單 的 例 子 提 供 給 一 般 的 使 用 者 以 及 中 小企 業 參 考 :1. 申 請 一 個 專 屬 Domain Name 只 需 要 兩 年 70 美 金 , 例 如筆 者 目 前 服 務 公 司 的 「kifer.com」2. 當 然 也 可 以 申 請 一 個 固 定 、 免 費 的 Domain Name3. 申 請 一 個 提 供 網 頁 空 間 以 及 轉 信 Forward 的 服 務 一 年不 到 一 百 元 美 金 , 也 就 是 可 以 把 寫 給 、 傳 給「Everybody@kifer.com」 這 樣 的 電 子 郵 件 轉 寄 給 真 正電 子 郵 件 位 址 的 服 務 , 例 如 寫 給 筆 者「 super@kifer.com 」 的 電 子 郵 件 實 際 上 會 轉 寄 到「super@bigfoot.com」, 然 後 再 透 過 「Bigfoot.com」可 以 允 許 轉 寄 給 五 個 電 子 郵 件 位 址 的 服 務 , 真 正 將 電子 信 件 傳 送 到 筆 者 的 五 處 電 子 郵 件 信 箱 內 。4. 在 辦 公 室 內 架 設 電 子 郵 件 伺 服 器 , 建 立 所 有 公 司 同 仁的 電 子 郵 件 地 址 , 把 所 有 的 轉 信 動 作 全 部 轉 寄 到 辦 公室 內 架 設 電 子 郵 件 伺 服 器 內 。這 樣 一 來 公 司 所 有 同 仁 都 可 以 擁 有「Everybody@kifer.com」 這 樣 的 專 屬 電 子 郵 件 地 址 , 而 實 際上 所 有 的 電 子 郵 件 最 後 還 是 轉 寄 到 辦 公 室 內 架 設 的 電 子 郵件 伺 服 器 裡 , 這 樣 做 的 目 的 :1. 省 錢 , 讀 者 可 以 計 算 一 下 , 上 頭 的 花 費 每 一 年 需 要 支付 多 少 費 用 , 當 然 網 際 網 路 本 身 的 費 用 本 來 就 是 需 要支 付 的 。


2. 每 一 個 人 都 有 「 像 樣 」 的 電 子 郵 件 地 址 , 而 且 看 起 來就 是 公 司 專 屬 的 「Everybody@kifer.com」 電 子 郵 件 地址 , 這 是 公 司 的 形 象 , 也 是 追 求 的 目 標 。那 麼 以 個 人 而 言 , 如 果 使 用 免 費 的 Domain Name 的 話 , 例如 筆 者 就 可 以 擁 有 「superlee@superlee.dynip.com 」 或「superlee@ftpforum.dhs.org」 這 一 類 型 的 專 屬 電 子 郵 件 地址 , 而 最 重 要 的 就 是 「 伺 服 器 」 都 在 家 裡 、 辦 公 室 裡 , 不 必擔 心 外 頭 免 費 的 伺 服 器 當 機 、 斷 線 以 及 Security 等 問 題 。那 麼 要 架 設 「 伺 服 器 」 的 最 佳 選 擇 是 什 麼 呢 ? 硬 體 上 需 要什 麼 樣 的 配 備 ? 軟 體 、 作 業 系 統 的 要 求 又 有 哪 些 呢 ? 對 一 般的 使 用 者 而 言 ,「 伺 服 器 」 還 是 一 個 遙 不 可 及 的 系 統 , 而 且要 架 設 一 台 伺 服 器 似 乎 還 是 需 要 花 上 不 少 「 銀 兩 」。實 際 上 依 照 筆 者 在 這 裡 要 舉 出 的 範 例 而 言 ,80486 或Pentium 等 級 早 期 的 個 人 電 腦 早 就 可 以 「 勝 任 」 筆 者 前 面 所提 出 的 需 求 , 誰 說 要 架 設 伺 服 器 一 定 要 用 微 軟 的 WindowsNT 視 窗 作 業 系 統 或 Unix、Solaris, 誰 說 要 架 設 伺 服 器 一 定 得用 商 業 軟 體 ,80486 或 早 期 的 Pentium 個 人 電 腦 加 上 免 費 的 作業 系 統 與 應 用 軟 體 , 同 樣 可 以 架 設 一 台 同 時 提 供 WWW 伺 服器 , 電 子 郵 件 Mail 伺 服 器 以 及 FTP 伺 服 器 。商 業 上 使 用 率 非 常 頻 繁 、 需 要 高 速 網 路 、 需 要 使 用 到 大 型資 料 庫 的 使 用 者 , 才 需 要 使 用 到 高 價 位 的 伺 服 器 以 及 作 業 系統 與 套 裝 軟 體 , 對 一 般 中 小 企 業 以 及 一 般 的 使 用 者 而 言 , 免費 的 Linux 作 業 系 統 以 及 一 般 的 低 價 個 人 電 腦 已 經 是 綽 綽 有餘 囉 !當 然 筆 者 不 是 要 讀 者 真 的 去 「 挖 」 出 一 台 80486 等 級 的 個人 電 腦 , 筆 者 之 所 以 會 這 麼 介 紹 主 要 是 告 訴 各 位 讀 者 , 要 達到 前 述 的 需 求 , 不 需 要 特 殊 的 硬 體 配 備 , 早 期 被 淘 汰 的 個 人電 腦 現 在 都 可 以 拿 出 來 運 用 了 , 筆 者 就 是 以 一 台 使 用 AMDK5 133MHz 的 個 人 電 腦 , 加 上 一 台 破 破 的 螢 幕 以 及 網 路 卡 ,架 設 了 WWW 伺 服 器 , 電 子 郵 件 Mail 伺 服 器 以 及 FTP 伺 服器 , 現 在 就 讓 筆 者 把 這 些 架 設 過 程 的 經 驗 分 享 給 各 位 讀 者 ,


介 面 卡 , 介 面 卡 上 採 用 MXIC 的 MX98715 編 號 IC, 雖 然 這 一顆 IC 相 容 於 其 他 廠 牌 例 如 DEC 的 10/100 Fast Ethernet IC, 但是 在 RedHat 所 提 供 的 網 路 介 面 「tulip」 驅 動 程 式 部 分 並 無 法正 常 的 驅 動 , 而 日 商 Buffalo 並 沒 有 提 供 Linux 方 面 的 驅 動 程式 , 筆 者 連 接 到 MXIC 的 WWW 全 球 資 訊 網 頁 上 , 找 到 對 應MX98715 編 號 IC 的 驅 動 程 式 裡 , 雖 然 已 經 提 供 了 Linux 方 面的 驅 動 程 式 , 無 奈 這 一 份 驅 動 程 式 是 經 過 Compile 編 譯 後 的檔 案 ,Linux 的 玩 家 都 知 道 ,Linux 作 業 系 統 的 核 心 版 本 持 續的 在 變 更 當 中 , 而 MXIC 所 提 供 的 Linux 驅 動 程 式 僅 適 合 於 某一 個 核 心 Kernel 早 期 2.0.36 版 本 , 所 以 沒 有 辦 法 在 RedHat 底下 正 常 工 作 ( 目 前 的 Kernel 核 心 版 本 為 2.2.12-20)。而 實 際 上 RedHat 也 提 供 了 「tulip」 驅 動 程 式 , 筆 者 檢 視 了「tulip.c」 驅 動 程 式 原 始 檔 案 , 發 現 RedHat 所 提 供 的 「tulip.c」驅 動 程 式 原 始 檔 案 版 本 為 0.89, 這 一 個 版 本 可 以 與 大 部 分10/100Mbps 乙 太 網 路 介 面 一 起 工 作 , 但 是 無 法 與 Buffalo 的LGY-PCI-TXL 網 路 介 面 正 常 工 作 , 問 題 的 症 狀 為 Buffalo 的LGY-PCI-TXL 網 路 介 面 可 以 被 0.89 版 本 的 「tulip」 驅 動 程 式偵 測 到 , 並 且 編 譯 「tulip」 驅 動 程 式 的 原 始 檔 案 驅 動 之 , 但是 只 要 「tulip」 驅 動 程 式 一 啟 動 , 原 本 在 電 源 啟 動 時 可 以 很明 顯 看 到 的 LINK/ACT 燈 號 會 立 刻 熄 滅 , 這 在 Switch Hub 上的 指 示 燈 號 也 可 以 很 明 顯 的 看 到 , 一 但 畫 面 上 啟 動 「eth0」時 ( 或 eth1), 原 本 LINK/ACT 等 指 示 燈 號 會 立 刻 熄 滅 。說 明 : 這 個 時 候 執 行 「 ifconfig」 」 查 看 網 路 的 使 用 狀 態 時 , 因 為 網 路 介 面 無 法 正 常 工 作 , 所 以 只 能 見 到 LocalLoopback 這 一 組 代 表 RedHat 系 統 本 身 的 網 路 資 訊 , 而 所 謂 eth0/eth1/eth2 則 是 Ethernet 乙 太 網 路 介 面 的Alias 化 名 代 表 , eth0 代 表 第 一 片 乙 太 網 路 介 面 , eth1 則 表 示 為 第 二 片 乙 太 網 路 介 面 一 此 類 推 。loLink encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:3924 Metric:1RX packets:41 errors:0 dropped:0 overruns:0 frame:0TX packets:41 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0


筆 者 不 斷 的 在 網 際 網 路 上 尋 找 這 一 個 問 題 的 解 決 方 案 , 找了 幾 個 地 方 ( 透 過 「http://www.yahoo.com」) 終 於 見 到 了這 樣 的 一 段 文 字 敘 述 「MX98715/MX98725 chipset is notcompatible (inpart) with the standard tulip driver in kernel2.0.36 (driver version 0.89)」, 終 於 讓 筆 者 找 到 重 點 所 在 了 ,原 來 RedHat 內 含 0.89 版 本 的 tulip 驅 動 程 式 與 MX98715 網 路晶 片 不 相 容 , 導 致 RedHat 可 以 辨 識 出 MX98715 網 路 晶 片 但是 卻 不 能 正 常 的 驅 動 , 所 以 只 要 找 到 新 版 本 的 tulip 驅 動 程 式就 可 以 解 決 這 一 個 問 題 。筆 者 在 網 際 網 路 上 共 找 到 0.90 版 本 以 及 0.91 版 本 的 tulip 驅動 程 式 原 始 檔 案 , 所 以 只 要 把 這 一 個 新 版 本 的 tulip 驅 動 程 式原 始 檔 案 拷 貝 到 RedHat 系 統 內 , 重 新 編 譯 後 就 可 以 使 用 了 ,筆 者 整 個 重 新 編 譯 tulip 驅 動 程 式 的 過 程 如 下 :1. 首 先 必 須 準 備 一 份 RedHat 的 原 始 檔 案 , 方 法 簡 單 , 先 把 光 碟 機CD-ROM Mount 起 來 , 如 果 在 安 裝 RedHat 時 是 透 過 光 碟 機 安 裝的 話 , 則 光 碟 機 的 設 定 已 經 加 入 到 RedHat 系 統 內 , 只 要 把 RedHat的 光 碟 片 放 到 光 碟 機 內 , 下 達 「mount /mnt/cdrom」 這 樣 的 指 令就 可 以 啟 動 光 碟 機 。說 明 : 在 「/etc/fstab」 這 一 個 檔 案 裡 , 如 果 有 下 列 的 光 碟 機 設 定 的話 , 因 為 已 經 指 定 了 這 一 部 Device 使 用 的 檔 案 系 統 了 , 所 以 只 需 要下 達 「mount /mnt/cdrom」 這 樣 的 指 令 就 可 以 , 否 則 就 需 要 依 照「mount」 的 語 法 來 啟 動 光 碟 機 。/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 02. 在 光 碟 機 內 把 目 錄 指 向 「RedHat/RPMS」 子 目 錄 底 下 , 然 後 執行 「rpm –ivh kernel-source*」 這 一 個 命 令 , 接 下 來 就 可 以 見 到RedHat 系 統 從 光 碟 片 上 安 裝 核 心 Kernel 的 原 始 檔 案 到「/usr/src/linux/」 這 一 個 子 目 錄 內 , 並 且 以 「#」 井 字 符 號 顯 示目 前 的 完 成 比 例 , 這 一 個 步 驟 的 主 要 目 的 在 於 編 譯 tulip.c 檔 案 時需 要 使 用 到 一 些 核 心 的 原 始 檔 案 , 所 以 必 須 把 核 心 的 原 始 檔 案安 裝 到 RedHat 系 統 內 。


3. 第 三 個 步 驟 就 是 把 新 版 本 的 「tulip.c」 驅 動 程 式 原 始 檔 案 拷 貝 到RedHat 系 統 內 , 因 為 ( 假 設 ) 目 前 的 網 路 介 面 還 沒 有 被 啟 動 ( 因為 現 在 才 要 更 新 網 路 介 面 的 驅 動 程 式 呀 !), 所 以 必 須 透 過 軟式 磁 碟 片 的 方 式 把 「tulip.c」 驅 動 程 式 原 始 檔 案 拷 貝 進 來 , 如 此才 可 以 進 行 編 譯 的 動 作 , 如 果 是 從 其 他 Linux 系 統 將 「tulip.c」驅 動 程 式 原 始 檔 案 拷 貝 到 軟 式 磁 碟 片 上 時 , 則 可 以 直 接 透 過「mount /mnt/floppy」 這 樣 的 指 令 來 啟 動 軟 式 磁 碟 機 , 然 後 再 到「/mnt/floppy」 裡 拷 貝 「tulip.c」 驅 動 程 式 原 始 檔 案 到 RedHat 系統 內 , 如 果 「tulip.c」 驅 動 程 式 原 始 檔 案 是 拷 貝 到 其 他 非 Linux系 統 ( 也 就 是 MS-DOS/Win98 等 作 業 系 統 ) 的 軟 式 磁 碟 片 上 時 ,就 必 須 下 達 「mount –t msdos /dev/fd0 /mnt/floppy」 這 樣 的 指 令來 啟 動 軟 式 磁 碟 機 , 讓 Linux 作 業 系 統 可 以 正 常 讀 寫 其 他 作 業 系統 所 使 用 的 軟 式 磁 碟 片 。說 明 : 在 「/etc/fstab」 這 一 個 檔 案 裡 , 已 經 有 軟 式 磁 碟 機 的 參 數 設定 資 料 , 但 是 這 裡 軟 式 磁 碟 機 被 設 定 只 能 讀 寫 Linux 專 屬 的 「ext2」檔 案 系 統 喔 !/dev/fd0 /mnt/floppy ext2 noauto,owner 0 04. 依 照 筆 者 作 業 的 習 慣 是 把 「tulip.c」 驅 動 程 式 原 始 檔 案 拷 貝 到「$home」 的 子 目 錄 下 , 不 過 筆 者 建 議 最 好 還 是 以 「root」 管 理員 的 身 分 登 入 RedHat 系 統 內 再 來 進 行 編 譯 的 動 作 , 以 免 得 某 些檔 案 或 目 錄 因 為 權 限 的 問 題 而 無 法 編 譯 成 功 , 所 以 筆 者 的 習 慣就 是 直 接 在 「/root」 子 目 錄 下 進 行 「tulip.c」 驅 動 程 式 原 始 檔 案的 編 譯 工 作 ,。5. 接 下 下 達 「gcc -DMODULE -D__KERNEL__ -I/usr/src/linux/net/inet -Wall-Wstrict-prototypes -O6 -c tulip.c `[ -f /usr/include/linux/modversions.h ] && echo-DMODVERSIONS`」 的 指 令 , 所 有 的 指 令 全 部 都 在 同 一 行 完 成 , 指令 裡 頭 區 分 有 大 小 寫 , 在 「-D__KERNEL__」 的 指 令 裡 ,KERNEL前 後 都 各 有 兩 個 底 線 「_」, 而 「-O6」 則 是 英 文 字 母 大 寫 的 「O」不 是 阿 拉 伯 數 字 零 喔 ,「`[ -f] 在 小 寫 的 F 前 面 有 一 個 空 白 , 這 樣的 一 個 命 令 在 編 譯 0.90 版 本 的 「tulip.c」 驅 動 程 式 原 始 檔 案 時 會有 注 意 的 訊 息 產 生 , 使 用 者 不 必 介 意 , 而 如 果 編 譯 0.91 版 本 的


* 2 AUI* 3 100baseTx* 4 10baseT-FD* 5 100baseTx-FD* 6 100baseT4* 7 100baseFx* 8 100baseFx-FD* 9 MII 10baseT* 10 MII 10baseT-FD* 11 MII (autoselect)* 12 10baseT (no autoselect), v0.69 and later only* 13 MII 100baseTx* 14 MII 100baseTx-FD* 15 MII 100baseT4* 在 debug 除 錯 的 設 定 範 圍 為 :* 1 normal output* 2 more verbose* 3 even more verbose* 4 even more verbose* 6 insanely verbose9. 然 後 重 新 啟 動 RedHat 系 統 後 , 就 可 以 見 到 RedHat 系 統 已 經 可 以正 常 的 驅 動 日 商 Buffalo 的 LGY-PCI-TXL 網 路 介 面 卡 了 , 重 新 啟動 RedHat 系 統 的 命 令 為 「/sbin/shutdown -r now」。經 過 這 幾 個 步 驟 , 在 使 用 了 新 版 本 的 「tulip.c」 驅 動 程 式


後 , 就 可 以 讓 RedHat 或 其 他 Linux 系 統 正 常 的 驅 動 日 商Buffalo 的 LGY-PCI-TXL 網 路 介 面 卡 , 當 然 上 頭 所 介 紹 的 這一 些 程 序 並 不 是 只 解 決 日 商 Buffalo 的 LGY-PCI-TXL 網 路 介面 卡 無 法 正 常 驅 動 的 問 題 , 只 要 是 屬 於 10/100Mbps 規 格 , 並且 與 MXIC MX98715 等 系 列 IC 相 容 的 網 路 晶 片 , 都 有 可 能 會遇 到 Linux 系 統 無 法 正 常 驅 動 的 問 題 , 而 「tulip.c」 驅 動 程 式則 是 專 門 用 來 提 供 給 10/100Mbps 規 格 網 路 介 面 卡 使 用 的 驅動 程 式 , 所 以 只 要 讀 者 使 用 的 10/100Mbps 規 格 網 路 介 面 卡 無法 在 Linux 系 統 下 正 常 驅 動 時 , 就 可 以 透 過 上 述 的 幾 個 步驟 , 使 用 新 版 本 的 「tulip.c」 驅 動 程 式 , 就 可 以 解 決 這 一 個問 題 了 。第 二 片 網 路 卡Linux 作 業 系 統 「 通 常 」 只 能 偵 測 出 個 人 電 腦 內 的 某 一 片網 路 介 面 卡 , 換 句 話 說 當 個 人 電 腦 內 安 裝 了 兩 片 網 路 介 面 卡時 ,Linux 也 「 可 能 」 只 能 辨 識 出 其 中 的 一 張 , 所 以 在 安 裝RedHat 系 統 後 , 原 本 擁 有 兩 片 網 路 介 面 卡 的 個 人 電 腦 只 能 見到 其 中 的 一 片 , 當 然 也 只 能 使 用 到 其 中 的 一 片 囉 。以 筆 者 工 作 中 的 個 人 電 腦 其 中 的 一 個 範 例 來 看 , 筆 者 的 個人 電 腦 裡 內 建 了 AMD PC Family 系 列 的 網 路 介 面 卡 一 片 , 並且 筆 者 也 額 外 安 裝 了 一 片 ISA 型 態 的 乙 太 網 路 卡 , 這 一 片ISA 型 態 的 乙 太 網 路 卡 的 硬 體 設 定 為 I/O 位 址 0x300 以 及 IRQ5 第 五 號 中 斷 要 求 。安 裝 兩 片 網 路 卡 的 目 的 在 於 將 來 需 要 透 過 這 一 部 RedHat系 統 進 行 Gateway 的 要 求 , 在 Windows 9x 視 窗 作 業 環 境 下 ,可 以 透 過 SyGate、WinRoute Pro 之 類 的 應 用 軟 體 , 讓 區 域 網路 內 所 有 的 視 窗 作 業 系 統 工 作 站 來 分 享 這 一 個 網 際 網 路 連接 後 的 資 源 , 簡 單 的 說 就 是 只 要 區 域 網 路 內 某 一 部 特 定 的 個人 電 腦 連 接 到 網 際 網 路 之 後 ( 不 管 是 透 過 數 據 機 、 纜 線 數 據機 或 ISDN/ADSL), 其 他 區 域 網 路 內 的 個 人 電 腦 也 都 跟 著可 以 使 用 、 連 接 到 網 際 網 路 。那 麼 既 然 RedHat 已 經 提 供 了 各 類 型 的 伺 服 器 , 當 然 也 可 以


乾 脆 把 這 一 部 RedHat 系 統 當 成 Gateway 的 系 統 , 沒 有 必 要 再透 過 其 他 的 個 人 電 腦 來 提 供 Gateway 的 動 作 。筆 者 再 做 簡 單 的 說 明 , 假 設 區 域 網 路 內 有 十 台 個 人 電 腦 ,原 則 上 、 理 論 上 這 十 台 個 人 電 腦 都 可 以 連 接 到 網 際 網 路 上 ,但 是 這 十 台 個 人 電 腦 都 需 要 有 獨 立 、 唯 一 的 一 組 IP 位 址 , 所以 使 用 網 際 網 路 所 需 要 支 付 的 費 用 將 會 非 常 驚 人 , 對 一 般 的DIY 玩 家 或 中 小 企 業 而 言 , 實 在 沒 有 能 力 負 擔 這 樣 龐 大 的 網路 費 用 。但 是 可 以 透 過 Gateway 的 方 式 , 讓 其 中 一 台 個 人 電 腦 連 接到 網 際 網 路 之 後 , 其 他 九 台 個 人 電 腦 再 透 過 這 一 台 提 供Gateway 服 務 的 個 人 電 腦 擷 取 網 際 網 路 上 的 資 源 , 這 樣 一 來只 需 要 負 擔 一 台 個 人 電 腦 連 接 到 網 際 網 路 上 的 費 用 , 對 個 人用 戶 或 中 小 企 業 而 言 , 這 樣 的 功 能 是 最 適 合 不 過 的 了 。筆 者 以 往 曾 經 介 紹 過 透 過 SyGate 之 類 的 應 用 軟 體 來 達 到這 樣 的 目 的 , 現 在 也 可 以 透 過 RedHat 系 統 完 成 同 樣 的 動 作 ,而 最 重 要 的 就 是 RedHat 系 統 不 需 要 像 視 窗 作 業 系 統 般 的 要求 較 高 等 級 的 硬 體 配 備 喔 !當 然 如 果 讀 者 的 電 腦 環 境 只 需 要 RedHat 提 供WWW/Mail/FTP 等 伺 服 器 功 能 的 話 , 就 不 需 要 在 RedHat 系 統上 安 裝 第 二 片 網 路 介 面 卡 , 但 是 如 果 是 中 小 型 區 域 網 路 的話 , 通 常 還 是 需 要 在 RedHat 系 統 加 裝 第 二 片 網 路 介 面 的 。O.K., 回 到 原 來 的 話 題 , 在 筆 者 的 個 人 電 腦 裡 , 因 為 有 一片 隨 插 即 用 的 網 路 介 面 以 及 一 片 ISA 型 態 的 網 路 介 面 , 所 以RedHat 系 統 一 定 只 會 認 得 隨 插 即 用 的 網 路 介 面 , 在 進 入RedHat 系 統 後 , 似 乎 見 不 到 ISA 型 態 的 網 路 介 面 的 存 在 。eth0loLink encap:Ethernet HWaddr 00:40:26:99:05:7Ainet addr:210.241.235.29 Bcast:210.241.235.31 Mask:255.255.255.248UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:1641915 errors:0 dropped:0 overruns:0 frame:0TX packets:1542498 errors:0 dropped:0 overruns:0 carrier:0collisions:2416 txqueuelen:100Interrupt:11 Base address:0x6000Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:3924 Metric:1


TX RX packets:41 errors:0 dropped:0 overruns:0 carrier:0 frame:0collisions:0 txqueuelen:0執 行 「ifconfig」 之 後 ( 有 點 如 同 Windows 9x 視 窗 作 業 系統 下 的 「winipcfg」 以 及 Windows NT 視 窗 作 業 系 統 下 的「ipconfig」) 也 真 的 沒 有 見 到 eth1 網 路 介 面 的 資 料 , 看 來RedHat 還 真 的 無 法 辨 識 出 個 人 電 腦 內 所 安 裝 的 第 二 片 網 路介 面 ( 不 過 也 有 例 外 的 情 形 , 筆 者 後 頭 會 有 解 說 )。既 然 RedHat 不 認 得 第 二 片 網 路 介 面 , 那 麼 就 讓 我 們 來 修 改網 路 方 面 的 設 定 檔 案 , 強 迫 讓 RedHat 可 以 辨 識 出 個 人 電 腦 內所 安 裝 的 第 二 片 網 路 介 面 卡 , 在 前 一 的 段 落 裡 已 經 提 到 過 網路 方 面 的 設 定 檔 案 囉 , 那 就 是 「/etc/conf.modules」 這 一 個 檔案 。在 「/etc/conf.modules」 檔 案 內 容 裡 原 本 只 有 一 行 「alias eth0pcnet32」 的 設 定 , 所 以 RedHat 也 指 認 得 這 一 片 網 路 介 面 ,就 是 筆 者 一 開 始 所 說 的 AMD PC Family 系 列 的 網 路 卡 , 只 要變 更 這 一 個 網 路 設 定 的 內 容 , 就 可 以 讓 RedHat 辨 識 出 個 人 電腦 內 的 第 二 片 網 路 介 面 , 所 以 在 原 本 的 設 定 內 容 後 面 加 上 底下 的 兩 行 設 定 :alias eth1 neoptions ne io=0x300 irq=5因 為 是 第 二 片 乙 太 網 路 介 面 , 所 以 Alias 化 名 會 是 eth1, 並且 這 是 一 片 NE2000 相 容 的 網 路 介 面 , 所 以 以 「ne」 表 示 這一 片 網 路 介 面 卡 的 型 號 , 讀 者 可 以 比 較 一 下 不 同 型 態 、 不 同廠 牌 的 乙 太 網 路 介 面 其 型 號 也 都 會 不 同 , 如 Buffalo 的LGY-PCI-TXL 乙 太 網 路 介 面 會 是 「tulip」, 而 AMD 的 PCFamily 乙 太 網 路 介 面 則 是 「pcnet32」。接 著 設 定 這 一 片 乙 太 網 路 的 I/O 設 定 , 在 options 後 的 「ne」表 示 設 定 NE2000 相 容 的 網 路 介 面 , 實 際 上 也 可 以 以 eth1 取 代ne 的 位 置 , 例 如 「options eth1 io=0x300 irq=5」, 因 為 個 人電 腦 內 目 前 只 安 裝 了 一 片 NE2000 相 容 的 網 路 介 面 , 所 以 可


以 直 接 以 「options ne io=0x300 irq=5」 來 表 示 這 一 片 NE2000相 容 的 網 路 介 面 I/O 設 定 。「io=0x300」 表 示 這 一 片 NE2000 相 容 的 網 路 介 面 其 I/O 位址 設 定 在 十 六 進 位 的 300 位 置 , 所 以 以 「0x300」 來 表 示 , 而「irq=5」 則 表 示 這 一 片 NE2000 相 容 的 網 路 介 面 的 中 斷 要 求為 十 進 位 的 第 五 號 中 斷 要 求 (0x 表 示 後 頭 的 數 字 為 十 六 進位 )。那 麼 假 設 個 人 電 腦 內 安 裝 了 兩 片 NE2000 相 容 的 網 路 介 面的 話 , 可 以 設 定 為 :alias eth0 nealias eth1 neoptions ne io=0x300,0x340這 表 示 第 一 片 NE2000 相 容 的 網 路 介 面 設 定 為 I/O 位 址0x300, 而 第 二 片 NE2000 相 容 的 網 路 介 面 則 設 定 為 I/O 位 址0x340, 中 斷 要 求 由 RedHat 系 統 自 行 偵 測 , 當 然 讀 者 也 需 要實 做 看 看 才 會 知 道 結 果 , 不 過 筆 者 發 現 還 是 在 Pentium 以 上的 系 統 , 或 者 BIOS 支 援 Play and Play 比 較 完 整 的 主 機 板 上 ,比 較 容 易 安 裝 一 片 以 上 的 網 路 介 面 , 在 早 期 的 80486 主 機 板上 可 能 要 碰 點 運 氣 了 ( 主 要 是 網 路 介 面 I/O 位 址 與 中 斷 要 求向 量 不 易 在 80486 主 機 板 上 設 定 ), 不 過 似 乎 現 在 真 的 要 找80486 時 代 的 主 機 板 與 CPU 也 不 容 易 了 吧 !使 用 者 也 可 以 自 己 指 定 出 兩 片 乙 太 網 路 介 面 的 I/O 位 址 以及 中 斷 要 求 向 量 :alias eth0 nealias eth1 neoptions eth0 -o ne-0 io=0x340 irq=10options eth1 -o ne-1 io=0x300 irq=5上 述 的 兩 種 網 路 設 定 都 可 以 正 常 的 讓 RedHat 使 用 到 兩 片乙 太 網 介 面 , 現 在 回 到 最 上 頭 的 例 子 , 在 變 更 了 網 路 介 面 的設 定 「/etc/conf.modules」 檔 案 內 容 之 後 , 先 不 要 急 著 重 新 啟動 RedHat 系 統 , 萬 一 網 路 介 面 無 法 正 常 工 作 時 , 還 是 需 要 修改 其 中 一 片 網 路 介 面 的 I/O 設 定 , 所 以 直 接 下 達 「modprobe


ethN」 這 一 個 命 令 ,「ethN」 表 示 要 觸 發 第 幾 片 乙 太 網 路 介面 , 例 如 現 在 是 要 加 上 第 二 片 乙 太 網 路 介 面 的 設 定 時 , 就 請下 達 「modprobe eth1」 的 命 令 , 這 個 時 候 如 果 網 路 介 面 的 參數 沒 有 錯 誤 的 話 , 就 可 以 在 螢 幕 上 見 到 :ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)NE*000 ethercard probe at 0x300: 00 80 c8 51 49 c1eth1: NE2000 found at 0x300, using IRQ 5.RedHat 已 經 可 以 正 確 的 辨 識 出 第 二 片 乙 太 網 路 介 面 了 , 在筆 者 的 工 作 環 境 範 例 裡 可 以 見 到 , 個 人 電 腦 內 的 第 二 片 乙 太網 路 介 面 其 I/O 位 址 為 0x300, 使 用 第 五 號 中 斷 。最 後 再 執 行 「dmesg|tail」 這 一 個 命 令 :VFS: Mounted root (ext2 filesystem) readonly.change_root: old root has d_count=1Trying to unmount old root ... okayFreeing unused kernel memory: 64k freedAdding Swap: 369452k swap-space (priority -1)pcnet32.c: PCI bios is present, checking for devices...Found PCnet/PCI at 0x6000, irq 11.eth0: PCnet/PCI II 79C970A at 0x6000, 00 40 26 99 05 7a assigned IRQ 11.pcnet32.c:v1.23 6.7.1999 tsbogend@alpha.franken.dene.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)NE*000 ethercard probe at 0x300: 00 80 c8 51 49 c1eth1: NE2000 found at 0x300, using IRQ 5.畫 面 上 的 顯 示 就 是 在 下 一 次 重 新 進 入 RedHat 時 將 會 見 到的 最 後 段 的 畫 面 , 在 這 些 資 料 畫 面 上 可 以 見 到 乙 太 網 路 介 面所 使 用 的 驅 動 程 式 項 目 , 乙 太 網 路 介 面 卡 本 身 的 卡 號 以 及 使用 的 I/O 位 址 與 中 斷 要 求 向 量 等 。在 某 些 狀 況 下 重 新 進 入 RedHat 系 統 後 , 還 是 會 發 現 剛 剛 所進 行 過 的 新 增 網 路 介 面 的 動 作 似 乎 RedHat 並 沒 有 正 確 回應 , 也 就 是 網 路 介 面 方 面 的 設 定 檔 案 設 定 正 確 , 而 且 剛 剛 所進 行 過 的 測 試 程 序 RedHat 也 都 正 確 的 回 應 , 但 是 就 是 在 下 一次 進 入 RedHat 系 統 後 , 還 是 只 「 看 到 」 一 片 網 路 介 面 , 當 然這 種 問 題 與 主 機 板 有 很 大 的 關 係 , 筆 者 在 比 較 早 期 的 主 機 板上 的 確 會 遇 到 這 樣 無 法 正 常 辨 識 第 二 片 乙 太 網 路 介 面 的 問題 , 即 使 剛 剛 我 們 已 經 變 更 了 「/etc/conf.modules」 檔 案 內 容 ,但 是 在 比 較 新 的 主 機 板 上 , 似 乎 RedHat 很 容 易 的 就 可 以 「 找


到 」 第 二 片 乙 太 網 路 介 面 , 那 麼 一 但 發 生 了 這 樣 的 問 題 後 ,該 怎 麼 解 決 呢 ?趕 快 先 執 行 一 下 「dmesg」 命 令 , 看 看 畫 面 最 後 頭 是 不 是可 以 正 確 的 顯 示 出 兩 片 網 路 介 面 的 相 關 資 料 :這 是 範 例 中 可 以 正 確 找 到 兩 片 網 路 介 面 的 畫 面pcnet32.c: PCI bios is present, checking for devices...Found PCnet/PCI at 0x6000, irq 11.eth0: PCnet/PCI II 79C970A at 0x6000, 00 40 26 99 05 7a assigned IRQ 11.pcnet32.c:v1.23 6.7.1999 tsbogend@alpha.franken.dene.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)NE*000 ethercard probe at 0x300: 00 80 c8 51 49 c1eth1: NE2000 found at 0x300, using IRQ 5.如 果 RedHat 還 是 只 能 找 到 一 片 網 路 介 面 時 :這 是 只 找 到 一 片 網 路 介 面 的 畫 面pcnet32.c: PCI bios is present, checking for devices...Found PCnet/PCI at 0x6000, irq 11.eth0: PCnet/PCI II 79C970A at 0x6000, 00 40 26 99 05 7a assigned IRQ 11.pcnet32.c:v1.23 6.7.1999 tsbogend@alpha.franken.de只 要 沒 有 出 現 eth1, 這 就 表 示 RedHat 還 是 無 法 正 確 的 辨 識出 第 二 片 網 路 介 面 , 那 麼 就 需 要 使 出 「 殺 手 鐗 」 了 , 修 改「/etc/lilo.conf」 這 一 個 Linux 開 機 時 需 要 讀 取 的 多 重 開 機 設定 參 數 檔 案 , 讀 者 可 不 要 問 筆 者 什 麼 是 LILO, 這 可 得 自 己去 K.K 書 喔 !在 這 一 個 「/etc/lilo.conf」 檔 案 裡 增 加 一 行 :append="ether=5,0x300,eth1"就 是 當 Linux 作 業 系 統 開 機 時 , 強 迫 載 入 第 二 片 乙 太 網 路介 面 的 驅 動 程 式 , 並 且 指 明 了 第 二 片 乙 太 網 路 介 面 所 使 用 的I/O 位 址 以 及 中 斷 要 求 向 量 , 這 樣 一 來 就 可 以 讓 RedHat 可 以成 功 的 使 用 到 第 二 片 乙 太 網 路 介 面 了 。但 是 在 做 這 一 個 步 驟 之 前 , 使 用 者 還 是 必 須 先 確 定 第 二 片網 路 介 面 的 硬 體 設 定 可 以 正 常 的 在 RedHat 系 統 下 工 作 , 也 就是 必 須 先 修 改 「 /etc/conf.modules 」 檔 案 , 並 且 在 執 行「modprobe ethN」 這 一 個 命 令 時 畫 面 上 的 確 可 以 正 確 的 回應 乙 太 網 路 介 面 的 相 關 資 料 才 行 , 否 則 如 果 乙 太 網 路 介 面 的


硬 體 設 定 無 法 在 RedHat 系 統 下 正 常 工 作 時 , 修 改「/etc/lilo.conf」 檔 案 也 是 沒 用 的 !看 到 這 裡 讀 者 是 不 是 已 經 學 會 了 怎 麼 在 Linux 作 業 系 統 下增 加 第 二 片 、 第 三 片 以 上 的 網 路 介 面 了 呢 ! 讀 者 可 以 依 照 上述 的 方 法 如 法 庖 製 一 翻 , 並 不 限 定 非 得 使 用 NE2000 相 容 的乙 太 網 路 介 面 不 可 。TCP/IP 的 設 定網 路 介 面 卡 的 TCP/IP 設 定 檔 案 都 存 放 在 子 目 錄「 /etc/sysconfig/network-scripts/ 」 底 下 , 檔 案 名 稱 為「ifcfg-ethN」, 同 樣 的 「ethN」 代 表 第 幾 片 乙 太 網 路 介 面 ,例 如 「ifcfg-eth1」 代 表 第 二 片 乙 太 網 路 介 面 的 TCP/IP 設 定 。DEVICE=eth0BOOTPROTO=staticBROADCAST=210.241.235.31IPADDR=210.241.235.29NETMASK=255.255.255.248NETWORK=210.241.235.24ONBOOT=yes這 是 第 一 片 乙 太 網 路 介 面 的 TCP/IP 設 定 內 容 , 也 就 是「ifcfg-eth0」 檔 案 的 內 容 ,「DEVICE」 欄 位 表 示 目 前 這 一個 TCP/IP 的 設 定 對 應 為 第 幾 片 乙 太 網 路 介 面 ,「eth0」 表 示為 第 一 片 乙 太 網 路 介 面 ,「BOOTPROTO」 的 欄 位 表 示 這 一片 網 路 介 面 的 TCP/IP 設 定 為 固 定 式 「static」 或 者 是 經 由DHCP 伺 服 器 取 得 TCP/IP 的 所 有 參 數 設 定(「BOOTPROTO=dhcp」), 如 果 是 固 定 式 的 IP 設 定 時 ,還 會 多 出 其 他 需 要 指 定 的 欄 位 內 容 , 例 如 網 路 遮 蓋NETMASK 等 , 當 然 「IPADDR」 的 欄 位 就 需 要 填 入 一 個 固定 式 的 IP 數 字 了 , 例 如 筆 者 公 司 內 使 用 ADSL 網 路 的「210.241.245.29」, 或 者 公 司 內 部 Internal 網 路 所 使 用 的「199.10.20.30」, 只 要 「BOOTPROTO」 的 欄 位 設 定 為 固定 式 的 TCP/IP 設 定 時 , 就 必 須 指 定 一 組 IP 給 這 一 片 網 路 介面 。DEVICE=eth1


BOOTPROTO=dhcpONBOOT=yes「ONBOOT=yes」 表 示 這 一 片 網 路 介 面 在 RedHat 開 機 Boot時 就 要 被 使 用 到 , 上 頭 這 一 個 範 例 表 示 第 二 片 乙 太 網 路 介 面要 經 由 區 域 網 路 或 纜 線 數 據 機 Cable Modem 上 的 DHCP 伺 服器 取 得 TCP/IP 的 設 定 , 這 其 中 會 包 含 被 指 定 的 IP 位 址 、 網 路遮 蓋 Net mask 以 及 DNS 區 域 名 稱 伺 服 器 等 資 料 , 但 是 讀 者 要先 知 道 一 個 現 象 , 當 網 路 介 面 需 要 透 過 DHCP 伺 服 器 取 得TCP/IP 的 設 定 資 料 時 , 在 這 一 個 取 得 TCP/IP 資 料 的 過 程 時 間會 蠻 長 的 , 也 就 是 RedHat 在 啟 動 的 時 間 會 「 卡 」 在 網 路 介 面經 由 DHCP 取 回 TCP/IP 設 定 資 料 的 這 一 個 程 序 上 , 使 用 者 不要 以 為 是 RedHat 系 統 「 當 機 」 了 , 過 一 下 子 等 到 網 路 介 面 經由 DHCP 伺 服 器 取 得 了 TCP/IP 的 設 定 資 料 後 ,RedHat 系 統 的速 度 就 會 恢 復 正 常 。網 路 介 面 的 TCP/IP 設 定 如 果 可 以 正 常 工 作 時 , 其 TCP/IP資 料 可 以 透 過 執 行 「ifconfig」 看 到 。經 過 這 幾 個 步 驟 之 後 ,RedHat 系 統 已 經 可 以 正 常 在 網 際 網路 上 工 作 了 , 當 然 網 路 介 面 的 TCP/IP 設 定 也 可 以 透 過X-Windows 的 工 作 環 境 下 「netcfg」 或 「netconfig」 之 類 的 工具 軟 體 來 設 定 , 不 過 筆 者 比 較 喜 歡 在 Console 的 純 文 字 模 式下 作 業 , 畢 竟 筆 者 把 RedHat Linux 系 統 當 成 伺 服 器 不 是 工 作站 , 沒 有 必 要 掛 上 X-Windows 來 浪 費 Resource。另 外 不 知 道 對 Linux 有 興 趣 的 讀 者 有 沒 有 察 覺 到 , 市 面 上所 能 得 到 與 Linux 有 關 的 資 料 , 包 含 Linux 方 面 的 書 籍 似 乎 都不 夠 「 實 用 」, 都 只 能 「 點 到 為 止 」 的 介 紹 Linux, 筆 者 在看 了 四 五 本 與 Linux 有 關 的 書 籍 之 後 , 最 後 大 部 分 還 是 求 助於 Linux 方 面 的 HOWTO 資 料 解 決 問 題 , 而 且 許 多 Linux 方 面的 書 籍 在 介 紹 某 一 部 份 功 能 時 , 也 大 多 止 於 介 紹 , 並 沒 能 從頭 到 尾 一 步 一 步 的 指 導 讀 者 完 成 否 方 面 的 需 求 , 例 如 等 一 下要 介 紹 的 Apache WWW Server 就 是 一 個 例 子 , 書 籍 的 介 紹 並無 法 讓 讀 者 完 整 的 架 設 完 Apache WWW 伺 服 器 , 筆 者 在 花 費了 非 常 多 的 精 神 與 不 斷 的 測 試 之 後 , 現 在 把 經 驗 提 供 給 讀 者


分 享 , 讓 讀 者 可 以 花 更 少 的 時 間 , 更 快 的 速 度 進 入 Linux 的領 域 、 使 用 Linux 所 能 提 供 的 資 源 , 這 些 都 是 一 般 妨 間 書 籍所 無 法 提 供 的 喔 !Apache WWW Server在 安 裝 RedHat 時 , 如 果 選 擇 「Server」 安 裝 項 目 的 話 , 就等 於 把 Apache WWW Server 與 wu FTP Server 以 及 其 他 伺 服器 安 裝 到 個 人 電 腦 內 , 所 以 在 啟 動 了 RedHat 系 統 後 ,ApacheWWW Server 就 已 經 可 以 正 常 使 用 了 。但 是 剛 安 裝 完 畢 還 沒 有 經 過 任 何 設 定 的 Apache WWWServe( 爾 後 簡 稱 Apache), 是 沒 有 提 供 使 用 者 所 要 求 完 整的 功 能 的 , 使 用 起 來 也 不 是 很 方 便 , 例 如 最 簡 單 的 CGI 執 行權 限 等 Apache 並 沒 有 啟 動 , 但 是 只 要 安 裝 RedHat 時 選 擇 了「Server」 的 模 式 安 裝 後 , 只 要 安 裝 完 RedHat 就 可 以 立 刻 使用 Apache 囉 。


所 以 在 剛 安 裝 完 RedHat 的 系 統 , 必 須 先 修 改 Apache 的 相 關設 定 , 讓 Apache 可 以 如 同 網 際 網 路 上 所 提 供 的 免 費 WWW 伺服 器 般 的 正 常 工 作 ,CGI 的 執 行 權 限 筆 者 相 信 是 絕 大 多 數 玩家 所 需 求 的 功 能 , 而 可 以 免 費 提 供 CGI 執 行 權 限 的 免 費WWW 伺 服 器 在 網 際 網 路 上 並 不 多 見 , 即 使 免 費 WWW 的 伺服 器 提 供 了 CGI 執 行 權 限 , 也 都 是 限 制 東 、 限 制 西 的 , 網 際網 路 上 的 網 友 使 用 起 來 綁 手 綁 腳 的 , 非 常 不 方 便 。既 然 RedHat 已 經 提 供 了 完 整 的 Apache, 當 然 必 須 好 好 的 運用 一 下 , 筆 者 私 人 的 「FTP 答 客 問 」WWW 網 站 也 都 拉 回 來自 己 的 RedHat Linux 伺 服 器 內 , 筆 者 現 在 就 把 相 關 的 經 驗 提供 給 各 位 讀 者 參 考 , 讀 者 也 可 以 在 既 有 的 ADSL 或 CableModem 環 境 下 架 設 一 個 RedHat Linux 伺 服 器 來 使 用 。所 有 的 Apache 參 數 設 定 檔 案 都 儲 存 在 「/etc/httpd/conf」 子目 錄 下 , 當 RedHat 以 Server 伺 服 器 型 態 安 裝 完 畢 後 ,Apache已 經 可 以 使 用 , 但 是 為 了 發 揮 Apache 所 提 供 的 功 能 , 必 須 到「/etc/httpd/conf」 子 目 錄 下 作 適 度 的 修 改 。因 為 Apache 可 以 使 用 的 參 數 蠻 多 的 , 筆 者 不 會 特 別 會 某 個參 數 作 個 別 的 說 明 , 筆 者 在 這 裡 只 會 介 紹 某 些 參 數 的 組 合 代表 什 麼 樣 的 意 義 與 功 能 , 每 個 參 數 詳 細 的 作 用 讀 者 可 以 參 考Apache 的 說 明 檔 案 , 當 RedHat 以 Server 伺 服 器 型 態 安 裝 完 畢後 , 使 用 者 就 可 以 透 過 區 域 網 路 內 其 他 的 工 作 站 連 接 到RedHat 系 統 上 , 以 Internet Explorer 或 Netscape 連 接 到 RedHat系 統 上 , 就 可 以 見 到 已 經 啟 動 的 Apache, 以 及 從 預 設 的 網 頁上 連 接 進 入 到 Apache 的 「documentation」 項 目 , 參 考 Apache所 有 的 參 數 說 明 。access.conf 參 數 檔「access.conf」 參 數 檔 是 存 取 Apache 伺 服 器 整 體 的 參 數 檔案 Global access configuration, 這 一 個 參 數 檔 案 主 要 是 設 定Apache 提 供 什 麼 樣 類 型 的 服 務 , 例 如 允 不 允 許 執 行 CGI 程式 , 在 哪 一 個 目 錄 下 允 許 使 用 CGI 程 式 。


讀 者 如 果 曾 經 連 結 到 某 些 提 供 聊 天 室 、 留 言 版 或 提 供 新 聞發 佈 的 全 球 資 訊 網 站 WWW 時 , 這 些 動 態 的 效 果 都 是 透 過CGI 程 式 完 成 的 , 而 CGI 程 式 的 執 行 與 否 決 定 於 WWW 伺 服器 , 以 Windows NT 4.0 視 窗 型 態 的 是 伺 服 器 作 業 系 統 而 言 ,在 其 所 提 供 的 IIS WWW 伺 服 器 系 統 下 , 想 要 直 接 使 用 CGI程 式 或 Perl 程 式 可 以 說 非 常 之 困 難 , 總 是 需 要 依 靠 第 三 來 源的 工 具 軟 體 才 能 完 成 CGI 程 式 的 需 求 。相 信 會 需 要 使 用 到 WWW 伺 服 器 的 讀 者 應 當 都 知 道 , 想 要找 一 個 速 度 快 、 反 應 快 、 沒 有 廣 告 又 提 供 CGI 執 行 權 限 的 免費 WWW 伺 服 器 真 的 不 容 易 , 但 是 現 在 RedHat 所 內 含 的Apache 卻 已 經 提 供 了 這 方 面 的 需 求 , 讀 者 可 以 在 自 己 的Apache 裡 執 行 WWW 網 頁 所 需 要 的 CGI 程 式 , 對 CGI 程 式 還不 十 分 了 解 的 讀 者 可 以 到 筆 者 私 人 的 網 站「http://www.superlee.com」 上 看 看 , 新 聞 發 佈 以 及 訪 客 留 言等 功 能 都 是 CGI 做 出 來 的 。「access.conf」 參 數 檔 主 要 的 作 用 在 於 , 設 定 某 一 些 檔 案或 子 目 錄 提 供 給 Apache 使 用 的 權 限 , 這 牽 扯 到 某 一 個 檔 案 或子 目 錄 可 以 被 讀 取 、 可 以 被 寫 入 或 可 以 被 執 行 的 權 限 , 反 過來 說 也 就 是 可 以 設 定 某 一 個 檔 案 或 子 目 錄 不 可 以 被 讀 取 、 不可 以 被 寫 入 或 不 可 以 被 執 行 。底 下 是 筆 者 建 議 修 改 的 地 方 , 讓 Apache 可 以 發 揮 最 大 的 功能 :Options Indexes Includes FollowSymLinks ExecCGIAllowOverride AuthConfigorder allow,denyallow from allorder deny,allowdeny from allorder deny,allowdeny from all


請 看 筆 者 的 解 說 , 筆 者 只 會 挑 出 需 要 特 別 增 加 或 刪 除 設 定部 分 ,Apache 預 設 使 用 的 設 定 大 部 分 都 需 要 保 留 , 讀 者 也 可以 參 考 Apache 的 詳 細 說 明 文 件 了 解 每 一 個 設 定 所 代 表 的 意義 , 筆 者 只 針 對 特 定 的 幾 個 項 目 作 說 明 :! : 設 定 「/home/httpd/html」 這 一 個 目 錄 的使 用 者 權 限 , 變 更 這 一 個 目 錄 設 定 內 容 就 可 以 設 定 其 他 目 錄 的 使 用 者權 限 , 這 裡 所 謂 的 使 用 者 權 限 指 得 將 是 由 網 際 網 路 上 連 接 到 Apache 上的 使 用 者 、 網 友 。! Options: 加 上 「ExecCGI」 這 一 個 參 數 後 , 就 表 示 在 這 一 個 目 錄 下 允許 使 用 者 執 行 CGI 或 Perl 程 式 的 權 限 ,Apache 預 設 的 執 行 CGI 或 Perl 程式 的 權 限 是 在 「/home/httpd/cgi-bin/」 特 定 的 子 目 錄 內 , 這 樣 做 的 目 的在 於 保 全 措 施 , 只 讓 使 用 者 在 特 定 的 子 目 錄 內 執 行 CGI 或 Perl 程 式 , 避免 使 用 者 的 CGI 或 Perl 程 式 破 壞 伺 服 器 系 統 本 身 , 但 是 這 樣 的 設 定 對 使用 者 來 說 非 常 不 方 便 , 除 了 要 修 改 CGI 或 Perl 程 式 內 的 絕 對 位 置 目 錄 部份 之 外 , 還 要 找 出 「/home/httpd/cgi-bin/」 特 定 的 子 目 錄 與 存 放 網 頁 子目 錄 間 的 關 係 , 這 樣 會 比 較 麻 煩 一 點 , 所 以 依 照 筆 者 的 習 慣 , 在 每 一位 使 用 者 的 目 錄 裡 都 設 定 允 許 使 用 者 執 行 CGI 或 Perl 程 式 的 權 限 , 這 樣就 不 需 要 擔 心 CGI 或 Perl 程 式 內 的 絕 對 位 置 目 錄 會 與 存 放 網 頁 子 目 錄不 同 而 需 要 修 改 , 導 致 經 常 找 不 到 某 一 項 資 料 而 無 法 正 常 顯 示 的 問 題了 , 當 然 這 是 筆 者 的 習 慣 , 說 不 定 部 分 讀 者 並 不 認 同 這 樣 的 做 法 , 不過 這 沒 有 關 係 , 只 要 能 夠 正 確 的 設 定 CGI 或 Perl 程 式 內 的 絕 對 位 置 目 錄會 與 網 頁 之 間 的 關 係 , 在 哪 裡 執 行 CGI 或 Perl 程 式 都 一 樣 , 回 顧 一 下 ,「ExecCGI」 這 一 個 參 數 後 , 就 表 示 在 這 一 個 目 錄 下 允 許 使 用 者 執 行CGI 或 Perl 程 式 的 權 限 , 如 果 沒 有 加 上 「ExecCGI」 這 一 個 參 數 的 話 ,CGI 程 式 就 不 會 備 執 行 , 會 以 文 字 檔 案 的 型 態 將 CGI 程 式 的 內 容 在 網 頁瀏 覽 器 上 顯 示 喔 !! AllowOverride AuthConfig: 允 許 透 過 這 一 個 目 錄 下 的 「.htaccess」 檔案 來 管 理 使 用 者 的 使 用 權 限 , 簡 單 的 說 就 是 一 般 在 進 入 某 個 網 頁 會 要


求 輸 入 使 用 者 名 稱 與 密 碼 的 功 能 , 只 要 某 個 目 錄 設 定 使 用 「.htaccess」檔 案 來 管 理 使 用 者 的 使 用 權 限 就 可 以 很 輕 易 的 辦 到 這 個 限 制 進 入 的功 能 ,CGI 或 Java/Java Scripts 等 其 他 做 出 來 的 類 似 功 能 都 不 如「.htaccess」 來 的 好 , 因 為 CGI 或 Java/Java Scripts 等 其 他 做 出 來 的 類 似功 能 都 是 網 頁 轉 向 , 當 使 用 者 輸 入 正 確 的 使 用 者 名 稱 與 密 碼 後 , 會 自動 的 開 啟 「 秘 密 」 的 網 頁 , 一 但 網 頁 的 「 來 源 」 位 置 被 知 道 後 , 不 需要 使 用 者 名 稱 與 密 碼 照 樣 可 以 進 入 , 但 是 「.htaccess」 就 不 同 了 , 這是 整 個 目 錄 的 進 入 權 限 控 制 , 也 是 目 前 保 密 網 頁 最 普 遍 、 最 常 用 與 作有 效 的 使 用 方 式 。order deny,allowdeny from allorder deny,allowdeny from all! : 表 示 設 定 這 一 個 「.htaccess」 檔 案 的 使 用 者 權 限 ,加 上 「order deny,allow」 以 及 「deny from all」 的 設 定 之 後 ( 請 參 考 筆者 的 範 例 ), 這 一 個 檔 案 就 只 能 被 被 網 頁 本 身 所 讀 取 使 用 , 無 法 讓 網友 知 道 這 一 個 檔 案 的 內 容 , 也 就 是 類 似 只 能 被 網 頁 本 身 讀 取 並 執 行 、使 用 , 無 法 讓 網 友 見 到 檔 案 本 身 的 內 容 。! :「.htpasswd」 這 是 「.htaccess」 檔 案 需 要 使 用 到 的使 用 者 名 冊 列 表 以 及 對 應 的 密 碼 表 , 所 以 也 必 須 設 定 為 只 能 讓 網 頁 本身 使 用 , 這 樣 這 些 使 用 者 名 冊 與 密 碼 列 表 才 不 會 被 網 際 網 路 上 的 網 友看 見 , 上 頭 這 兩 個 檔 案 如 果 被 啟 動 使 用 時 , 記 得 一 定 要 加 上 這 兩 組 設定 , 否 則 只 要 使 用 者 輸 入 完 整 的 「 網 址 」 就 可 以 看 見 這 兩 個 檔 案 的 內容 。httpd.conf 參 數 檔「httpd.conf」 是 另 外 一 個 Apache 需 要 使 用 的 參 數 檔 案 , 使


用 者 也 必 須 適 度 的 修 改 一 下 , 但 是 絕 大 部 分 的 設 定 項 目 通 常都 可 以 使 用 預 設 值 :! Port 80: 預 設 為 使 用 Port 80, 也 就 是 http 標 準 的 設 定 , 當 輸 入 網 頁 的網 址 後 , 如 果 沒 有 額 外 指 定 使 用 的 Port 數 值 , 預 設 的 http 會 使 用 Port80 , 也 就 是 說 「 http://www.superlee.com 」 與「http://www.superlee.com:80」 是 代 表 同 樣 的 連 接 網 址 , 如 果 需 要使 用 特 殊 的 連 接 埠 位 址 , 或 者 RedHat 系 統 內 需 要 設 定 使 用 一 個 以 上 的WWW 伺 服 器 時 , 其 他 的 WWW 伺 服 器 當 然 就 必 須 使 用 不 同 於 80 的 連接 埠 , 例 如 Proxy 伺 服 器 習 慣 使 用 8080, 再 舉 一 個 簡 單 的 例 子 , 例 如把 這 一 個 設 定 設 為 5000 的 話 , 則 連 接 到 這 一 個 網 址 必 須 輸 入 為「http://www.superlee.com:5000」。! ServerRoot /etc/httpd:Apache 伺 服 器 的 參 數 檔 案 、 錯 誤 訊 息 檔 案 以 及紀 錄 檔 案 存 放 的 目 錄 位 置 , 所 以 Apache 參 數 檔 案 會 是 在「/etc/httpd/conf」 這 一 個 子 目 錄 。! ServerName ftpforum.dhs.org: 這 一 部 Apache 系 統 的 名 稱 , 這 一 個 項 目在 Linux 系 統 下 的 Apache 伺 服 器 有 沒 有 設 定 都 可 以 正 常 的 啟 用 Apache伺 服 器 , 但 是 如 果 是 Windows 9x/NT 版 本 的 Apache 伺 服 器 時 , 一 定 要啟 用 這 一 個 設 定 , 否 則 Apache 伺 服 器 將 無 法 正 常 啟 動 。srm.conf 參 數 檔 案這 一 個 「srm.conf」 參 數 檔 案 主 要 的 作 用 在 於 設 定 使 用 者網 頁 存 放 目 錄 的 相 關 參 數 資 料 , 例 如 Apache 主 要 目 錄 的 位 置或 每 一 位 使 用 者 的 位 置 等 :! DocumentRoot /home/httpd/html:Apache 伺 服 器 主 要 目 錄 位 置 , 也 就是 當 網 友 進 入 這 一 部 Apache 伺 服 器 時 , 沒 有 指 定 網 頁 名 稱 或 使 用 者 目錄 名 稱 時 , 所 會 讀 取 到 主 網 頁 存 放 的 目 錄 , 簡 單 的 說 就 是 例 如「 http://www.superlee.com 」 會 讀 取 到 的 主 網 頁 目 錄 , 而


「 http://www.superlee.com/~monica」 則 會 讀 取 到 其 他 子 目 錄 內 的 資料 , 對 單 一 使 用 者 或 者 個 人 用 戶 而 言 , 這 就 是 設 定 網 頁 存 放 的 主 目 錄位 址 了 ,Apache 預 設 的 主 目 錄 位 址 為 「/home/httpd/html」, 只 要 把 網頁 擺 在 這 裡 就 可 以 了 。! UserDir /home/httpd/*/html: 這 是 使 用 者 的 網 頁 目 錄 存 放 位 置 ,Apache預 設 值 為 「 UserDir public_html」 也 就 是 在 每 一 位 使 用 者 本 身 「$home」的 目 錄 下 之 「 public_html」 就 是 存 放 私 人 網 頁 的 位 置 , 所 以 如 果「 http://www.superlee.com/~monica 」 這 樣 的 一 個 位 址 就 會 被 指 向「/home/monica/public_html」 子 目 錄 讀 取 網 頁 資 料 , 而 筆 者 範 例 中 的「 /home/httpd/*/html」 則 表 示 所 有 的 使 用 者 網 頁 資 料 都 會 存 放 到「 /home/httpd/ 使 用 者 名 稱 /html 」 子 目 錄 內 , 換 句 話 說「 http://www.superlee.com/~monica 」 這 樣 的 一 個 位 址 就 會 被 指 向「/home/httpd/monica/html」 這 一 個 子 目 錄 , 這 還 是 要 看 Apache 伺 服 器管 理 人 員 想 要 採 用 什 麼 樣 的 管 理 方 式 , 是 要 把 使 用 者 的 網 頁 資 料 集 中管 理 呢 ? 還 是 存 放 到 每 一 位 使 用 者 自 己 私 人 的 目 錄 下 管 理 。! DirectoryIndex index.html index.shtml index.cgi index.htm: 沒 有 指 定 網頁 名 稱 時 , 預 設 的 讀 取 主 網 頁 檔 案 設 定 , 例 如「http://www.superlee.com/~monica」 這 樣 的 位 址 就 會 到 Apache 伺 服 器上 讀 取 使 用 者 「monica」 網 頁 目 錄 下 的 index.html、index.shtml、index.cgi或index.htm 檔 案 , 當 然 也 可 以 使 用 這 樣 的 網 址「 http://www.superlee.com/~monica/index.htm」, 或 者 Apache 伺 服 器管 理 員 也 可 以 其 他 如 welcome.htm 之 類 的 網 頁 名 稱 當 成 主 網 頁 名 稱 。! AccessFileName .htaccess : 也 就 是 搭 配 「 access.conf 」 內 的「AllowOverride AuthConfig」 設 定 , 當 選 擇 使 用 密 碼 權 限 認 定 時 , 可以 在 每 一 個 目 錄 下 讀 取 哪 個 密 碼 權 限 的 設 定 檔 案 , 當 然 Apache 伺 服 器管 理 員 也 可 以 指 定 使 用 其 他 的 檔 案 , 不 一 定 非 得 使 用 這 一 個 檔 案「.htaccess」, 但 是 這 一 個 密 碼 權 限 的 設 定 檔 案 當 然 是 有 其 一 定 的 語


法 Syntax 的 。! ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/:Apache 伺 服 器 管 理 員 可 以 把每 一 位 使 用 者 允 許 執 行 的 CGI 程 式 集 中 到 某 一 個 目 錄 中 管 理 , 當 然 也可 以 設 定 允 許 每 一 位 使 用 者 在 自 己 的 主 目 錄 下 擁 有 CGI 程 式 的 執 行 權限 , 這 在 前 面 的 「 access.conf」 參 數 檔 案 說 明 內 筆 者 已 經 有 過 說 明 了 ,依 照 筆 者 私 人 的 習 慣 而 言 , 筆 者 不 喜 歡 將 CGI 程 式 集 中 到 固 定 的 目 錄下 使 用 , 因 為 這 樣 會 增 加 每 一 位 使 用 者 修 改 CGI 程 式 內 容 的 絕 對 路 徑困 擾 , 每 一 位 使 用 者 必 須 了 解 到 所 有 與 CGI 程 式 以 及 網 頁 相 關 的 絕 對路 徑 結 構 , 進 而 修 改 CGI 程 式 , 否 則 將 會 遇 到 無 法 執 行 CGI 程 式 , 或 者CGI 程 式 找 不 到 相 關 的 資 料 檔 案 、 圖 片 檔 案 的 問 題 , 不 過 集 中 管 理 的好 處 就 是 讓 「 有 心 人 士 」( 網 路 上 稱 的 駭 客 ) 不 容 易 侵 入 破 壞 RedHat伺 服 器 , 所 以 這 一 個 「ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/」 的 設定 就 是 當 使 用 者 指 向 「/cgi-bin/」 這 一 個 子 目 錄 時 ,Apache 會 轉 向 到哪 一 個 真 正 儲 存 CGI 程 式 的 子 目 錄 讀 取 CGI 程 式 。! AddHandler cgi-script .cgi: 允 許 使 用 CGI 程 式 時 , 這 一 個 CGI 程 式 的 副檔 名 是 什 麼 , 預 設 的 設 定 值 只 要 是 CGI 程 式 的 副 檔 名 都 會 是 「.cgi」,當 然 Apache 伺 服 器 管 理 員 也 可 以 特 別 指 定 使 用 其 他 的 附 加 檔 案 名 稱 。以 上 三 個 Apache 使 用 的 參 數 檔 案 , 只 要 經 過 使 用 者 適 度 的修 改 之 後 , 就 可 以 讓 Apache 正 常 的 工 作 , 讓 使 用 者 非 常 易 於管 理 Apache 伺 服 器 , 但 是 別 忘 了 Linux 在 安 裝 完 畢 後 , 記 得一 定 要 先 建 立 一 位 以 上 的 使 用 者 , 因 為 Linux 一 開 始 沒 有 經過 特 別 的 修 改 設 定 時 , 管 理 員 「root」 這 一 個 帳 號 是 無 法 使用 在 Telnet 以 及 FTP 等 功 能 上 頭 , 也 就 是 到 時 候 會 遇 到 無 法經 由 其 他 網 路 上 的 個 人 電 腦 上 傳 網 頁 到 Apache 伺 服 器 內 的問 題 。所 以 必 須 新 增 至 少 一 位 以 上 的 使 用 者 帳 號 , 並 且 把 Apache伺 服 器 內 提 供 存 放 網 頁 的 目 錄 權 限 移 轉 、 開 放 給 使 用 者 使用 , 這 樣 一 來 使 用 者 才 可 以 透 過 遠 端 網 路 上 的 個 人 電 腦 FTP網 頁 到 伺 服 器 內 , 更 新 網 頁 、 維 護 網 頁 的 工 作 不 可 能 百 分 之


百 都 在 本 地 端 直 接 由 RedHat 這 一 台 系 統 來 完 成 喔 !Perl 的 版 本 問 題最 後 附 帶 一 提 的 也 是 筆 者 的 經 驗 , 前 一 陣 子 為 了 Year2000/Y2K 的 問 題 , 網 際 網 路 上 許 多 CGI 程 式 還 真 的 是 搞 的 人仰 馬 翻 的 , 筆 者 之 前 撰 寫 過 許 多 與 網 際 網 路 免 費 資 源 有 關 的文 章 , 其 中 也 介 紹 了 留 言 簿 的 CGI 程 式 , 讀 者 不 妨 到 筆 者 的網 站 上 逛 逛 便 知 !這 是 最 原 始 的 寫 法 :($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) =localtime(time+(3600*$time_miss));$monn=$monn+1;if ($monn


Perl 編 譯 程 式 後 , 原 本 有 怪 現 象 的 留 言 簿 CGI 程 式 就 恢 復 正常 運 作 了 , 筆 者 特 別 提 出 這 一 點 供 各 位 讀 者 參 考 一 下 !E-mail 電 子 郵 件 伺 服 器接 下 來 是 E-mail 電 子 郵 件 伺 服 器 的 介 紹 , 實 際 上 當 RedHat安 裝 完 畢 後 , 已 經 安 裝 了 E-mail 電 子 郵 件 伺 服 器 了 , 任 何 一位 使 用 者 ( 筆 者 指 的 當 然 是 在 這 一 台 RedHat 系 統 所 建 立 的 使用 者 ) 都 可 以 在 這 一 部 RedHat 系 統 上 收 發 電 子 郵 件 。但 是 筆 者 相 信 絕 大 部 分 的 使 用 者 都 會 希 望 透 過 RedHat 這一 部 系 統 來 收 發 電 子 郵 件 , 但 絕 對 不 是 透 過 Telnet 之 類 的 軟體 來 連 接 到 RedHat 系 統 , 進 而 才 能 讀 取 電 子 郵 件 以 及 回 覆 電子 郵 件 吧 ! 安 裝 完 RedHat 作 業 系 統 後 , 沒 有 錯 E-mail 電 子 郵件 伺 服 器 的 確 已 經 安 裝 完 畢 , 但 是 問 題 是 使 用 者 沒 有 辦 法 透過 習 慣 的 POP3/SMTP 通 訊 協 定 來 讀 取 與 傳 送 電 子 郵 件 , 使用 者 只 能 連 接 到 RedHat 系 統 上 讀 取 、 回 覆 與 傳 送 電 子 郵 件 ,這 是 非 常 不 方 便 的 事 吧 !(POP 為 Post Office Protocol)透 過 POP3/SMTP 通 訊 協 定 來 讀 取 與 傳 送 電 子 郵 件 有 一 個很 大 的 好 處 , 就 是 把 使 用 者 私 人 的 電 子 郵 件 全 部 取 回 到 個 人電 腦 內 存 放 , 要 傳 遞 電 子 郵 件 時 再 透 過 SMTP 通 訊 協 定 傳 遞到 電 子 郵 件 伺 服 器 上 , 電 子 郵 件 伺 服 器 會 在 設 定 的 某 一 時 刻把 使 用 者 傳 送 過 來 的 電 子 郵 件 傳 送 出 去 , 把 電 子 郵 件 取 回 到個 人 電 腦 後 可 以 確 保 電 子 郵 件 不 會 在 電 子 郵 件 伺 服 器 尚 被他 人 讀 取 。筆 者 在 這 一 個 段 落 裡 將 會 介 紹 如 何 啟 動 RedHat 伺 服 器 上的 電 子 郵 件 伺 服 器 啟 用 POP3/SMTP 通 訊 協 定 , 允 許 使 用 者透 過 一 般 常 見 的 電 子 郵 件 軟 體 來 收 發 電 子 郵 件 。# Pop and imap mail services et al##pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d#imap stream tcp nowait root /usr/sbin/tcpd imapd在 「/etc」 子 目 錄 下 的 「inetd.conf」 有 許 多 RedHat 系 統 所


提 供 服 務 的 啟 動 設 定 項 目 , 例 如 允 不 允 許 Telnet 啦 、FTP 伺服 器 要 不 要 啟 動 等 等 , 其 中 在 「# Pop and imap mail serviceset al」 的 字 串 後 頭 三 個 項 目 就 是 與 電 子 郵 件 伺 服 器 有 關 的 設定 , 想 要 在 RedHat 系 統 內 啟 用 POP3/SMTP 通 訊 協 定 時 , 必須 把 後 頭 三 個 項 目 前 面 的 「#」 井 字 符 號 去 除 掉 :# Pop and imap mail services et al#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2dpop-3 stream tcp nowait root /usr/sbin/tcpd ipop3dimap stream tcp nowait root /usr/sbin/tcpd imapd也 就 是 把 「inetd.conf」 參 數 檔 案 的 內 容 修 改 成 上 述 的 狀況 , 然 後 再 安 裝 「IMAP」(Internet Message Access Protocol)套 件 ,RedHat 預 設 的 安 裝 項 目 並 沒 有 包 含 IMAP 套 件 , 而IMAP 套 件 提 供 了 imap 以 及 pop 通 訊 協 定 , 所 以 如 果 沒 有 安 裝IMAP 套 件 的 話 , 在 RedHat 下 就 無 法 使 用 POP3/SMTP 通 訊 協定 來 存 取 電 子 郵 件 。IMAP 是 一 種 特 殊 的 POP 通 訊 協 定 , 允 許 使 用 者 不 需 要 如同 POP3 通 訊 協 定 般 的 需 要 把 電 子 郵 件 下 載 回 到 本 地 端 的 個人 電 腦 內 ,RedHat 6.1 提 供 了 4.5 版 本 的 IMAP 套 件 , 這 一 個套 件 可 以 在 RedHat 原 始 程 式 的 光 碟 片 內 找 到 , 這 方 面 相 關 的資 料 可 以 在 RedHat 的 「The Official Red Hat Linux ReferenceGuide」 電 子 文 件 PDF 檔 案 內 找 到 。安 裝 IMAP 套 件接 下 來 就 是 IMAP 套 件 的 安 裝 程 序 介 紹 :I. 下 達 「mount /mnt/cdrom」 這 樣 的 指 令 就 可 以 啟 動 光 碟 機 , 請 看本 篇 文 章 前 面 筆 者 的 說 明 。II. 在 光 碟 機 內 把 目 錄 指 向 「RedHat/RPMS」 子 目 錄 底 下 , 然 後 執行 「rpm –i imap-4.5-4.i386.rpm」 這 一 個 命 令 , 讓 RedHat 可 以 安裝 IMAP 4.5 版 本 的 套 件 到 系 統 內 , 等 到 IMAP 4.5 版 本 的 套 件 安裝 完 畢 後 , 系 統 會 回 到 Linux 提 示 符 號 下 , 這 個 時 候 再 讓 系 統 重新 啟 動 , 等 到 下 一 次 進 入 RedHat 系 統 時 ,IMAP 套 件 就 會 被 啟 用了 , 使 用 者 就 可 以 透 過 POP3/SMTP 到 這 一 部 RedHat 系 統 讀 取 與


傳 送 電 子 郵 件 了 。access 與 access.db 參 數 檔 案 的 設 定在 透 過 上 述 的 兩 個 步 驟 之 後 , 使 用 者 絕 對 可 以 透 過 POP3通 訊 協 定 經 由 RedHat 系 統 來 接 收 電 子 郵 件 , 但 是 使 用 者 一 定會 立 刻 遇 到 一 個 問 題 , 收 信 正 常 但 是 「 寄 信 」 卻 會 被 退 了 回來 , 所 得 到 的 錯 誤 訊 息 會 是 電 子 郵 件 伺 服 器 不 會 幫 使 用 者Relay 接 替 傳 送 電 子 郵 件 , 因 為 要 傳 送 電 子 郵 件 的 發 信 人 不是 這 一 台 RedHat 系 統 的 使 用 者 !這 一 個 問 題 簡 單 的 說 就 是 RedHat 預 設 的 電 子 郵 件 伺 服 器設 定 只 能 讓 RedHat 系 統 內 的 使 用 者 使 用 , 因 為 RedHat 為 了 不想 要 讓 電 子 郵 件 伺 服 器 被 有 心 人 士 拿 來 當 成 Relay 電 子 郵 件的 工 具 , 讀 者 要 了 解 網 際 網 路 上 的 許 多 廣 告 郵 件 、 垃 圾 郵 件都 是 透 過 某 些 「 不 設 防 」 的 電 子 郵 件 伺 服 器 來 Relay 接 替 轉信 , 所 以 RedHat 預 設 不 讓 非 這 一 台 系 統 的 使 用 者 透 過 這 一 台電 子 郵 件 伺 服 器 把 電 子 郵 件 寄 出 到 外 界 去 。要 變 更 這 一 個 寄 信 限 制 的 設 定 很 簡 單 , 在 「/etc/mail」 的子 目 錄 裡 有 兩 個 檔 案 分 別 是 「access」 與 「access.db」, 其中 「access.db」 是 由 「access」 檔 案 更 新 資 料 後 所 得 到 的 ,變 更 「access.db」 資 料 的 程 序 如 下 :# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description# of the format of this file. (search for access_db in that file)# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc# package.## by default we allow relaying from localhost...localhost.localdomain RELAYlocalhostRELAY127.0.0.1 RELAY甲 、 修 改 「access」 的 資 料 , 如 上 面 的 資 料 所 示 , 預 設 的 設 定 只能 讓 RedHat 系 統 內 的 使 用 者 使 用 , 所 以 如 果 要 寄 信 給 其 他 電 子信 箱 地 址 的 網 友 , 必 須 先 知 道 寄 信 人 所 在 的 區 域 名 稱 所 對 應 到的 IP 位 址 , 例 如 筆 者 的 區 域 名 稱 「ftpforum.dhs.org」 對 應 為「210.241.235.29」, 則 可 以 加 上 一 行


「 210.241.235.29 RELAY」或 者 乾 脆 以 Class C 的 方 式 加 上 一 行 , 這 樣 一 來 只 要 是210.241.235.0 到 210.241.235.255 這 一 個 IP 範 圍 內 的 使 用 者 都 可以 使 用 這 一 台 電 子 郵 件 傳 送 信 件 。「 210.241.235 RELAY」比 較 保 險 , 這 樣 一 來 就 可 以 在 「ftpforum.dhs.org」 的 系 統 或「210.241.235.29」IP 位 址 的 系 統 上 透 過 這 一 台 電 子 郵 件 伺 服 器寄 信 了 , 所 以 必 須 加 上 許 多 行 這 樣 的 設 定 , 如 果 使 用 者 、 讀 者有 可 能 在 其 他 的 系 統 或 其 他 撥 接 網 路 透 過 這 一 台 電 子 信 件 伺 服器 傳 送 信 件 時 , 就 必 須 把 可 能 會 使 用 到 的 IP 位 址 範 圍 都 加 上 去 。乙 、 接 著 再 輸 入 底 下 的 指 令 , 這 一 個 動 作 會 依 照 剛 剛 修 改 過 的「access」 檔 案 來 更 新 「access.db」 檔 案 內 容 :makemap hash /etc/mail/access < /etc/mail/accesssendmail.cw 參 數 檔 案在 「/etc」 子 目 錄 裡 有 一 個 「sendmail.cw」 的 參 數 檔 案 也需 要 設 定 , 這 是 指 定 這 一 部 電 子 郵 件 伺 服 器 區 域 名 稱 的 設 定檔 案 , 例 如 筆 者 的 區 域 名 稱 為 「ftpforum.dhs.org」, 則 必 須在 這 一 個 檔 案 裡 加 上 一 行 內 容 為 「ftpforum.dhs.org」 的 資 料 。又 假 設 如 果 有 另 外 一 組 區 域 名 稱 也 對 應 到 同 一 部 電 子 郵件 伺 服 器 時 , 例 如 「kifer.dhs.org 」 的 IP 也 是 指 到「ftpforum.dhs.org」 同 一 部 系 統 時 , 可 以 在 「sendmail.cw」加 上 另 一 行 「kifer.dhs.org 」 的 內 容 , 如 此 一 來「superlee@ftpforum.dhs.org」 與 「superlee@kifer.dhs.org」就 都 代 表 是 同 一 位 使 用 者 的 電 子 郵 件 信 箱 囉 , 這 也 就 是 電 子郵 件 伺 服 器 「aliases」 的 功 能 。重 新 啟 動 RedHat 系 統 後 , 只 要 在 這 一 部 RedHat 系 統 上 建 立的 使 用 者 , 就 都 可 以 使 用 IMAP 套 件 所 提 供 經 由 POP3/SMTP通 訊 協 定 來 收 發 電 子 郵 件 了 , 當 然 使 用 者 還 是 必 須 找 一 個 固


定 的 區 域 名 稱 來 對 應 這 一 部 RedHat 系 統 的 IP 位 址 , 因 為 電 子郵 件 的 傳 遞 還 是 需 要 使 用 到 區 域 名 稱 Domain Name, 例 如 筆者 私 人 的 「superlee@ftpforum.dhs.org」 電 子 郵 件 地 址 , 這 就是 筆 者 架 設 在 公 司 的 RedHat Linux 系 統 , 透 過 免 費 的 區 域 名稱 對 應 到 一 組 IP 位 址 使 用 , 沒 有 區 域 名 稱 的 使 用 者 也 一 定 要去 尋 找 一 組 免 費 的 區 域 名 稱 來 對 應 IP 位 址 使 用 , 否 則 電 子 郵件 將 無 法 傳 遞 出 去 , 這 一 點 讀 者 要 記 住 , 網 際 網 路 上 提 供 免費 區 域 名 稱 的 服 務 網 站 很 多 , 有 區 分 為 動 態 IP 位 址 與 靜 態 固定 IP 位 址 不 同 的 服 務 網 站 。結 語這 一 次 筆 者 介 紹 了 RedHat Linux 的 幾 項 伺 服 器 以 及 安 裝一 片 以 上 的 網 路 介 面 卡 , 希 望 對 讀 者 多 少 都 有 點 幫 助 , 在ADSL 以 及 纜 線 數 據 機 Cable Modem 越 來 越 普 及 的 今 天 , 相信 會 有 越 來 越 多 的 讀 者 想 要 在 家 裡 、 辦 公 室 內 架 設 個 人 專 屬的 伺 服 器 , 如 此 一 來 就 不 需 要 再 藉 助 於 網 際 網 路 上 提 供 免 費服 務 但 有 許 多 限 制 的 網 站 。只 要 申 請 一 組 免 費 的 區 域 名 稱 , 透 過 寬 頻 網 路 以 及 架 設 好的 RedHat Linux 系 統 , 每 一 位 使 用 者 都 可 以 擁 有 個 人 專 用 的電 子 郵 件 信 箱 、WWW 全 球 資 訊 網 路 伺 服 器 等 , 可 以 自 己 來管 理 網 際 網 路 上 的 專 屬 資 源 , 也 可 以 讓 自 己 的 個 人 電 腦 成 為網 際 網 路 上 的 一 個 端 點 , 筆 者 相 信 這 是 許 多 讀 者 未 來 的 心願 ,Client 端 玩 久 了 、 使 用 久 了 總 是 希 望 會 變 成 Server 端 。筆 者 會 陸 陸 續 續 介 紹 在 RedHat Linux 伺 服 器 上 可 以 運 用的 網 際 網 路 資 源 , 下 一 回 筆 者 將 介 紹 RedHat Linux 伺 服 器 上架 設 DHCP 伺 服 器 以 及 如 何 做 到 如 同 視 窗 作 業 環 境 下 SyGate之 類 的 Gateway 功 能 , 讓 區 域 網 路 內 的 所 有 個 人 電 腦 都 可 以透 過 這 一 台 RedHat Linux 伺 服 器 存 取 、 使 用 到 網 際 網 路 上 的所 有 資 源 。當 然 筆 者 所 介 紹 的 對 Linux 強 大 的 功 能 來 說 都 是 「 入 門 的皮 毛 」 而 已 , 實 際 上 Apache 與 Mail Server 都 還 有 許 多 功 能 可


以 設 定 使 用 , 並 不 是 只 有 筆 者 所 介 紹 的 這 一 些 項 目 , 筆 者 只能 帶 領 各 位 讀 者 「 入 門 」, 爾 後 的 「 修 行 」 就 要 看 讀 者 的 努力 了 。對 這 一 次 筆 者 所 介 紹 的 內 容 還 有 疑 問 的 讀 者 , 或 者 是 讀 者卡 在 某 一 個 地 方 無 法 達 到 期 望 中 的 功 能 , 歡 迎 讀 者 透 過 電 子郵 件 或 到 筆 者 私 人 的 WWW 網 站 上 討 論 , 筆 者 的 通 訊 資 料 如下 :http://www.superlee.com/superlee@ftpforum.dhs.org or superlee@kifer.dhs.org本 單 元 目 錄備 註 : 可 以 另 存 新 檔 成 Html 格 式 , 就 可 以 將 文 章 中 的 圖 片分 離 出 來 。寬 頻 網 路 與 Linux 伺 服 器 Part I............................................................. 1前 言 ................................................................................................. 1網 路 介 面 的 安 裝 ............................................................................ 5日 商 Buffalo 的 LGY-PCI-TXL 網 路 介 面 ................................ 5第 二 片 網 路 卡 ........................................................................ 11TCP/IP 的 設 定 ........................................................................ 17Apache WWW Server................................................................... 19access.conf 參 數 檔 ................................................................. 20httpd.conf 參 數 檔 ................................................................... 23srm.conf 參 數 檔 案 .................................................................. 24Perl 的 版 本 問 題 ..................................................................... 27E-mail 電 子 郵 件 伺 服 器 ................................................................ 28安 裝 IMAP 套 件 ...................................................................... 29access 與 access.db 參 數 檔 案 的 設 定 ...................................... 30


sendmail.cw 參 數 檔 案 ............................................................ 31結 語 ............................................................................................... 32本 單 元 目 錄 ................................................................................... 33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!