第 17 章。手动设置 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 Q 或 CTL 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 接口。

第一个是 HOST 路由(由 H 标志指示),它允许我们看到我们连接到的主机 - 但仅此而已。

第二个是默认路由(通过给 pppd 选项建立defaultroute)。这是告诉我们的 Linux PC 将任何不以本地以太网为目标的包(我们有特定的网络路由到这些以太网)发送到 PPP 服务器本身的路由。然后,PPP 服务器负责将我们的数据包路由到 Internet 上,并将返回的数据包路由回给我们。

如果您没有看到包含两个条目的路由表,则说明有问题。特别是,如果您的 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 从您在其中指定的 DNS 获取您“ping”的完全限定主机名的 IP 地址/etc/resolv.conf- 所以不用担心(但您会看到您的调制解调器指示灯闪烁)。很快您将收到类似以下的输出

 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 的一个好方法是使用另一个操作系统进行连接。如果您可以使用另一个操作系统连接到 ISP 之外,则问题出在您这边。

如果一切正常,请通过键入以下命令关闭连接:-

ppp-off

短暂暂停后,调制解调器应该会自行挂断。

如果这不起作用,请关闭调制解调器,或启动您的通信软件并使用 +++ 中断调制解调器,然后在收到调制解调器的 OK 提示后使用 ATH0 挂断。

您可能还需要清理 pppd 创建的锁文件。
rm -f /var/lock/LCK..ttySx