6.2. Running pppd
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 4 and Chapter 5. You can simply configure the nameserver 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 nameserver,
the faster the name lookups will be. An alternative solution is to
configure a caching-only nameserver 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
nameserver, and will be much faster. This configuration is described
in Chapter 5.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 defaultrouteThis
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, except 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 in Section 6.5.1,
later in this chapter.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.[2] 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.[2] The default
network route is installed only if none is already present.