Next Previous Contents

14. 以手动方式建立 PPP 连结

现在你已经建立你的 /etc/ppp/options 以及 /etc/resolv.conf 档案(以及,如果有需要,还有 /etc/ppp/pap|chap-secrets 档案),你可以藉由手动设立 PPP 连线来测试这些设定(一旦我们使手动连线能运作,我们将会自动化该过程).

要做这件事,你的通讯软体必须能在不重置你的数据机的情况下结束. Minicom 可以做到 - ALT Q (或者在比较旧的 minicom 版本是使用 CTRL A Q).

确定你以 root 签入.

启动你的通讯软体(像是 minicom),拨接到 PPP 伺服器并且像平常一样的签入. 如果你需要发出某个指令来起动伺服端上的 PPP,那麽就做吧.你将会看见你以前看过的垃圾.

如果你使用 PAP 或 CHAP 的话,那麽只是连线到远端系统应该就会起动在远端上的 PPP 而且你将在没有签入的情况下就见到这些垃圾(虽然这在某些伺服器上不会发生 - 试著按下 Enter 看看能否看到这些垃圾).

现在,在不要重置数据机的情况下结束通讯软体(在 minicom 使用 ALT QCTL A Q)并且在 Linux 的提示符号下(以 root 的身分)键入


pppd -d -detach /dev/ttySx 38400 &

-d 这个选项开启侦错功能 - ppp 连线起动时的”交谈”将会记录到你的系统记录里去 - 如果你遇上麻烦这会很有用的.

你数据机的灯现在应该要闪烁,因为要建立 PPP 连线.PPP 连线的建立将会花点时间.

此时你可以观察 PPP 界面,藉由发出这个指令


ifconfig

在你所拥有的任何乙太网路以及回授设备之外,你应该会看见像这样的资讯:


ppp0     Link encap:Point-Point Protocol
         inet addr:10.144.153.104  P-t-P:10.144.153.51 Mask:255.255.255.0
         UP POINTOPOINT RUNNING  MTU:552  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0

其中

(自然, ifconfig 不会报告这些 IP 号码,而是你的 PPP 伺服器上使用的.)

注意: ifconfig 也告诉你该连结已经起动并且正在执行!

如果没有 ppp 装置列出或得到的是像这样的资讯:


ppp0     Link encap:Point-Point Protocol
         inet addr:0.0.0.0  P-t-P:0.0.0.0  Mask:0.0.0.0
         POINTOPOINT  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0
         TX packets:0 errors:0 dropped:0 overruns:0

你的 PPP 连线并没有建立... 参阅稍後有关错误排除的章节!

你还可以看到这部远端机器(及其後的)的递送路径.要做到这点,下这个指令


route -n

你应该看到像这样的:-


Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
10.144.153.3    *               255.255.255.255 UH    1500   0        1 ppp0
127.0.0.0       *               255.0.0.0       U     3584   0       11 lo
10.0.0.0        *               255.0.0.0       U     1500   0       35 eth0
default         10.144.153.3    *               UG    1500   0        5 ppp0

特别注意这里,我们有两个项目指到我们的 ppp 装置.

第一项是主机递送(以 H 旗号表示)并且允许我们看到这部我们正在连接的主机 - 但再来就没有了.

第二项是预设递送路径(由 pppd 的 defaultroute 选项所建立的). 这份递送路径告诉我们的 Linux PC 将任何不在内部乙太网路的封包送到那里 - 到我们指定的网路 - 也就是到 PPP 伺服器本身. 而 PPP 伺服器有责任为我们将封包递送到网际网路并将回应的封包送回给我们.

如果你在递送表格中没看到两个项目,有些事不对劲. 特别是如果你的系统记录(syslog)显示一讯息告诉你 pppd 无法取代已存在的预设递送路径,那麽你已有一预设递送路径指向你的乙太网路界面 - 而这必须由指定的网路递送来取代: 你只能有一个预设递送路径!!!

你必须检查一下你系统的起始档案以找出预设递送是在那里建立的(这是由 route add default... 指令指定的). 将它改成像这样的 route add net...

现在藉由 ifconfig 之输出所回报的 IP 号码来 'ping' 一下该伺服器以测试这个连结,像这样


ping 10.144.153.51

你应该会接收到像这样的输出


PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms

这将会一直列印下去 - 按下 CTRL C 终止它,那时你将会接收到更多讯息:


--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms

到目前都很好.

现在试著藉由名称 ping 某台主机(不是 PPP 伺服器它自己的名称,而是在另一个地方的一台你知道可能已经起动而且正在运作的主机).例如


ping sunsite.unc.edu

这时会有一点停顿,因为 Linux 从你在 /etc/resolv.conf 里指定的 DNS 取得你要 'ping' 的完整主机名称所对应的 IP 位址 - 所以不要担心(但是你将会看见你的数据机灯号闪烁). 在短暂的时间後你将会接收到像这样的输出


 PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms

再一次,藉由按下 CTRL C 终止输出并取得统计资料...


--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 169.8/176.3/190.1 ms

如果你没有收到任何回应,试著 ping 一下你的 ISP 提供的 DNS 的 IP 位址. 如果你从这里得到肯定的结果,那麽看起来问题在你的 /etc/resolv.conf 档案里.

如果这样会没有结果,问题出在网路递送上,或者是你的 ISP 在将封包递送回给你时出了问题. 检查上面的递送表格,如果没问题,和你的 ISP 联络.一个测试 ISP 的好方法是用另一种作业系统来连接. 如果这样就可以动,那麽问题就在你这边.

如果一切正常,藉由键入这个指令终止该连线


ppp-off

一段短暂的停顿之後,数据机应该会自己挂断电话

如果这个指令无法动作的话,那麽不是关掉你的数据机就是起动你的通讯软体并且以 +++ 中断数据机然後当你接收到数据机的 OK 提示时以 ATH0 挂断电话.

你可能也得清除 pppd 所建立的锁定档


rm -f /var/lock/LCK..ttySx


Next Previous Contents