Internet 连 线 篇(一)

Linux与 Internet连 线 设 定


上 期 揭 开 如 何 以 Linux架 构 Internet Server的 初 步 说 明 後 , 这 一 期 , 作 者 开 始 逐 次 来 介 绍 说 明 如 何 以 Linux系 统 来 架 构 一 个 具 有 主 要 功 能 的 Internet Server首 先 登 场 的 主 题 是 ---如 何 将 Linux系 统 连 接 上 Internet。


王 国 泰(Kuotai wang)


   其 实 一 般 说 来 , “ Internet Server” 最 好 能 够 经 常 性 地 连 上 “ Internet” , 因 此 申 请 专 线 的 连 线 帐 号 是 较 好 的 选 择 。 至 於 一 般 个 人 拨 接 连 线 的 方 式 , 因 为 可 能 没 有 一 个 固 定 的 网 路 位 址 ( IP Address) 以 及 固 定 的 网 路 资 讯 , 所 以 也 只 能 作 为 个 人 实 验 之 用 , 并 不 适 合 拿 来 建 立 “ Internet Server”。 目 前 提 供 网 际 网 路 连 线 服 务 的 厂 商 ( ISP诸 如 :HiNet、 SeedNet) , 对 於 专 线 连 接 方 式 的 申 请 业 务 , 大 致 提 供 ① Router ② Host两 种 选 择 。 这 两 个 不 同 的 连 接 方 式 , 除 了 连 接 所 需 设 备 有 所 不 同 之 外 , 所 提 供 的 功 能 也 有 些 差 距 。

申 请 的 是 ROUTER 帐 号

   如 果 申 请 的 是 一 个 【 ROUTER】 的 帐 号 , 本 地 端 需 要 准 备 一 个 “ Router” 来 连 接 , 这 “ Router” 可 以 是 一 台 单 独 的 「 远 端 路 由 器 」 硬 体 , 也 可 以 是 直 接 由 “ Server” 这 台 机 器 执 行 「 远 端 拨 接 」 的 软 体 并 且 担 任 “ Router” 的 角 色 。

   由 於 这 种 帐 号 拥 有 一 个 子 网 路 的 地 址 范 围 ( 一 个 以 上 的 IP Address可 用 ) , 可 以 多 台 机 器 同 时 位 於 “ Internet” 网 路 上 , 甚 至 也 不 需 要 一 定 以 一 台 机 器 来 担 任 “ Internet Server” 所 有 的 任 务 。 比 方 说 , Mail、 DNS由 一 台 机 器 负 责 , 而 WWW 则 由 另 一 台 机 器 担 任 。

申 请 的 是 HOST 帐 号

   申 请 【 HOST】 帐 号 则 你 的 “ ISP” 会 给 你 一 个 IP Address。 这 时 候 “ Internet Server” 必 须 负 担 所 有 的 工 作 。 也 就 说 , 连 线 、 Mail、 DNS、 WWW、 FTP......都 一 手 包 办 。

   下 面 两 个 图 形 是 在 Linux系 统 里 常 见 的 连 接 方 式 ( 见 图 一 图二 ) 。 使 用 「 远 端 路 由 器 」 连 接 Internet, 对 Linux系 统 而 言 , 由 於 Linux本 身 不 需 负 担 与 远 端 连 线 的 工 作 , 所 以 系 统 设 定 上 就 是 一 般 的 TCP/IP网 路 设 定 。 这 样 Linux系 统 工 作 会 单 纯 些 , 当 然 , 硬 体 成 本 会 高 些 。 如 果 , 直 接 由 Linux与 远 端 连 线 , 以 目 前 现 况 来 说 , 使 用 “ PPPD 2.x” 来 处 理 远 端 连 接 的 工 作 。

进 行 网 路 参 数 的 设 定

   不 论 申 请 哪 种 连 线 方 式 , “ Internet Server” 也 是 TCP/IP网 路 上 的 一 个 「 节 点 」 , 都 需 要 根 据 将 申 请 到 的 网 路 参 数 设 定 正 确 , 才 可 以 确 保 运 作 的 正 常 。 笔 者 列 出 几 个 设 定 参 数 的 要 点 供 作 参 考 。

