27.3. PPP联机疑难排解

This section covers a few issues which may arise when using PPP over a modem connection. Some ISPs present the ssword prompt while others present password. If the ppp script is not written accordingly, the login attempt will fail. The most common way to debug ppp connections is by connecting manually as described in this section.

27.3.1. 检查设备节点

使用自定义内核时,请保证内核配置文件中包含以下行:

device   uart

uart设备驱动已经包含在GENERIC内核中,所以在这种情况下不需要额外的步骤。只需检查调制解调器设备的dmesg输出:

# dmesg | grep uart

这应该会显示有关uart设备的一些相关输出。这些是我们需要的 COM 端口。如果调制解调器的行为类似于标准串行端口,则应将其列在uart1COM2上。如果是这样,则不需要重编译内核。匹配时,如果调制解调器位于uart1上,则调制解调器设备将为/dev/cuau1

27.3.2. 手动连接

通过手动控制ppp来连接到互联网是一种快速、简单的连接方式,也是调试连接的好方法,或者只是获得关于ISP如何处理ppp客户端连接的信息。让我们从命令行中启动PPP。注意,在我们所有的例子中,我们将使用example作为运行PPP的机器的主机名。启动PPP

# ppp
ppp ON example> set device /dev/cuau1

第二个命令将调制解调器设置到 cuau1

ppp ON example> set speed 115200

这将把连接速度设置为115,200 kbps

ppp ON example> enable dns

这告诉ppp配置解析器并将 nameserver 行添加到/etc/resolv.conf。如果ppp无法确定主机名,则可以稍后手动设置它。

ppp ON example> term

这将切换到terminal模式以手动控制调制解调器。

deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
at
OK
atdt123456789

使用at来初始化调制解调器,然后使用atdtISP的号码开始拨号。

CONNECT

确认连接,如果我们要出现连接问题,与硬件无关,这里我们将尝试解决。

ISP Login:myusername

看到此提示符时,输入ISP提供的用户名。

ISP Pass:mypassword

在此提示符下,使用ISP提供的密码进行回复。就像登录到 FreeBSD 一样,密码不会回显。

Shell or PPP:ppp

取决于ISP,这个提示符可能不会出现。如果出现,则会询问是在提供商上使用shell还是启动ppp。在这个例子中,选择了ppp来建立Internet连接。

Ppp ON example>

注意,在这个例子中,第一个p被大写了。这表明我们已经成功连接到了ISP

PPp ON example>

我们已经成功通过ISP认证,正在等待分配IP地址。

PPP ON example>

我们已就一个IP地址达成协议,并成功完成了连接。

PPP ON example>add default HISADDR

这里我们在这里添加我们的默认路由,在与外界对话之前,我们需要这样做,因为目前唯一建立的连接是与对等机的连接。如果是由于现有路由导致的失败,在add前面加上!字,或者,在实际连接之前设置这个,它将相应地协商一个新的路由。

如果一切顺利,我们现在应该有一个活动的互联网连接,可以使用CTRL+z。如果PPP返回到ppp,那么连接已经丢失。这很好理解,因为它显示了连接状态。大写的P代表连接到ISP,小写的p表示连接已经丢失。

27.3.3. 调试

如果您有一根直连线且似乎不能建立连接, 要使用 set ctsrts off 以关闭字节流的 CTS/RTS。这种情况一般发生在连接兼容 PPP 的终端服务器时。 当它向通信连接写入数据时, PPP就会挂起, 一直等待一个CTS, 或者一个不可能出现的 Clear to Send 信号。 如果使用了这个选项, 您还应使用 set accmap 选项, 某些存在缺陷的硬件在完成端对端发送特定字符, 特别是 XON/XOFF 时可能会遇到困难。 请参见 ppp(8) 联机手册以了解关于可用选项的更多细节, 以及如何使用它们。

老式调制解调器可能需要set parity even。奇偶校验默认设置为无,但在流量大量增加的情况下,在老式调制解调器上用于错误检查。

PPP可能不会返回到命令模式,这通常是ISP正在等待谈判开始时产生的的谈判错误。此时,使用-p将强制 ppp 开始发送配置信息。

If a login prompt never appears, PAP or CHAP authentication is most likely required. To use PAP or CHAP, add the following options to PPP before going into terminal mode:

ppp ON example> set authname myusername

其中myusername应该替换为 ISP 分配的用户名。

ppp ON example> set authkey mypassword

其中,mypassword应替换为ISP分配的密码。

如果连接已经建立,但找不到域名,请尝试ping(8) IP地址。如果出现100%(100%)丢包,很可能是没有分配默认路由。仔细检查add default HISADDR是否在连接时设置了。如果可以连接到远程IP地址,则可能是没有在/etc/resolv.conf中添加 DNS。这个文件应该是这样的:

domain example.com
nameserver x.x.x.x
nameserver y.y.y.y

其中 x.x.x.xy.y.y.y 应当替换为 ISP DNS 服务器的 IP 地址。

要配置 syslog(3)PPP连接提供日志记录,请确保在/etc/syslog.conf中存在这一行:

!ppp
*.*     /var/log/ppp.log

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.