Previous Next Table of Contents

7. Problems running pppd

7.1 pppd says that version 0.0.0 is out of date

There are several reasons which will generate this message.

7.2 pppd says that that the kernel is not configured for PPP. I know that I enabled the option and built the kernel.

Make sure that you did rebuild the kernel and that you are running it.

Make sure that you don't have an old copy of pppd on your disk and you are running that version. The previous version of pppd was stored on /usr/lib/ppp. Many people objected to this location. The 2.2 code has moved the pppd, chat, and pppstats to the /usr/sbin directory. If your scripts still reference /usr/lib/ppp then you will probably run the old code.

7.3 pppd wont run unless you are root

The pppd process needs to make changes to the networking system and this can only be done if you are the root user. If you wish to run pppd from other than the root user then the pppd program needs to be secured \suid to root\.

chown root /usr/sbin/pppd
chmod 4755 /usr/sbin/pppd

If you wish to control the pppd access to a select group of people, then make the pppd process owned by the group and do not permit all others to run the program.

7.4 unable to create pid file: no such file or directory

You need to create the directory /var/run. On earlier Slackware distributions, this was a symbolic link to the /etc directory.

This is a warning. The PPP software will work normally in spite of this message. However, the ppp-off script depends upon this file. It is a good idea to create the directory or make the link to the appropriate location.

The posix header, paths.h, defines the location for the pid file under the name \_VAR_RUN\. If you wish to use a different directory for PPP and others, change the value for this define and rebuild the software.

7.5 /etc/ppp/options: no such file or directory

You must create the directory /etc/ppp and have a file called \options\ in that directory. It needs to be readable by the pppd process (root).

The file may be empty. To make an empty file use the \touch\ command.

See the pppd man page, pppd.8, for a description of this file.

7.6 Could not determine local IP address

This happens with many configurations of the Telebit Netblazer. The problem is not the terminal server, but the site which has not configured the terminal server with a set of IP addresses.

The Netblazer does not have your IP address. You do not have your IP address. The link will not work unless both IP addresses are known.

The link will not work unless both IP addresses are known.

You must tell the Netblazer the IP addresses to be used. Use the local IP address and the remote IP address as a parameter to the pppd process.

Use the pppd option format of:

local_ip:remote_ip

(That is the local IP address, a colon, and the remote IP address.)

7.7 Could not determine remote IP address

See the previous answer.

7.8 I keep getting the message to the effect that the magic number is always NAKed. The system will not connect.

There is a one in over four billion chance that the two systems have chosen the same magic number. If you get a continual failure about the magic number, the chances that this is a fluke will geometrically reduce.

The two most common reasons for this failure are:

In either case, the Linux system is sending data to the remote which is being fed immediately back into the serial receiver. This is not an acceptable condition. You have what is called a \loop\.

7.9 protocol reject for protocol fffb

This usually occurs when you are trying to connect to a Xyplex terminal server. Version 5.1 of the Xyplex terminal server software, according to Xyplex, has numerous problems with PPP. It is strongly recommended that you update the Xyplex software to at least version 5.3.

If you must use Xyplex version 5.1, then use the pppd option \vj-max-slots 3\ to limit the number of slots to three. The problem on the Xyplex server is that it will accept the request for the default 16 slots, but fail to operate beyond the third slot. It should have return a NAK frame with the limit, but it does not.

Alternately, you can disable the Van Jacobson header compression with the option \-vj\.

7.10 The PPP software connects, sends quite a few frames, but still does not seem to connect. Why is that?

Linux does not support RPI modems. If your modem is RPI then you will have to find a different modem. This is not likely to change in the future given the statements made by Rockwell\s management.

Examine the system log when you use the \debug\ option. (You will need the system log data anyway if you are going to ask for help.) If the trace shows that it is sending the LCP-request frame over and over again and the id number is not incrementing then you are not exchanging frames with the remote PPP software.

The common reasons for this for this are:

7.11 The /etc/ppp/ip-up scripts won't work.

The pppd process launches the program at the location /etc/ppp/ip-up when the IP layer goes up. It gives it parameters which define the line status. Such things include the device name, communications speed, and IP addresses.

However, what may not be clear is that it treats this file as a program. It is not a script. The program is started by using the exec() function of Linux.