(1)取 得 申 请 所 得 的 网 路 资 讯

● Domain Name: 经 过 TWNIC注 册 手 续 的 网 域 名 称 , 例 如 hope.com.tw。
● Host Name: Internet Server的 主 机 名 称 。 与 Domain Name结 合 就 成 为 完 整 的 网 路 名 称 , 例 如 www.hope.com.tw。
● IP Address: Server的 网 路 位 址 , 例 如 168.95.192.5。
● Router: 如 果 是 使 用 「 远 端 路 由 器 」 则 请 输 入 该 机 器 的 IP, 如 果 直 接 由 此 Linux机 器 连 接 则 设 定 为 自 己 的 IP。
● Netmask: 视 你 的 “ ISP” 厂 商 的 设 定 。如 255.255.192.0。
● Name Server: “ ISP” 厂 商 的 名 称 伺 服 器 , 作 为 “ Server” 的 根 名 称 伺 服 器 。 例 如 HiNet为 168.95.192.1。

   上 述 的 资 料 与 网 路 的 设 定 有 相 当 的 关 系 , 在 进 行 网 路 设 定 前 须 先 取 得 。

(2)确 定 Linux系 统 安 装 是 否 完 整 :

   由 於 Linux有 各 种 安 装 套 件 , 在 进 行 网 路 设 定 前 最 好 确 定 一 下 , 是 否 已 经 将 网 路 所 需 的 套 件 安 装 於 Linux系 统 中 。 另 外 , 还 要 确 定 所 使 用 的 网 路 卡 驱 动 程 式 、 PPP是 否 已 含 於 Kernel中 。

