When you want to connect to the Internet through a PPP link, you have
to set up basic networking capabilities, such as the loopback device
and the resolver. Both have been covered in Chapter 5, and Chapter 6. You can
simply configure the name server of your Internet Service Provider in
the /etc/resolv.conf file, but this will mean
that every DNS request is sent across your serial link. This situation is not
optimal; the closer (network-wise) you are to your name server, the
faster the name lookups will be. An alternative solution is to
configure a caching-only name server at a host on your network. This
means that the first time you make a DNS query for a particular
host, your request will be sent across your serial link, but every
subsequent request will be answered directly by your local name
server, and will be much faster. This configuration is described in Chapter 6, in
Section 6.3.4.”

As an introductory example of how to establish a PPP connection with
pppd, assume you are at vlager again. First, dial in to the PPP
server c3po and log in to the
ppp account. c3po will execute its PPP driver. After
exiting the communications program you used for dialing, execute the
following command, substituting the name of the serial device you used
for the ttyS3 shown here:

# pppd /dev/ttyS3 38400 crtscts defaultroute

This command flips the serial line ttyS3 to the
PPP line discipline and negotiates an IP link with c3po. The transfer speed used on the
serial port will be 38,400 bps. The crtscts option turns on hardware handshake
on the port, which is an absolute must at speeds above 9,600 bps.

The first thing pppd does after starting up is
negotiate several link characteristics with the remote end using
LCP. Usually, the default set of options pppd tries
to negotiate will work, so we won't go into this here. Expect to say
that part of this negotiation involves requesting or assigning the IP
addresses at each end of the link.

For the time being, we also assume that
c3po doesn't require
any authentication from us, so the configuration phase is completed
successfully.

pppd will then negotiate the IP parameters with its
peer using IPCP, the IP control protocol. Since we didn't specify any
particular IP address to pppd earlier, it will try to
use the address obtained by having the resolver look up the local hostname.
Both will then announce their addresses to each other.

Usually, there's nothing wrong with these defaults. Even if your
machine is on an Ethernet, you can use the same IP address for both
the Ethernet and the PPP interface. Nevertheless,
pppd allows you to use a different address, or even
to ask your peer to use some specific address. These options are
discussed later in the Section 8.5”
section.

After going through the IPCP setup phase, pppd will
prepare your host's networking layer to use the PPP link. It first
configures the PPP network interface as a point-to-point link, using
ppp0 for the first PPP link that is active,
ppp1 for the second, and so on. Next, it sets up a
routing table entry that points to the host at the other end of the
link. In the previous example, pppd made the
default network route point to c3po, because we gave it the defaultroute option.[1] The default route simplifies
your routing by causing any IP datagram destined to a nonlocal host to
be sent to c3po; this makes
sense since it is the only way they can be reached. There are a number of
different routing schemes pppd supports, which we will
cover in detail later in this chapter.