What this means is that if you wish to use a script for these programs, then you must do two things.

7.12 I can't execute /etc/ppp/ip-up: Exec format error

Please refer to the answer to the previous question.

7.13 How do I use PPP with a system which uses dynamic IP assignments? It assigns a different IP address to me with each call.

The assignment of the local IP address is a function of the options given to pppd and the IPCP protocol. You should use the \magic\ IP address of 0.0.0.0 if you must specify the local IP address. Most people simply leave the local IP address out of the option list.

The other option which is closely tied to this is called \noipdefault\. The noipdefault option instructs the pppd process to not attempt to guess the local IP address from your hostname and the IP addresses in the /etc/hosts file. Most people use this option when the IP address is dynamically assigned. However, this option does not mean \use dynamic IP addresses\. The use of dynamic IP addresses is automatic when the local IP address is not given.

7.14 How do I know what IP address was given to me when it is dynamically assigned?

Use the /etc/ppp/ip-up hook. The local IP address is the fourth parameter. This will be executed when pppd knows the IP address for the local system. The fifth parameter is the remote IP address if you should wish to know this value as well.

If you are curious about the value assigned then you may use the ifconfig program to display the current settings. It will show you the current values for both the local IP address and the IP address assigned to the remote under the P-t-P heading.

7.15 I just upgraded my system and now pppd reports that the option -v is not supported. Why?

Did you just upgrade to Linux \96 from Walnut Creek CDROM? It is also known as the Slackware 3.1 package. The problem is that the pppd executable in the /usr/sbin directory was renamed in that distribution and a script was installed in its place. This script was to find the version of the operating system and then either run the 2.2 or 2.1 version of pppd.

Unfortunately, the script does not work properly with the pppd process when you use the connect option.

So, to correct the problem, remove the script and replace it with the proper pppd executable.

7.16 The pppd process reports that it won't replace the existing default route. How do I get it to use the default route?

This is another Slackware \enhancement\. The Slackware package added a default route to the ethernet controller during the startup sequence in the /etc/rc.init1 script. This statement is:

/usr/bin/route add default dev eth0

The problem is that the statement has absolutely no functionality with the proper routing. A default route is designed to be sent to a router, not just dumped on the ethernet controller.

The pppd process is configured to not replace a default route if a default route is currently used before it starts. It does this for security reasons. Since Slackware uses the default route incorrectly, the pppd process is unable to install a new default route.

To correct the problem you need to replace the default route statement in the /etc/rc.init1 script with a proper network route. See the Net-2-HOWTO for the instructions on what should be used.

7.17 When I run pppd it says that support is not in the kernel.

There are a few reasons for this to be generated.

7.18 How do I use PPP and a local network at the same time?

Break the problem into two parts. The first part is to get the ethernet network working properly. See the question about the default route concerning a problem with the Slackware \96 package.

Once you have the ethernet network working, then get the PPP link between the one system running pppd and the internet provider working. Do not concern yourself with the local network at this time. Just get the PPP link working.

Then, once you have the two pieces working, you can get the two of them working together. Use either a firewall system on the computer with the PPP link or use the IP masquerading software.

For more instructions on the firewall code, see the Firewall-HOWTO.

For more instructions on the masquerading code, see the Net-2-HOWTO.

7.19 Can I use the same local IP address for each line of a PPP server?

Yes, you may use the same IP address for all of the local addresses on each of your PPP devices. You may even use the same IP address as one of your ethernet or token ring controllers.

However, you must use a unique IP address for each of your remote IP addresses.

The routing for a point-to-point link is to the remote IP address, not to the local IP address.

7.20 How do I find my local IP address??

The local IP address is one of the parameters given to the /etc/ppp/ip-up program. It is the 4th (counting from the first) argument. The easiest method is to simply save the value at the time that the ip-up program is executed.

If you don't wish to do this then you can use the ifconfig program to display the parameters for the specific PPP device. One of the values is the IP address.

If you don't wish to do this then you can obtain the information from the system log. This is the least desirable method as parsing the standard log file is much more complicated than parsing the output from ifconfig.

The easiest solution is to simply store the value during the ip-up program in some specific file which you may access at a later date.

7.21 I can't connect to the merit network.

Some users of the merit network have indicated that it needs PAP. Did you try PAP authentication?


Previous Next Table of Contents