27.3. PPP 連線疑難排解
前一頁 | 章 27. PPP | 下一頁

## 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. 檢查裝置節點

When using a custom kernel, make sure to include the following line in the kernel configuration file:

    device   uart

The `uart` device is already included in the `GENERIC` kernel, so no additional steps are necessary in this case. Just check the `dmesg` output for the modem device with:

    # dmesg | grep uart

This should display some pertinent output about the `uart` devices. These are the COM ports we need. If the modem acts like a standard serial port, it should be listed on `uart1`, or `COM2`. If so, a kernel rebuild is not required. When matching up, if the modem is on `uart1`, the modem device would be `/dev/cuau1`.

### 27.3.2. 手動連線

Connecting to the Internet by manually controlling `ppp` is quick, easy, and a great way to debug a connection or just get information on how the ISP treats `ppp` client connections. Lets start PPP from the command line. Note that in all of our examples we will use example as the hostname of the machine running PPP. To start `ppp`:

    # ppp

    ppp ON example> set device /dev/cuau1

This second command sets the modem device to `cuau1`.

    ppp ON example> set speed 115200

This sets the connection speed to 115,200 kbps.

    ppp ON example> enable dns

This tells `ppp` to configure the resolver and add the nameserver lines to `/etc/resolv.conf`. If `ppp` cannot determine the hostname, it can manually be set later.

    ppp ON example> term

This switches to “terminal” mode in order to manually control the modem.

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

    at
    OK
    atdt123456789

Use `at` to initialize the modem, then use `atdt` and the number for the ISP to begin the dial in process.

    CONNECT

Confirmation of the connection, if we are going to have any connection problems, unrelated to hardware, here is where we will attempt to resolve them.

    ISP Login:myusername

At this prompt, return the prompt with the username that was provided by the ISP.

    ISP Pass:mypassword

At this prompt, reply with the password that was provided by the ISP. Just like logging into FreeBSD, the password will not echo.

    Shell or PPP:ppp

Depending on the ISP, this prompt might not appear. If it does, it is asking whether to use a shell on the provider or to start `ppp`. In this example, `ppp` was selected in order to establish an Internet connection.

    Ppp ON example>

Notice that in this example the first `p` has been capitalized. This shows that we have successfully connected to the ISP.

    PPp ON example>

We have successfully authenticated with our ISP and are waiting for the assigned IP address.

    PPP ON example>

We have made an agreement on an IP address and successfully completed our connection.

    PPP ON example>add default HISADDR

Here we add our default route, we need to do this before we can talk to the outside world as currently the only established connection is with the peer. If this fails due to existing routes, put a bang character `!` in front of the `add`. Alternatively, set this before making the actual connection and it will negotiate a new route accordingly.

If everything went good we should now have an active connection to the Internet, which could be thrown into the background using CTRL+z If `PPP` returns to `ppp` then the connection has bee lost. This is good to know because it shows the connection status. Capital P's represent a connection to the ISP and lowercase p's show that the connection has been lost.

### 27.3.3. 除錯

If a connection cannot be established, turn hardware flow CTS/RTS to off using `set ctsrts off`. This is mainly the case when connected to some PPP-capable terminal servers, where PPP hangs when it tries to write data to the communication link, and waits for a Clear To Send (CTS) signal which may never come. When using this option, include `set accmap` as it may be required to defeat hardware dependent on passing certain characters from end to end, most of the time XON/XOFF. Refer to ppp(8) for more information on this option and how it is used.

An older modem may need `set parity even`. Parity is set at none be default, but is used for error checking with a large increase in traffic, on older modems.

PPP may not return to the command mode, which is usually a negotiation error where the ISP is waiting for negotiating to begin. At this point, using `~p` will force ppp to start sending the configuration information.

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

Where `myusername` should be replaced with the username that was assigned by the ISP.

    ppp ON example> set authkey mypassword

Where `mypassword` should be replaced with the password that was assigned by the ISP.

If a connection is established, but cannot seem to find any domain name, try to ping(8) an IP address. If there is 100 percent (100%) packet loss, it is likely that a default route was not assigned. Double check that `add default HISADDR` was set during the connection. If a connection can be made to a remote IP address, it is possible that a resolver address has not been added to `/etc/resolv.conf`. This file should look like:

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

Where `x.x.x.x` and `y.y.y.y` should be replaced with the IP address of the ISP's DNS servers.

To configure syslog(3) to provide logging for the PPP connection, make sure this line exists in `/etc/syslog.conf`:

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

前一頁 | 上一層 | 下一頁
27.2. 設定 PPP | 起始頁 | 27.4. 在乙太網路使用 PPP (PPPoE)

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。