(3)如 果 所 使 用 是 Slackware系 列 安 装 套 件 :

   则 执 行 “ netconfig” 这 个 程 式 来 进 行 网 路 参 数 的 设 定 工 作 。 ( 见 图 叁

   如 果 使 用 Red Hat, 则 可 以 於 XWindow下 的 “ Control Panel” 中 执 行 " Network Config” 来 设 定 网 路 参 数 。 ( 见 图 四

(4)除 了 使 用 所 提 供 的 程 式 来 设 定 之 外 , 也 可 以 自 行 修 改 设 定 , 以 Slackware 为 例 。

● /etc/HOSTNAME记 载 主 机 的 完 整 名 称
● /etc/rc.d/rc.inet1设 定 网 路 连 接 介 面 的 参 数 。 由 於 各 项 参 数 都 已 变 数 化 , 所 以 可 以 仿 照 范 本 将 各 参 数 改 为 自 己 实 际 的 数 值 即 可 。

(5)在 设 定 完 这 些 参 数 , 不 妨 让 系 统 重 新 启 动 , 让 更 新 过 的 参 数 生 效 。

   如 果 是 使 用 「 远 端 路 由 器 」 作 为 连 接 , 因 为 Linux系 统 不 需 要 处 理 远 端 连 接 的 工 作。 因 此 在 进 行 完 这 些 设 定 後 , 实 际 上 就 已 经 完 成 连 上 Internet设 定 工 作 。 不 妨 使 用 " Ping" 指 令 来 测 试 网 路 是 否 正 常 。

simon: /root# ping 168.95.192.1
PING 168.95.192.1( 168.95.192.1) : 56 data bytes
64 bytes from 168.95.192.1;
   icmp_seq=0 ttl=255 time=322.1 ms
64 bytes from 168.95.192.1;
   icmp_seq=1 ttl=255 time=317.3 ms

使 用 PPPD 2.x 来 进 行 远 端 连 接

   目 前 透 过 串 列 埠 与 远 端 进 行 网 路 连 线 的 协 定 中 , PPP是 最 被 广 泛 使 用 的 方 式 之 一 。 因 此 对 於 以 专 线 或 拨 接 方 式 连 接 Internet的 Linux 使 用 者 而 言 , 使 用 PPP应 该 是 个 最 佳 选 择 。

PPP for Linux整 个 软 体 分 为 两 个 部 份 , 第 一 个 部 份 是 必 须 位 於 Linux Kernel 中 , 第 二 个 部 份 则 是 外 部 的 连 线 控 制 程 式 。

   自 从 Linux 1.1.14之 後 的 Linux Kernel中 已 经 将 PPP包 含 至 Kernel的 一 部 份 , 所 以 使 用 者 倒 不 必 担 心 Kernel程 式 码 是 否 已 经 含 有 支 援 PPP的 功 能 , 不 过 , 你 仍 然 需 要 小 心 一 点 , 因 为 机 器 上 所 使 用 的 Linux或 许 当 初 在 编 译 时 , 并 未 将 支 援 【 PPP】 的 驱 动 程 式 纳 入 Kernel中 。 所 以 , 你 可 以 使 用 下 列 的 方 法 检 查 目 前 所 使 用 的 Linux系 统 是 否 已 经 含 有 PPP的 驱 动 程 式 。

imon: /root# cat /proc/net/dev
Interface Receive Transmit
packets errs drop fifo frame packets errs ...
lo : 0 0 0 0 0 0 0 ...
ppp0: 0 0 0 0 0 0 0...
ppp1: 0 0 0 0 0 0 0...
ppp2: 0 0 0 0 0 0 0...
ppp3: 0 0 0 0 0 0 0...
...
...
...

   如 果 显 示 结 果 并 没 有 pppx这 一 项 , 那 麽 表 示 目 前 系 统 kernel中 并 没 有 PPP的 驱 动 程 式 , 这 时 请 你 重 新 编 译 Linux Kernel, 并 在 make config阶 段 时 , 务 必 要 将 PPP纳 入 系 统 Kernel中 , 然 後 再 使 用 Kenel启 动 系 统 。

注 : 在 “ lnterface” 这 个 栏 位 所 显 示 的 是 目 前 系 统 所 能 控 制 的 网 路 硬 体 介 面 , lo表 示 loopback表 示 自 己 本 身 , pppx则 是 PPP的 介 面 , slipx是 SLIP, ehthx则 是 Ethernet网 路 介 面 。

安 装 PPPD 2.x

   在 确 定 系 统 Kernel已 经 支 援 PPP的 介 面 之 後 , 再 来 就 是 安 装 使 用 者 操 作 这 边 的 PPPD 程 式 , 目 前 最 新 的 PPPD是 2.2x, 不 过 2.1.2x 的 版 本 相 当 广 泛 使 用 , 而 且 大 致 上 还 算 稳 定 , 都 可 以 胜 任 连 线 的 重 责 大 任 。

   如 果 你 使 用 Slackware, Debian, Redhat......等 套 件 , 这 些 连 线 所 需 的 PPP程 式 都 已 经 含 於 套 件 中 , 只 要 在 安 装 时 记 得 选 取 PPPD这 个 软 体 . 如 果 在 安 装 时 忘 了 安 装 , 於 Slackware中 可 以 使 用 “ pkgtool” 来 安 装 PPPD-2.1x.

   接 下 来 就 是 设 定 连 线 参 数 进 行 连 线 的 工 作 。 我 们 分 为 两 个 部 份 来 说 明 , 首 先 列 举 相 关 的 档 案 , 然 後 再 举 例 说 明 专 线 及 拨 接 的 连 接 用 法 。

pppd相 关 档 案

以 PPPD相 关 的 几 个 常 见 档 案 列 举 如 下 :

● PPPD: PPPD连 线 的 主 程 式 , 负 责 处 理 PPP 网 路 通 讯 的 工 作 。

● chat: 由 於 PPPD是 透 过 串 列 埠 与 远 端 连 线 , 因 此 经 常 需 要 处 理 例 如 数 据 机 的 初 始 化 动 作 , 或 是 远 端 终 端 伺 服 器 的 登 入 处 理 。 因 此 , 在 PPPD2.x里 提 供 这 个 小 程 式 供 连 线 时 的 处 理 。

● /etc/ppp/options: PPPD提 供 相 当 多 的 选 项 , 如 果 在 每 次 连 线 时 一 一 输 入 不 免 有 些 繁 杂 。 我 们 可 以 将 较 为 固 定 的 参 数 写 於 此 档 , PPPD每 次 启 动 执 行 时 , 便 会 自 动 读 取 /etc/PPP/options, 这 样 就 不 必 将 所 有 的 选 项 都 写 在 命 令 列 中 了 。

● /etc/ppp/pap-secrets。

● /etc/ppp/chap-secrets: 在 PPP协 定 中 , 还 有 chap、 pap这 两 种 协 定 , 这 协 定 中 有 所 谓 授 权 确 认 的 手 续 , 因 此 这 两 个 档 案 定 义 着 与 远 端 主 机 连 线 所 需 的 使 用 者 名 称 与 密 码 。

PPPD专 线 连 接 实 例

( 1) 如 果 专 线 的 连 接 不 需 要 有 登 录 的 手 续 时 , 连 线 的 执 行 方 式 大 致 如 下 :

pppd defaultroute debug kdebug 2 /dev/cua0 19200 168.45.190.1

● 168.45.190.1: 在 PPPD执 行 参 数 里 可 以 定 义 连 线 的 两 端 的 IP Address格 式 是〈 local〉 : 〈 remote〉 , 168.45.190.1则 指 定 义 本 地 端 的 位 址 , 而 未 指 定 远 端 的 位 址 。

● /dev/cua0: 指 定 用 哪 个 串 列 埠 来 连 线 ,这 里 速 率 设 为 19200。

● defaultroute: 则 是 在 连 线 成 功 後 , 将 168.45.190.1加 入 系 统 “ routing table” , 并 设 定 为 本 机 器 的 内 定 Router。

● debug: 则 是 配 合 侦 错 需 求 , 将 连 线 情 形 记 录 做 输 出 转 向 。

● kdebug 2:可 以 配 合 “ syslogd” 将 这 些 资 讯 转 至 /var/adm的 指 定 档 案 中 。

( 2) 如 果 专 线 连 接 需 要 有 使 用 者 登 录 手 续 时 ( 如 果 对 方 是 台 终 端 机 伺 服 器 时 ) , 连 线 执 行 与 前 面 所 述 相 似 , 只 要 透 过 「 chat」 来 处 理 使 用 者 登 录 的 手 续 , 下 面 是 PPPD文 件 上 的 一 个 例 子 :

pppd connect/etc/ppp/ppp-connect
  defaultroute noipdefault debug \
kdebug 2 /dev/cua0 9600
Here /etc/ppp/ppp-connect is the follow
  -ing script:
  #! /bin/sh
  /etc/ppp/sendbreak
chat -v -t60“ ” \;“ service: ” blackice \
ogin: callahan word: PASSWORD \
black% “ stty -echo; ppp” \
“ Starting PPP now” && sleep 5

● connect: 这 个 选 项 之 後 是 指 定 在 PPPD启 动 时 , 执 行 哪 一 个 程 式 进 行 通 讯 的 工 作 。在 例 子 中 则 是 执 行 ppp-connect这 个 Shell Script。

● noipdefault: 这 个 选 项 是 适 用 於 , 连 线 没 固 定 一 个 位 址 ( 动 态 定 址 ) 时 使 用 , 本 地 机 器 的 网 路 位 址 是 由 远 端 所 赋 予 , 而 且 不 一 定 是 每 次 连 接 的 相 同 的 位 址 。 一 般 而 言 , 固 接 式 的 帐 号 都 是 固 定 的 位 址 , 只 有 一 般 拨 接 式 的 帐 号 才 会 使 用 这 种 连 线 方 式 。

PPPD拨 接 连 接 实 例

   建 立 一 个 Internet Server专 线 连 接 可 能 是 绝 大 多 数 的 选 择 。 但 是 , 如 果 只 是 自 己 要 连 上 Internet或 者 真 的 申 请 到 拨 接 帐 号 , 而 且 有 合 法 网 路 名 称 位 址 的 情 形 时 , 那 麽 就 需 要 执 行 PPPD进 行 拨 接 连 线 的 程 序 。

实 际 上 使 用 的 方 式 差 不 多 , 下 面 是 使 用 拨 接 方 式 与 HiNet连 线 的 例 子 :

sr/lib/ppp/pppd /dev/ttyS1 19200 \

connect‘ /usr/lib/ppp/chat-v“ ” ATDT412
5678 CONNECT \

“ ” name: NAME word: PASSWORD “ ==〉 ” 1’ modem crtscts \

defaultroute netmask 255.255.192.0 kdebug 2 168.95.204.56:

   像 这 样 的 情 形 , 执 行 参 数 会 写 的 一 大 串 , 所 以 我 们 可 以 将 部 份 较 固 定 的 参 数 置 於 /etc/ppp/options。 同 时 , 也 将 连 线 的 执 行 命 令 产 生 为 一 个 Shell Script, 这 样 就 不 必 每 次 得 输 入 这 麽 多 参 数 。

确 定 完 成 PPPD的 连 线

   要 确 定 PPPD是 否 已 经 完 成 连 线 的 工 作 , 可 以 执 行 “ ifconfig” 来 检 查 “ ifconfig” 不 加 任 何 参 数 时 , 会 显 示 目 前 系 统 可 使 用 的 网 路 介 面 , 如 果 ppp0出 现 在 显 示 的 清 单 中 , 表 示 已 经 完 成 连 线 , 你 的 机 器 已 经 连 上 Internet 了 。 接 着 , 你 也 可 以 使 用 “ Ping” 、 “ Telnet” 来 测 试 网 路 的 连 通 情 形 。

# ifconfig
lo Link encap Local Loopback inet addr 127.0.0.1 Bcast127. 255.255.255Mask255.0.0.0
UP LOOPBACK RUNNING
MTU 2000 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0
ppp0 Link encap Point-Point Protocol
inet addr 168.95.122.224 P-t-P
168.95.192.5Mask255.255.192.0
UP POINTOPOINT
RUNNING
MTU 1500 Metric 1
RX packets 33 errors 0
dropped 0 overrun 0
TX packets 42 errors 0
dropped 0 overrun 0

PPPD的 终 止

   假 设 PPPD的 程 序 代 号 是 84, 当 要 终 止 该 PPPD执 行 时 , 可 依 下 列 方 式 将 PPPD终 止 。

kill -INT 84

PPPD连 线 侦 错

   如 果 连 线 的 工 作 一 直 有 些 问 题 , 可 修 改 /etc/syslog.conf内 容 并 配 合 kdebug 2参 数 将 pppd连 线 情 形 转 至 档 案 中 来 检 查 。

● vi /etc/syslog.onf
   加 入 下 列 一 行 内 容
local2.*, kern.* /var/adm/ppplog

● kill -hup syslogd的 pid
   让 syslogd可 以 重 新 读 取 syslog.conf.然 後 根 据 设 定 的 内 容 将 讯 息 转 向 指 定 的 档 案 中 。 新 的 设 定 生 效 後 , 以 後 执 行 PPPD的 连 线 情 形 , 就 会 记 录 到 /var/adm/ppplog中 , 这 样 子 就 可 以 比 较 有 方 向 的 找 到 问 题 结 所 在 。

结 语

   连 接 上 Internet是 Internet Server开 始 运 作 第 一 步 , 到 目 前 为 止 已 可 由 Server这 台 机 器 连 接 到 外 界 许 多 机 器 。 下 一 期 , 我 们 会 把 话 题 放 在 DNS( Domain Name Service: 网 路 名 称 伺 服 器 ) 设 定 , 一 步 步 架 构 一 个 Internet Server, 请 各 位 待 续 。 文 中 内 容 如 有 错 误 也 请 各 位 不 吝 赐 教 , 我 们 下 回 见 !