home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / FAQ / txt / PPP-FAQ < prev    next >
Text File  |  1999-04-09  |  87KB  |  1,958 lines

  1.   Linux PPP FAQ
  2.   Al Longyear, longyear@netcom.com
  3.   v1.13, 9 December 1996
  4.  
  5.   This document contains a list the most Frequently Asked Questions
  6.   (FAQ) about PPP for Linux (and their answers). It is really not a
  7.   HOWTO, but is in ┤classical┤ Question / Answer form.  We have a dif¡
  8.   ferent document which represents the PPP-HOWTO. It is written by
  9.   Robert Hart.
  10.  
  11.   1.  Preface
  12.  
  13.   Please send any corrections to longyear@netcom.com.
  14.  
  15.   This is but one of the Linux HOWTO/FAQ documents. You can get the
  16.   HOWTO┤s from sunsite.unc.edu:/pub/Linux/docs/HOWTO (this is the
  17.   ┤official┤ place) or via WWW from the Linux Documentation home page.
  18.   You cannot rely on the HOWTO┤s being posted to comp.os.linux.answers,
  19.   as some news feeds have complained about their size.
  20.  
  21.   Throughout this document, I have used the word ┤remote┤ to mean 'the
  22.   system at the other end of the modem link┤. It is also called ┤peer┤
  23.   in the PPP documentation. Another name for this is called the
  24.   ┤gateway┤ when the term is use for routing.  Its IP address will show
  25.   as the ┤P-t-P┤ address if you use ifconfig.
  26.  
  27.   Microsoft is a registered trademark of Microsoft Corporation. Morning
  28.   Star is a registered trademark of Morning Star Technologies
  29.   Incorporated. All other products mentioned are trademarks of their
  30.   respective companies.
  31.  
  32.   2.  General information
  33.  
  34.   2.1.  What is PPP?
  35.  
  36.   PPP, or Point-to-Point Protocol, is a recognized ┤official┤ Internet
  37.   protocol. It is a protocol used to exchange IP frames (and others)
  38.   over a serial link. The current base RFC for PPP is 1661. There are
  39.   many related ones.
  40.  
  41.   Contrary to what some people think, it does not mean ┤Peer to Peer
  42.   Processing┤; although you may do peer-peer communications using TCP/IP
  43.   over a PPP link.
  44.  
  45.   2.2.  My university (company) does not support PPP. Can I use PPP?
  46.  
  47.   In general, no. A ┤classical┤ PPP implementation requires that you
  48.   make changes to the routes and network devices supported by the
  49.   operating system. This may mean that you will have to rebuild the
  50.   kernel for the remote computer.
  51.  
  52.   This is not a job for a general user. If you can convince your
  53.   administration people that PPP is a ┤good thing┤ then you stand a
  54.   chance of getting it implemented. If you can't, then you probably
  55.   can't use PPP.
  56.  
  57.   However, if you are using a system which is supported by the people
  58.   who are marketing the ┤TIA┤ (The Internet Adapter) package, then there
  59.   is hope. I do not have much information on this package, however, from
  60.   what I have found, they plan to support PPP in ┤the next version┤. (My
  61.   information may be old. Contact them directly. Information on TIA is
  62.   available at ftp.marketplace.com in the /pub/tia directory.)
  63.   If your system is not supported by TIA, and you choose not to use
  64.   slirp, and you can┤t convince the admin group to support PPP then you
  65.   should use the ┤term┤ package. Some service providers will object to
  66.   you running ┤term┤. They have many different reasons, however the most
  67.   common is ┤security concerns┤.
  68.  
  69.   There is a version of TIA for Linux.
  70.  
  71.   In addition to TIA, Danny Gasparovski wrote a program called slirp
  72.   which will perform functions similar to TIA. The program is currently
  73.   available with the source code from the ftp site
  74.   blitzen.canberra.edu.au:/pub/slirp.  You should obtain the code if you
  75.   wish additional information about this program. From the initial
  76.   examination, it is seems to be an excellent contender to the
  77.   commercial TIA program.
  78.  
  79.   2.3.  Where is PPP?
  80.  
  81.   It is in two parts. The first part is in the kernel.  In the kernels
  82.   from 1.1.13, the driver is part of the network system drivers.
  83.  
  84.   The second part is the ┤daemon┤ process, pppd.  This is a required
  85.   process. The source to it is in the file ppp-2.2.0e.tar.gz located on
  86.   sunsite.unc.edu in the /pub/Linux/system/Network/serial directory.
  87.  
  88.   Version 2.2 and above are designed to be used only with the 1.2 and
  89.   later kernels. Please don't use this version with the 1.1 series
  90.   kernels as they are out of date for either the tty driver or the
  91.   networking software.
  92.  
  93.   2.4.  I just obtained PPP. What do I do with it?
  94.  
  95.   Read The Fine Material available.
  96.  
  97.   Start by reading the README file and then the README.linux file.  The
  98.   documentation sources are listed below.
  99.  
  100.   2.5.  Where are additional sources of information for PPP?
  101.  
  102.   (Where┤s the documentation? Is there a HOWTO?, etc.)
  103.  
  104.   There are several sources of information for the PPP protocol as
  105.   implemented under Linux.
  106.  
  107.   ╖  The README file in the source package.
  108.  
  109.   ╖  The README.linux file in the source package.
  110.  
  111.   ╖  The Net-2-HOWTO document.
  112.  
  113.   ╖  The PPP-HOWTO document.
  114.  
  115.   ╖  The Network Administration Guide.
  116.  
  117.   ╖  The pppd man page.
  118.  
  119.   ╖  The FAQ document for the comp.protocols.ppp newsgroup.
  120.  
  121.   The HOWTO and this FAQ are stored in the usual place for the Linux
  122.   HOWTOs. That is currently on sunsite.unc.edu in the directory
  123.   /pub/Linux/docs/HOWTO.
  124.  
  125.   The Network Administration Guide is available in the
  126.   /pub/Linux/docs/LPD/network-guide directory on sunsite. It is also
  127.   published by O┤Riellly and Associates.  So, if you want a really
  128.   professional document, then buy a copy from your local bookstore.
  129.  
  130.   The ┤man┤ pages are included in the source package. You will probably
  131.   have to move them to the normal man directory, /usr/man/man8 before
  132.   the man command may find them.  Alternately, you may use nroff and
  133.   more to view them directly.
  134.  
  135.   The FAQ for comp.protocols.ppp describes the PPP protocol itself and
  136.   the various implementations. You will find the FAQ for the usenet news
  137.   group, comp.protocols.ppp, archived on rtfm.mit.edu in the /usenet
  138.   directory. It is in eight parts at the present time.
  139.  
  140.   2.6.  Would someone please send me scripts for PPP so that I may see
  141.   how they are written?
  142.  
  143.   There are a few scripts which are included with the source package for
  144.   pppd. It will cover the normal types of access where you are requested
  145.   to enter a UNIX login and password.
  146.  
  147.   Specific ┤scripts┤ for specific systems are not included.  If you have
  148.   problems with a specific connection then you should contact the help
  149.   desk for your site, the local news group at the site, or the general
  150.   usenet groups for Linux. Unfortunately, time does not permit me to
  151.   answer questions for help on supplying a script for your specific
  152.   system.
  153.  
  154.   2.7.  Where should I post questions about PPP?
  155.  
  156.   The primary usenet group for the PPP implementations is
  157.   comp.protocols.ppp or comp.os.linux.setup.  Use this group for general
  158.   questions such as ┤How do I use pppd?┤ or ┤Why doesn't this work?┤.
  159.  
  160.   Questions such as ┤Why wont pppd compile?┤ are generally linux related
  161.   and belong on the comp.os.linux.networking group.
  162.  
  163.   Please don't use comp.os.linux.help even if your site should still
  164.   carry this obsolete news group.
  165.  
  166.   2.8.  The PPP software doesn't work. HELP!!!
  167.  
  168.   This is one of the most sickening questions. I realize that this is a
  169.   plea for help. However, it is practically useless to post this message
  170.   with no other information. I, and most others, will only ignore it.
  171.  
  172.   Please see the question regarding errors which normally occur at the
  173.   modem┤s disconnection. They are not the cause of a problem, only a
  174.   symptom. Posting a message with only those errors is also meaningless.
  175.  
  176.   What is needed is the output of the system log (syslog) when you run
  177.   the pppd program with the option ┤debug┤. In addition, if you are
  178.   using chat then please use the ┤-v┤ option to run the sequence with
  179.   verbose output.
  180.  
  181.   Please include the output from the kernel┤s startup.  This shows the
  182.   various kernel hardware information such as your UART type, PPP
  183.   version, etc.
  184.  
  185.   Please include all information that you can relating to the problem.
  186.   However your system configuration, disk drive configuration, terminal
  187.   type, mouse location and button status, etc. are irrelevant. What is
  188.   important is the system to which your are trying to contact, the PPP
  189.   (or terminal server) that they are using, the modem types and speed
  190.   that you are using, etc.
  191.  
  192.   Take care and go through the output. Remove the references to the
  193.   telephone number, your account name, and the password.  They are not
  194.   important to analyzing the problem and would pose a security risk to
  195.   you if you published them to usenet. Also discard the lines which
  196.   neither come from the kernel nor pppd.
  197.  
  198.   Do NOT run the pppd program with the option ┤kdebug 31┤ and post that!
  199.  
  200.   If the problem warrants examining the data stream, then you will be
  201.   contacted by email and asked to mail the trace.  Usenet already costs
  202.   too much for too many people.
  203.  
  204.   Information is written to various levels. The debug information is
  205.   written to the debug level. The informational messages are written to
  206.   the info level. The errors are written to the error level. Please
  207.   include all levels the ┤local2┤ group which come from the pppd
  208.   process.
  209.  
  210.   In addition, please do not delete the time stamp information. It is
  211.   important.
  212.  
  213.   3.  Other implementations
  214.  
  215.   3.1.  Do you know of a implementation for PPP other than Linux? I
  216.   would like one for HP-UX, or AIX, or ... (you fill in the blank)?
  217.  
  218.   Check the PPP FAQ document mentioned above.
  219.  
  220.   HP-UX is supported by the commercial Morningstar package. AIX is in
  221.   the current 2.2 pppd package.
  222.  
  223.   If you don't find one listed then post to the comp.protocols.ppp group
  224.   and not the Linux group.
  225.  
  226.   (Please don't mail me asking for ┤Do you know of a PPP package for
  227.   ...┤? These requests will now be ┤appropriately┤ filed. ;-))
  228.  
  229.   The pppd package placed on sunsite does not contain the code which
  230.   would use the some of the ports which use the streams interface. This
  231.   is due to the reason that the streams interface contains a restrictive
  232.   copyright which prevents the commercial packaging of the source which
  233.   contains the module. We, the people who have been working on the pppd
  234.   package, have tried to contact the author of the original module for
  235.   streams in an attempt to have the copyright changed. He was un-
  236.   responsive at first. Now he can not be located.
  237.  
  238.   For this reason, and due to the fact that the sunsite site is for
  239.   Linux, I decided to remove the AIX, Next, and any other port of pppd
  240.   which involved the original streams code. The SunOS and Solaris ports
  241.   are included since their streams implementation has been rewritten.
  242.   You should continue to find the BSD variation as well as the Linux
  243.   form in the package. If you wish the pppd code for a system which uses
  244.   streams then you will have to consult the PPP-FAQ for the location of
  245.   the pppd archive site near you. Alternately, you can use archie.  Just
  246.   don't use the mirrors for sunsite as they will not have the code.
  247.  
  248.   3.2.  Did you know that there is a program called ┤dp┤?
  249.  
  250.   Yes, we know. The dp package was considered very early in the
  251.   development stage quite a few months back. It is nice. It supports
  252.   ┤demand dial┤. It also only works with systems which support streams.
  253.   This is primarily the SunOS (Solaris) operating systems.
  254.   The question of demand dial is covered later in this document.
  255.  
  256.   Linux, at the present time, does not supports streams.
  257.  
  258.   There are several other packages for PPP available on the ┤net┤. The
  259.   ┤portable PPP┤ package is very much like the TIA code. There is
  260.   another package called simply ┤PPP┤. There is code for PPP in the KA9Q
  261.   package.
  262.  
  263.   The slirp and TIA code will do PPP as well.
  264.  
  265.   Of all of the packages available, the pppd package was the closest to
  266.   the requirements and functions of Linux to warrant the port.
  267.  
  268.   (If you want more information about these other packages, ask in the
  269.   comp.protocols.ppp group!)
  270.  
  271.   3.3.  What RFCs describe the PPP protocol?
  272.  
  273.   The current implementation of PPP is a mixture of several.
  274.  
  275.   The major portion of the PPP code is written against the RFCs 1331 and
  276.   1332. These RFCs were later obsoleted. 1331 was replaced by 1548 and
  277.   that, in turn, was obsoleted by 1661 six months later. Most
  278.   implementations of PPP will be happy to talk to the Linux PPP code.
  279.  
  280.   This does not mean that the Linux PPP package is obsolete. It is only
  281.   that at the time that the package was written the current RFC was
  282.   1331. Any changes in subsequent RFC documents has been incorportated
  283.   within the pppd package and it is ┤current┤ by today┤s standards.
  284.  
  285.   A complete list is in the faq for comp.protocols.ppp.
  286.  
  287.   [to quote the FAQ document]:
  288.  
  289.        All of 1134, 1171, and 1172 (and 1055, for that matter :-)
  290.        have been obsoleted. They┤re interesting only if you want to
  291.        debug a connection with an ancient PPP implementation, and
  292.        you┤re wondering why (e.g.) it asked you for IPCP option 2
  293.        with a length of only 4, and Compression-Type 0x0037.
  294.  
  295.        (There┤s a lot of that still running around - be careful out
  296.        there.)
  297.  
  298.   Linux PPP will automatically detect these conditions and compensate
  299.   for it.
  300.  
  301.   4.  Compatibility
  302.  
  303.   4.1.  Can PPP talk to a SLIP interface?
  304.  
  305.   No. SLIP works with SLIP. PPP works with PPP.
  306.  
  307.   Some vendors may offer products which work both as SLIP and PPP.
  308.   However, they must be configured to run in one mode or the other.
  309.   There is no present method to determine, based upon the protocol
  310.   passed at the time of a connection, which combination of SLIP
  311.   protocols or PPP is being requested.
  312.  
  313.   4.2.  Which is better? PPP or SLIP?
  314.  
  315.   IT DEPENDS UPON MANY FACTORS.
  316.  
  317.   The people who post this type of question have usually not read the
  318.   Net-2-HOWTO document.
  319.  
  320.   A good technical discussion is available at Morning Star┤s www server,
  321.   www.morningstar.com.
  322.  
  323.   4.3.  Is CHAP or PAP better for authentication?
  324.  
  325.   If you have the choice, use CHAP. Failing that, PAP is better than
  326.   nothing.
  327.  
  328.   4.4.  What about CHAP which Microsoft uses with Windows NT?
  329.  
  330.   CHAP is a Cryptographic Handshake Authentication Protocol.  It means
  331.   that it takes some form of a key and will encrypt the response using a
  332.   one-way encryption algorithm. The algorithm is negotiated at the time
  333.   that the CHAP protocol is requested. The most common is called MD5. It
  334.   has an encryption code of 05 in the CHAP request.
  335.  
  336.   Microsoft uses a DES algorithm which, until recently, was incompatible
  337.   with the pppd process. If you wish to connect to a Windows NT server,
  338.   there are a set of patches which are included with the pppd source
  339.   code to support the DES style used by Microsoft.
  340.  
  341.   Contrary to what some un-informed people believe at Stanford
  342.   University believe, Microsoft did not just go against the
  343.   recommendations of the IETF working group. The code values were
  344.   properly requested and the implementation has been fully documented.
  345.  
  346.   5.  Authentication files
  347.  
  348.   5.1.  What goes into the /etc/ppp/pap-secrets file? Do you have a sam¡
  349.   ple? Or, my ISP requires that I use PAP. How do I do that?
  350.  
  351.   The PAP protocol is most often implemented as your user name and
  352.   password. You need to include the name of the remote system, your
  353.   account name, and the password. If the user on abbot wishes to call
  354.   costello, the entry would be similar to the following.
  355.  
  356.        #account   remote    password     IP address list
  357.        abbott     *         firstbase
  358.  
  359.   To use PAP authentication with the simplest case, you should also
  360.   include the ┤user┤ option to specify which of the pap-secrets file
  361.   entries is to be used. The option is explained in the pppd man page.
  362.   However, the simplest for this example is:
  363.  
  364.   user abbott
  365.  
  366.   If your system needs to use PAP to authenticate itself with an ISP who
  367.   requires that you use PAP then you need only do two things.
  368.  
  369.   1. Add the entry to the /etc/ppp/pap-secrets file which lists your
  370.      account name, an asterisk, and your password. If you have multiple
  371.      accounts at different providers, each with the same name, then you
  372.      would use the provider's name with in lieu of the asterisk and use
  373.      the remotename option with pppd to specify the provider's name.
  374.  
  375.   2. Use the 'user' option to pppd to specify the account name so that
  376.      pppd knows which entry in the /etc/ppp/pap-secrets file is to be
  377.      used.
  378.  
  379.   That's all that you should do. Do NOT attempt to use the +pap, or
  380.   +chap, or auth options. These will only cause your authentication
  381.   sequence to fail since they all force the ISP to authenticate itself
  382.   with you. Since most ISP's will not do this, and you have told pppd
  383.   that the ISP must by using these options, then pppd will not permit
  384.   the ISP to connect to you -- or, to put it in practical terms, you
  385.   connect to the ISP.
  386.  
  387.   5.2.  What goes into the /etc/ppp/chap-secrets file? Do you have a
  388.   sample?
  389.  
  390.   The most common problem is that people don't recognize that CHAP deals
  391.   with a pair of secrets. Both computers involved in the link must have
  392.   both secrets to work.
  393.  
  394.   For example, if abbot wants to talk to costello, then abbot┤s file
  395.   would have:
  396.  
  397.        #account   remote     password    IP address list
  398.        abbott     costello   firstbase
  399.        costello   abbott     who
  400.  
  401.   And costello┤s file would have:
  402.  
  403.        #account   remote     password    IP address list
  404.        abbott     costello   firstbase
  405.        costello   abbott     who
  406.  
  407.   (Yes, it is the same data.)
  408.  
  409.   The difference between abbott and costello would be the options that
  410.   are used with pppd. The abbott system would have
  411.  
  412.        name abbott remotename costello
  413.  
  414.   while the costello system has just the opposite of
  415.  
  416.   name costello remotename abbott
  417.  
  418.   6.  Construction problems
  419.  
  420.   6.1.  I get compile errors when I try to compile the kernel
  421.  
  422.   This usually comes from skipping the ┤make kernel┤ step in the
  423.   instructions. The ┤make kernel┤ is not a sequence telling you to build
  424.   the kernel, but the actual command to be entered. That is, issue the
  425.   command for ┤make┤ and build the target called ┤kernel┤.
  426.  
  427.   There are some problems with this logic however. If you are using
  428.   Slackware 3.0, there is a bug in the ┤rev┤ program with this package.
  429.   Before the kernel sequence may be patched properly, you must first
  430.   update the ┤rev┤ program from the file
  431.   <ftp://ftp.cdrom.com/pub/linux/slakware/a8/util.tgz>.
  432.  
  433.   It is very important that you do not attempt to replace any file which
  434.   this package does not replace itself. Do not attempt to force it to
  435.   replace the ppp.c driver if the ┤make kernel┤ does not wish to do
  436.   this. There is a date stamp within the files and the files will not be
  437.   replaced if you currently have a more current version of the driver
  438.   already in the kernel.
  439.  
  440.   Once the pieces have been installed, please rebuild the kernel at this
  441.   time. Do this even if you have previously constructed the kernel to
  442.   support PPP. The driver shipped with the 1.2 and early 1.3 kernels is
  443.   not compatible with the 2.2 version of pppd.
  444.  
  445.   Once you have rebuilt the kernel then you may resume to build the pppd
  446.   process, chat, and pppstats.
  447.  
  448.   7.  Problems running pppd
  449.  
  450.   7.1.  pppd says that version 0.0.0 is out of date
  451.  
  452.   There are several reasons which will generate this message.
  453.  
  454.   ╖  You are attempting to run the 2.1 version of pppd with the 2.2
  455.      kernel drivers.
  456.  
  457.      This may occur if you are using the 2.x series kernels and did not
  458.      see the notice in the Changes file that you need the 2.2.0 version
  459.      of pppd.
  460.  
  461.      It may also occur if you are using a script which has a fixed
  462.      location for the pppd process. The 2.1 version of pppd was stored
  463.      in the default location of /usr/lib/ppp/pppd. The 2.2 version moved
  464.      to the more ┤standard┤ location of /usr/sbin/pppd. If you have a
  465.      script which is using the /usr/lib/pppd then it is probable that
  466.      you are actually using the wrong version of pppd.
  467.  
  468.      This may also require that you re-compile front end programs such
  469.      as dip or diald. These programs have the location of pppd embedded
  470.      within them.
  471.  
  472.   ╖  You are attempting to run the pppd process from an account other
  473.      than the root user and the process is not secured setuid to root.
  474.  
  475.      What happens is that the pppd process attempts to issue a request
  476.      to find the version of the driver in the kernel. This request is
  477.      only acceptable if the calling process is the root account. Since
  478.      you are not running as the root user and have not secured the
  479.      program to be setuid to root, then the request fails. Since the
  480.      request to fetch the driver version fails, the default value is
  481.      0.0.0. This is the wrong version and the message is generated.
  482.  
  483.      Additional information is in the next question.
  484.  
  485.   7.2.  pppd says that that the kernel is not configured for PPP. I know
  486.   that I enabled the option and built the kernel.
  487.  
  488.   Make sure that you did rebuild the kernel and that you are running it.
  489.  
  490.   Make sure that you don't have an old copy of pppd on your disk and you
  491.   are running that version. The previous version of pppd was stored on
  492.   /usr/lib/ppp. Many people objected to this location. The 2.2 code has
  493.   moved the pppd, chat, and pppstats to the /usr/sbin directory. If your
  494.   scripts still reference /usr/lib/ppp then you will probably run the
  495.   old code.
  496.  
  497.   7.3.  pppd wont run unless you are root
  498.  
  499.   The pppd process needs to make changes to the networking system and
  500.   this can only be done if you are the root user. If you wish to run
  501.   pppd from other than the root user then the pppd program needs to be
  502.   secured ┤suid to root┤.
  503.  
  504.        chown root /usr/sbin/pppd
  505.        chmod 4755 /usr/sbin/pppd
  506.  
  507.   If you wish to control the pppd access to a select group of people,
  508.   then make the pppd process owned by the group and do not permit all
  509.   others to run the program.
  510.  
  511.   7.4.  unable to create pid file: no such file or directory
  512.  
  513.   You need to create the directory /var/run.  On earlier Slackware
  514.   distributions, this was a symbolic link to the /etc directory.
  515.  
  516.   This is a warning. The PPP software will work normally in spite of
  517.   this message. However, the ppp-off script depends upon this file. It
  518.   is a good idea to create the directory or make the link to the
  519.   appropriate location.
  520.  
  521.   The posix header, paths.h, defines the location for the pid file under
  522.   the name ┤_VAR_RUN┤.  If you wish to use a different directory for PPP
  523.   and others, change the value for this define and rebuild the software.
  524.  
  525.   7.5.  /etc/ppp/options: no such file or directory
  526.  
  527.   You must create the directory /etc/ppp and have a file called
  528.   ┤options┤ in that directory. It needs to be readable by the pppd
  529.   process (root).
  530.  
  531.   The file may be empty. To make an empty file use the ┤touch┤ command.
  532.  
  533.   See the pppd man page, pppd.8, for a description of this file.
  534.  
  535.   7.6.  Could not determine local IP address
  536.  
  537.   This happens with many configurations of the Telebit Netblazer. The
  538.   problem is not the terminal server, but the site which has not
  539.   configured the terminal server with a set of IP addresses.
  540.  
  541.   The Netblazer does not have your IP address. You do not have your IP
  542.   address. The link will not work unless both IP addresses are known.
  543.  
  544.   ╖  The Netblazer does not have your IP address and you do not have
  545.      your IP address.
  546.  
  547.   ╖  The Netblazer does know its IP address and you do not have its IP
  548.      address.
  549.  
  550.   The link will not work unless both IP addresses are known.
  551.  
  552.   You must tell the Netblazer the IP addresses to be used. Use the local
  553.   IP address and the remote IP address as a parameter to the pppd
  554.   process.
  555.  
  556.   Use the pppd option format of:
  557.  
  558.   local_ip:remote_ip
  559.  
  560.   (That is the local IP address, a colon, and the remote IP address.)
  561.  
  562.   7.7.  Could not determine remote IP address
  563.  
  564.   See the previous answer.
  565.  
  566.   7.8.  I keep getting the message to the effect that the magic number
  567.   is always NAKed. The system will not connect.
  568.  
  569.   There is a one in over four billion chance that the two systems have
  570.   chosen the same magic number. If you get a continual failure about the
  571.   magic number, the chances that this is a fluke will geometrically
  572.   reduce.
  573.  
  574.   The two most common reasons for this failure are:
  575.  
  576.   ╖  The remote PPP software is not running when you think it is. Is the
  577.      remote system configured to run PPP? Did you use the proper
  578.      account? Did you use the proper password for this account? If you
  579.      are using a scripting tool such as chat, then did you miss a prompt
  580.      and are really talking to the logon process and not the PPP code?
  581.      Is the PPP process in the expected location? Is the privileges
  582.      suitable so that you may run it?
  583.  
  584.      This would indicate that the shell is doing the local echo of the
  585.      data. This is the more common reason.
  586.  
  587.   ╖  The modem has disconnected immediately upon making the connection
  588.      and logging you on to the remote. Most modems are configured to
  589.      echo the data sent to them and you are seeing the local echo from
  590.      the modem.
  591.  
  592.   In either case, the Linux system is sending data to the remote which
  593.   is being fed immediately back into the serial receiver. This is not an
  594.   acceptable condition. You have what is called a ┤loop┤.
  595.  
  596.   7.9.  protocol reject for protocol fffb
  597.  
  598.   This usually occurs when you are trying to connect to a Xyplex
  599.   terminal server. Version 5.1 of the Xyplex terminal server software,
  600.   according to Xyplex, has numerous problems with PPP. It is strongly
  601.   recommended that you update the Xyplex software to at least version
  602.   5.3.
  603.  
  604.   If you must use Xyplex version 5.1, then use the pppd option ┤vj-max-
  605.   slots 3┤ to limit the number of slots to three. The problem on the
  606.   Xyplex server is that it will accept the request for the default 16
  607.   slots, but fail to operate beyond the third slot. It should have
  608.   return a NAK frame with the limit, but it does not.
  609.  
  610.   Alternately, you can disable the Van Jacobson header compression with
  611.   the option ┤-vj┤.
  612.  
  613.   7.10.  The PPP software connects, sends quite a few frames, but still
  614.   does not seem to connect. Why is that?
  615.  
  616.   Linux does not support RPI modems. If your modem is RPI then you will
  617.   have to find a different modem. This is not likely to change in the
  618.   future given the statements made by Rockwell┤s management.
  619.  
  620.   Examine the system log when you use the ┤debug┤ option. (You will need
  621.   the system log data anyway if you are going to ask for help.) If the
  622.   trace shows that it is sending the LCP-request frame over and over
  623.   again and the id number is not incrementing then you are not
  624.   exchanging frames with the remote PPP software.
  625.  
  626.   The common reasons for this for this are:
  627.  
  628.   ╖  You don't have the PPP software running on the other end.  You are
  629.      sending the PPP frames to some other program which is probably
  630.      saying ┤What is this #$%percent;^ ?┤
  631.  
  632.   ╖  Please make sure that you have the PPP software started on the
  633.      other end before you enter the PPP protocol sequence. Try to use a
  634.      normal modem program and go through the logon sequence that you
  635.      would normally do. Do you see the PPP frames being sent to you?
  636.  
  637.      The PPP frames are fairly distinctive. They will be about 40
  638.      characters in length and contain several { characters. They should
  639.      not have a carriage return character after them and are sent out in
  640.      a burst with a pause between the bursts.
  641.  
  642.   ╖  The line is not ┤eight bit clean┤. This means that you need to have
  643.      eight data bits, no parity, and one stop bit.  The PPP link
  644.      absolutely requires eight data bits.
  645.  
  646.      The pppd software will automatically put the line into eight data
  647.      bits, no parity, and one stop bit. The remote must match this
  648.      configuration or framing and parity errors may occur.
  649.  
  650.      PPP will escape characters. It is not possible for it to escape
  651.      bits as kermit does. PPP will not work with a seven bit
  652.      communications link.
  653.   ╖  The remote is configured to require authentication such as PAP or
  654.      CHAP. You have not configured the local system to use this feature.
  655.      Therefore, the remote is discarding all of your frames until it
  656.      sees a valid authentication frame from you. Since you are not
  657.      configured to generate the frames, the IPCP frames which you send
  658.      are being ignored.
  659.  
  660.      In this case, either configure the remote to not expect
  661.      authentication or configure the local system to do authentication
  662.      and supply the proper secrets.
  663.  
  664.      Examine the receipt of the LCP configure frame. If it shows an
  665.      ┤auth┤ type, then the remote is configured for authentication.
  666.  
  667.   7.11.  The /etc/ppp/ip-up scripts won't work.
  668.  
  669.   The pppd process launches the program at the location /etc/ppp/ip-up
  670.   when the IP layer goes up. It gives it parameters which define the
  671.   line status. Such things include the device name, communications
  672.   speed, and IP addresses.
  673.  
  674.   However, what may not be clear is that it treats this file as a
  675.   program. It is not a script. The program is started by using the
  676.   exec() function of Linux.
  677.  
  678.   What this means is that if you wish to use a script for these
  679.   programs, then you must do two things.
  680.  
  681.   ╖  You need to have the file marked as executable with chmod.  The
  682.      proper mode for the file should be mode 100. Mode 500 is acceptable
  683.      if you wish to read the file and mode 700 is acceptable if you wish
  684.      to write to the file. The file should be owned by the root user.
  685.  
  686.   ╖  The file must have as the first line the sequence:
  687.  
  688.        #!/bin/sh
  689.  
  690.   The # character must be in the first character position of the very
  691.   first line of the file. The interpreter program, /bin/sh in this case,
  692.   may be any program which is expected to run the script. Most people
  693.   will use the Bourne shell for this purpose.  It is commonly stored in
  694.   the location /bin/sh. Other commonly used interpreters are perl and
  695.   csh. What is important is that the first two characters of the file be
  696.   the # and ! characters respectively.
  697.  
  698.   7.12.  I can't execute /etc/ppp/ip-up: Exec format error
  699.  
  700.   Please refer to the answer to the previous question.
  701.  
  702.   7.13.  How do I use PPP with a system which uses dynamic IP assign¡
  703.   ments? It assigns a different IP address to me with each call.
  704.  
  705.   The assignment of the local IP address is a function of the options
  706.   given to pppd and the IPCP protocol. You should use the ┤magic┤ IP
  707.   address of 0.0.0.0 if you must specify the local IP address. Most
  708.   people simply leave the local IP address out of the option list.
  709.  
  710.   The other option which is closely tied to this is called
  711.   ┤noipdefault┤. The noipdefault option instructs the pppd process to
  712.   not attempt to guess the local IP address from your hostname and the
  713.   IP addresses in the /etc/hosts file. Most people use this option when
  714.   the IP address is dynamically assigned. However, this option does not
  715.   mean ┤use dynamic IP addresses┤. The use of dynamic IP addresses is
  716.   automatic when the local IP address is not given.
  717.  
  718.   7.14.  How do I know what IP address was given to me when it is dynam¡
  719.   ically assigned?
  720.  
  721.   Use the /etc/ppp/ip-up hook. The local IP address is the fourth
  722.   parameter. This will be executed when pppd knows the IP address for
  723.   the local system. The fifth parameter is the remote IP address if you
  724.   should wish to know this value as well.
  725.  
  726.   If you are curious about the value assigned then you may use the
  727.   ifconfig program to display the current settings. It will show you the
  728.   current values for both the local IP address and the IP address
  729.   assigned to the remote under the P-t-P heading.
  730.  
  731.   7.15.  I just upgraded my system and now pppd reports that the option
  732.   -v is not supported. Why?
  733.  
  734.   Did you just upgrade to Linux ┤96 from Walnut Creek CDROM? It is also
  735.   known as the Slackware 3.1 package. The problem is that the pppd
  736.   executable in the /usr/sbin directory was renamed in that distribution
  737.   and a script was installed in its place. This script was to find the
  738.   version of the operating system and then either run the 2.2 or 2.1
  739.   version of pppd.
  740.  
  741.   Unfortunately, the script does not work properly with the pppd process
  742.   when you use the connect option.
  743.  
  744.   So, to correct the problem, remove the script and replace it with the
  745.   proper pppd executable.
  746.  
  747.   7.16.  The pppd process reports that it won't replace the existing
  748.   default route. How do I get it to use the default route?
  749.  
  750.   This is another Slackware ┤enhancement┤. The Slackware package added a
  751.   default route to the ethernet controller during the startup sequence
  752.   in the /etc/rc.init1 script. This statement is:
  753.  
  754.        /usr/bin/route add default dev eth0
  755.  
  756.   The problem is that the statement has absolutely no functionality with
  757.   the proper routing. A default route is designed to be sent to a
  758.   router, not just dumped on the ethernet controller.
  759.  
  760.   The pppd process is configured to not replace a default route if a
  761.   default route is currently used before it starts. It does this for
  762.   security reasons. Since Slackware uses the default route incorrectly,
  763.   the pppd process is unable to install a new default route.
  764.  
  765.   To correct the problem you need to replace the default route statement
  766.   in the /etc/rc.init1 script with a proper network route. See the
  767.   Net-2-HOWTO for the instructions on what should be used.
  768.   7.17.  When I run pppd it says that support is not in the kernel.
  769.  
  770.   There are a few reasons for this to be generated.
  771.  
  772.   ╖  You are running the pppd process from an account other than the
  773.      root account and the pppd process is not secured as being setuid to
  774.      root. To correct for this, issue the command ┤chmod 4555
  775.      /usr/sbin/pppd┤ while you are signed on as the root user.
  776.  
  777.   ╖  You are using modules and have not loaded the ppp.o module.  This
  778.      may require that you first load the slhc.o module to provide for
  779.      the VJ header compression logic.
  780.  
  781.   ╖  You are not running the proper pppd process. If you are using the
  782.      2.x series kernels then you must use at least the 2.2.0 version of
  783.      the pppd process. The 2.1 version is not supported with the 2.x
  784.      series kernels.
  785.  
  786.   ╖  Likewise, if you are running the 1.2.13 kernel and have built the
  787.      2.1 version of the drivers into the kernel then you must run the
  788.      2.1.2d version of pppd.
  789.  
  790.   ╖  The pppd process as moved from /usr/lib/ppp/pppd used in the 2.1
  791.      version of the pppd process, to the ┤new┤ home of /usr/sbin/pppd.
  792.      It is expected that all future versions of pppd will be stored in
  793.      this location. The change was in response to the FSSTND document
  794.      for Linux. This change may require that you rebuild the dip or
  795.      diald programs to reflect the new location of pppd.
  796.  
  797.   7.18.  How do I use PPP and a local network at the same time?
  798.  
  799.   Break the problem into two parts. The first part is to get the
  800.   ethernet network working properly. See the question about the default
  801.   route concerning a problem with the Slackware ┤96 package.
  802.  
  803.   Once you have the ethernet network working, then get the PPP link
  804.   between the one system running pppd and the internet provider working.
  805.   Do not concern yourself with the local network at this time. Just get
  806.   the PPP link working.
  807.  
  808.   Then, once you have the two pieces working, you can get the two of
  809.   them working together. Use either a firewall system on the computer
  810.   with the PPP link or use the IP masquerading software.
  811.  
  812.   For more instructions on the firewall code, see the Firewall-HOWTO.
  813.  
  814.   For more instructions on the masquerading code, see the Net-2-HOWTO.
  815.  
  816.   7.19.  Can I use the same local IP address for each line of a PPP
  817.   server?
  818.  
  819.   Yes, you may use the same IP address for all of the local addresses on
  820.   each of your PPP devices. You may even use the same IP address as one
  821.   of your ethernet or token ring controllers.
  822.  
  823.   However, you must use a unique IP address for each of your remote IP
  824.   addresses.
  825.  
  826.   The routing for a point-to-point link is to the remote IP address, not
  827.   to the local IP address.
  828.  
  829.   7.20.  How do I find my local IP address??
  830.  
  831.   The local IP address is one of the parameters given to the
  832.   /etc/ppp/ip-up program. It is the 4th (counting from the first)
  833.   argument. The easiest method is to simply save the value at the time
  834.   that the ip-up program is executed.
  835.  
  836.   If you don't wish to do this then you can use the ifconfig program to
  837.   display the parameters for the specific PPP device. One of the values
  838.   is the IP address.
  839.  
  840.   If you don't wish to do this then you can obtain the information from
  841.   the system log. This is the least desirable method as parsing the
  842.   standard log file is much more complicated than parsing the output
  843.   from ifconfig.
  844.  
  845.   The easiest solution is to simply store the value during the ip-up
  846.   program in some specific file which you may access at a later date.
  847.  
  848.   7.21.  I can't connect to the merit network.
  849.  
  850.   Some users of the merit network have indicated that it needs PAP. Did
  851.   you try PAP authentication?
  852.  
  853.   8.  DIP
  854.  
  855.   8.1.  DIP does not have support for PPP┤s mode
  856.  
  857.   The current version of dip-uri supports PPP in that it will execute
  858.   the pppd process when you execute ┤mode PPP┤.  However, there are many
  859.   options which are needed for the proper operation of pppd. Since dip
  860.   does not pass these to the program, they must be stored in the
  861.   /etc/ppp/options file.
  862.  
  863.   The dip program controls the establishment of the SLIP link. It
  864.   controls the SLIP link with the aid of slattach, ifconfig, and route.
  865.   These programs may be used to establish a SLIP link. They are not
  866.   useful for the establishment of a PPP link.
  867.  
  868.   The dip program may be used to dial the telephone and start the PPP
  869.   software on the remote system. It is best used in this mode as the
  870.   parameter to the ┤connect┤ option. However, you have the option to use
  871.   dip to control the link. It is not important how pppd be executed to
  872.   run the PPP link. It is only important that it be executed as it is a
  873.   mandatory program for the PPP protocol.
  874.  
  875.   While this is not a FAQ for dip, there is a common problem with dip
  876.   and pppd. The dip process has the absolute pathname to the pppd
  877.   process embedded within it. Until recently, the location for pppd was
  878.   /usr/lib/ppp/pppd. It has moved to the /usr/sbin/pppd location. So, if
  879.   you are unable to get dip to start pppd then check the pathnames in
  880.   dip.
  881.  
  882.   Additional information about the dip process is in the Net-2-HOWTO
  883.   document.
  884.  
  885.   8.2.  DIP dies immediately when I do ┤mode ppp┤
  886.  
  887.   The location of the pppd program file is stored within dip.
  888.  
  889.   The 2.1 version of pppd was stored in /usr/lib/ppp/pppd. The 2.2
  890.   version has moved to the more ┤standard┤ location of /usr/sbin/pppd.
  891.   That is well and good. However, the problem is that now dip has the
  892.   wrong location for pppd. When it attempts to run the pppd process as
  893.   you do ┤mode ppp┤, the dip program attempts to run the pppd program
  894.   and it can┤t because it isn┤ there.
  895.  
  896.   You can temporarily make a symbolic link from the /usr/lib/ppp/pppd
  897.   location to the /usr/sbin/pppd file. However, a better solution is to
  898.   rebuild the dip program so that it knows that pppd is at
  899.   /usr/sbin/pppd.
  900.  
  901.   9.  Process termination
  902.  
  903.   9.1.  Is there a ┤dip -k┤ for PPP?
  904.  
  905.   No. There is no ┤dip -k┤.
  906.  
  907.   However, if you run dip -k, and have properly built the dip process so
  908.   that it knows that the lock file directory is /var/locks, then you may
  909.   use the command to terminate the pppd process. The reason that this
  910.   works is that dip will terminate any process which owns the tty
  911.   device, not just the one which it started. This may be a security
  912.   concern for some (perhaps many) people. However, it is just the way
  913.   that the program works. If you are concerned about dip doing this
  914.   action then either secure dip so that it is executable by only
  915.   specific people or remove it from your system and use slattach, route,
  916.   ifconfig, and arp to do the dial-in functions of SLIP.
  917.  
  918.   In the chat directory, there is a ┤PPP-off┤ script. This will stop the
  919.   PPP link in the same manner as the ┤dip -k┤.
  920.  
  921.   I have included it below. (Cut it out. Store it in its own file.
  922.  
  923.   Make the file executable with chmod.)
  924.  
  925.        #!/bin/sh
  926.        DEVICE=ppp0
  927.        #
  928.        # If the ppp0 pid file is present then the program is running. Stop it.
  929.        if [ -r /var/run/$DEVICE.pid ]; then
  930.                kill -INT `head -1 /var/run/$DEVICE.pid`
  931.        #
  932.        # If the kill did not work then there is no process running for this
  933.        # pid. It may also mean that the lock file will be left. You may wish
  934.        # to delete the lock file at the same time.
  935.                if [ ! "$?" = "0" ]; then
  936.                        rm -f /var/run/$DEVICE.pid
  937.                        echo "ERROR: Removed stale pid file"
  938.                        exit 1
  939.                fi
  940.        #
  941.        # Success. Let pppd clean up its own junk.
  942.                echo "PPP link to $DEVICE terminated."
  943.                exit 0
  944.        fi
  945.        #
  946.        # The PPP process is not running for ppp0
  947.        echo "ERROR: PPP link is not active on $DEVICE"
  948.        exit 1
  949.  
  950.   In addition, you may still use ┤dip -k┤ to terminate the pppd link.
  951.   The reason is that dip does not care if it started the program which
  952.   is using the serial device. It sends a SIGTERM to any process which
  953.   owns the serial device. (This is not a great idea, however, that is
  954.   the way that dip works.)
  955.  
  956.   9.2.  PPP does not hangup the modem when it terminates
  957.  
  958.   There are several reasons for this.
  959.  
  960.   ╖  Did you use the pppd ┤modem┤ parameter? This parameter controls
  961.      whether or not the pppd process is to control and honor the signals
  962.      reflecting the modem status. This parameter is explained in the man
  963.      page for pppd.
  964.  
  965.   ╖  Do you have the modem presenting the DCD signal and honoring DTR?
  966.      The Hayes sequence for this is usually ┤&C1┤.  If you reset the
  967.      modem during the connection sequence with ┤ATZ┤ then ensure that
  968.      your modem is configured correctly.
  969.  
  970.   ╖  The DTR signal is generated by the computer and instructs the modem
  971.      to disconnect. Hayes sequence for this is usually ┤&D1┤ or ┤&D2┤
  972.      with ┤&D2┤ being the preferred setting for PPP. Many manufacturers
  973.      will ignore the DTR condition in their ┤factory defaults┤ setting.
  974.  
  975.   ╖  Did you use a cheap cable which does not pass the DCD signal?
  976.      Macintosh ┤Classic┤ cables are notorious for this problem. The
  977.      Macintosh Classic does not use this signal.
  978.  
  979.   ╖  For dial-in connections, did you exec the pppd process properly?
  980.      The pppd process should be ┤exec┤ed from the script rather than
  981.      simply executed. If you attempt to simply run the pppd process then
  982.      it will be the shell which will receive the SIGHUP hangup signal
  983.      and not the pppd process.
  984.  
  985.      The ┤shell┤ script should have a format similar to the following:
  986.  
  987.        #!/bin/sh
  988.        exec pppd -detach modem ...
  989.  
  990.   ╖  The use of dip and diald has, on occasion, interfered with the
  991.      ability of pppd to sense the loss of the carrier. In this case, you
  992.      should use the lcp-echo-request and lcp-echo-failure options to
  993.      detect the loss of the connection in-band.
  994.  
  995.      [Ed: Sorry for the technical terminology. ┤in-band┤ refers to the
  996.      use of the protocol itself to detect a condition. It is similar to
  997.      using XON and XOFF as flow control characters. These characters are
  998.      sent along with the data and perform the flow control operations.
  999.      The ┤in-band┤ is the opposite of ┤out-of-band┤. They both refer to
  1000.      ┤band┤ as being short for ┤bandwidth┤. When something is ┤in-band┤,
  1001.      it is within the bandwidth of the signals. That is, it takes some
  1002.      of the bandwidth to perform the additional function. ┤out-of-band┤
  1003.      would be the equivalent of using the RTS and CTS signal lines to do
  1004.      flow control. These do not take a character. These are not sent
  1005.      with the data. The signals are just additional lines that happen to
  1006.      do the required function.]
  1007.  
  1008.   10.  Data Transfer related issues
  1009.  
  1010.   10.1.  The ftp transfers seems to die when I do a ┤put┤ operation.
  1011.   They will work correctly if I ┤get┤ a file. Why?
  1012.  
  1013.   Do you have the flow control enabled?
  1014.  
  1015.   Flow control is set by the pppd option crtscts for RTS/CTS and xonxoff
  1016.   for XON/XOFF. If you don't enable the flow control then you will
  1017.   probably overrun the modem┤s buffers and this will prove to be
  1018.   disastrous with vj header compression.
  1019.  
  1020.   It is important that the modem, not just the computer, have the proper
  1021.   setting for flow control. If the modem does not do flow control and
  1022.   the computer is expecting that the modem will tell it when the buffer
  1023.   overruns, then the buffer will overrun because the modem is not
  1024.   configured to tell the computer that it is full.
  1025.  
  1026.   Likewise if the modem is configured to use RTS/CTS and your computer
  1027.   is configured to use XON/XOFF then you will not be able to recognize
  1028.   the modem┤s request to suspend transmission.
  1029.  
  1030.   The modern modems are configured with the use of a command code to do
  1031.   flow control. Check in your manual for the appropriate command code
  1032.   and include it along with the modem initialization.
  1033.  
  1034.   Do not fall into the "well, the modem does this by default so I don't
  1035.   have to configure the modem before I use it." trap. Do the
  1036.   configuration. Do it explicitly. If the manual says that &H1 sets RTS
  1037.   and CTS flow control (what is also commonly called ┤hardware┤ flow
  1038.   control) then send the modem AT&H1 to set the flow control. Do it
  1039.   before you dial the number. Don't expect that just giving the modem
  1040.   ATZ will enable the flow control properly.
  1041.  
  1042.   10.2.  How do I use XON/XOFF for flow control?
  1043.  
  1044.   The better flow control is CTS/RTS. However, if you can not do the
  1045.   hardware flow control with the signals CTS and RTS, then use XON/XOFF.
  1046.   The following three steps need to be performed.
  1047.  
  1048.   ╖  You need to specify the pppd option xonxoff. This tells the pppd
  1049.      process to configure the serial device for XON/XOFF flow control
  1050.      and to load the two characters into the tty driver.
  1051.  
  1052.   ╖  You need to specify the XON and XOFF characters in the pppd
  1053.      parameter asyncmap. This tells the remote system that is should
  1054.      quote the XON and XOFF characters when it wishes to send them to
  1055.      you. It is normally specified as the pppd parameter ┤asyncmap
  1056.      a0000┤.
  1057.  
  1058.   ╖  Of course, don't forget to tell the modem to use XON/XOFF flow
  1059.      control. My ZyXEL modem uses a sequence ┤&R1&H4┤ to do this.
  1060.  
  1061.   10.3.  The modem seems to always connect at a strange rate. When I use
  1062.   minicom, the modem will always use 14400. However, PPP is using 9600
  1063.   or 7200 or even 2400. How do I fix this?
  1064.  
  1065.   Put the desired rate as an option to the pppd process.  If you don't
  1066.   put the rate, then pppd process will use whatever rate is set
  1067.   currently at the time. Not all programs will restore all of the
  1068.   parameters to the previous settings properly upon exit.  This may lead
  1069.   to strange rates configured for the serial device.
  1070.   Linux does not support modems which use the RPI (Rockwell Protocol
  1071.   Interface) proprietary specification. Given the proprietary nature of
  1072.   the specification (even if you signed a NDA Rockwell will not release
  1073.   the code needed to interface to the modem) it is extremely unlikely
  1074.   that Linux will ever support this modem. The only solution, should you
  1075.   have a RPI modem, is to take it back to the dealer and get one which
  1076.   does not use RPI.
  1077.  
  1078.   Some of the catch phrases to avoid are modems which are marked as
  1079.   having error correction in software, ┤windows┤ compatible, or
  1080.   ┤requiring a special driver┤ for full operation. These usually
  1081.   indicate that the modem uses RPI.
  1082.  
  1083.   10.4.  The ftp transfers seems to be very slow when I do a ┤get┤ oper¡
  1084.   ation. The ┤put┤ operation is much faster. Why?
  1085.  
  1086.   Did you specify the option:
  1087.  
  1088.   asyncmap 0
  1089.  
  1090.   when you ran pppd? If you forgot the option, the peer must quote
  1091.   (double) all of the control characters in the range from 00 to 1F
  1092.   (hex). This will result in a statistical loss of about 12.5% in speed
  1093.   for all of the data which you receive.
  1094.  
  1095.   Did you configure the remote system? If so, did you forget flow
  1096.   control on its modem?
  1097.  
  1098.   10.5.  The proxyarp function fails to find the hardware address.
  1099.  
  1100.   Use the ppp-2.1.2d.tar.gz package. The pppd process was erroneously
  1101.   compiled with the 1.1.8 kernel and it used Net-3 rather than Net-2
  1102.   definitions.
  1103.  
  1104.   Additionally, you should refer to the proxy-ARP mini-HOWTO about the
  1105.   requirements for using proxy-ARP.
  1106.  
  1107.   The 2.1 package had a limit of 64 network devices.  At the the that
  1108.   the proxyarp function was written, 64 seemed to be a very likely limit
  1109.   as most people had one or two ethernet controllers. This is no longer
  1110.   the case when we consider that some systems routinely have 128 network
  1111.   devices.
  1112.  
  1113.   The 2.2 package has raised the limit to 5000 network devices. That
  1114.   limit is excessive. However, it means that in all practial purposes,
  1115.   there is no limit. It is a compile-time define in the sys-linux.c
  1116.   module.
  1117.  
  1118.   11.  Routing and other problems
  1119.  
  1120.   11.1.  My route to the remote keeps disappearing! It last for about 3
  1121.   minutes and then the route just goes away. Help!
  1122.  
  1123.   This is not a question for PPP.
  1124.  
  1125.   Hint: DON'T RUN routed!
  1126.  
  1127.   If you need to send RIP frames to the peer for its routing purposes
  1128.   then use the bcastd program. The bcastd program is on sunsite.unc.edu.
  1129.  
  1130.   11.2.  I would like to attach my other computers on my network to the
  1131.   Internet through my PPP connection. I have only the one IP address
  1132.   which is assigned to me from my service provider. (It may even have
  1133.   been dynamically assigned.) How may I do this?
  1134.  
  1135.   You may not. At least, you can't do it in the manner that you would
  1136.   normally want to do it. The problem is that your provider would not
  1137.   know about the IP addresses of your local network and therefore wont
  1138.   route the frames to your local system.
  1139.  
  1140.   There are other solutions, however.
  1141.  
  1142.   ╖  You may telnet to your one computer running pppd and then use
  1143.      telnet or ftp to reach out to the rest of the Internet. This is not
  1144.      really much better then just using the computer directly, but it
  1145.      does work for simple things.
  1146.  
  1147.   ╖  You may run a 2.x series kernel and use the ┤IP Masquerade┤ option.
  1148.      For instructions on how to use this facility you should refer to
  1149.      the Net-2-HOWTO document.
  1150.  
  1151.   ╖  You may run the socks program on your PPP system.  This will
  1152.      perform the same facility as the IP Masquerade but it will take
  1153.      modified clients or a replacement run-time library. The advantage
  1154.      is that the socks program has been around for some years and many
  1155.      clients will understand the concept of a ┤proxy┤ server which is
  1156.      needed to work with socks.
  1157.  
  1158.   11.3.  I can reach the remote server, but I can not get anywhere else.
  1159.  
  1160.   Did you forget the ┤defaultroute┤ parameter to pppd? This parameter
  1161.   adds a default route into your routing system so that frames to all
  1162.   other IP addresses will be sent to the PPP device.
  1163.  
  1164.   The PPP software will not replace the default route if you have one
  1165.   already set when you run pppd. This is done to prevent people from
  1166.   destroying their default route to the ethernet routers by accident. A
  1167.   warning message is written to the system log if the defaultroute
  1168.   parameter is not performed for this reason.
  1169.  
  1170.   11.4.  I have a default route and I still can't get anywhere else! Now
  1171.   what?
  1172.  
  1173.   The problem then is not with the local Linux system.  It most likely
  1174.   is routing problem on the remote end.
  1175.  
  1176.   The remote system is not configured for ┤IP forwarding┤. It is an RFC
  1177.   requirement that this option NOT be enabled by default. You must
  1178.   enable the option.  For Linux systems, you will need to build the
  1179.   kernel and specify that you want IP forwarding/gatewaying.
  1180.  
  1181.   The remote computers need a route back to you just as you need a route
  1182.   to them. This may be accomplished by one of four methods. Each has
  1183.   advantages and limitations. You need to do one and only one of these.
  1184.  
  1185.   ╖  Use a host route. At each host on the remote system, add a host
  1186.      route to your Linux IP address with the gateway being the terminal
  1187.      server that you use for your local access. This will work if you
  1188.      have a small number of host systems and a simple network without
  1189.      bridges, routers, gateways, etc.
  1190.   ╖  Use a network route. Subdivide the remote IP addresses so that your
  1191.      local Linux IP address and the remote terminal server address and
  1192.      the remote terminal server┤s ethernet address is on the same IP
  1193.      network. This will work if you have the IP addresses to spare. It
  1194.      will work very well if you have a Class-B IP network and can afford
  1195.      to put the all of the remote addresses on the same IP network. Then
  1196.      add a network route on each of the gateways and routers so that any
  1197.      address of the remote network is sent to the terminal server. Most
  1198.      configurations have many hosts but few routers.  (At sii.com, we
  1199.      have over 300 active host systems with only 3 routers.)
  1200.  
  1201.   ╖  Use gated on all of the gateways and on the terminal server. This
  1202.      will cause the terminal server to broadcast to the gateways that it
  1203.      can accept the frames for your IP address. Since the hosts will
  1204.      have a default route to one of the gateways, the gateways will
  1205.      generate the ICMP re-direct frame and the specific host will
  1206.      automatically add its host route.
  1207.  
  1208.   ╖  Use proxy ARP on the terminal server. This will only work if your
  1209.      remote IP address is in the same IP domain as one of the domains
  1210.      for the network cards.
  1211.  
  1212.   There is no clear solution. You must choose one of these.
  1213.  
  1214.   If your remote router requires to receive RIP frames in order to
  1215.   update the route to your system then you should use the bcastd program
  1216.   on sunsite.unc.edu.  This will generate the RIP frames without
  1217.   actually running gated.
  1218.  
  1219.   11.5.  I can not ping my local IP address
  1220.  
  1221.   You are not able to do this because you wont normally have a route to
  1222.   the address. This is the normal operating environment.
  1223.  
  1224.   If you wish to ping your own system then use the loopback address of
  1225.   127.0.0.1.
  1226.  
  1227.   You may be able to ping the remote address. However, some terminal
  1228.   servers may not allow this as the address may be ┤phony┤ to them. It
  1229.   depends upon their environment.
  1230.  
  1231.   In general, don't try to ping either address. Choose a third address
  1232.   which is well known to be available on the remote network such as one
  1233.   of your name server IP address.
  1234.  
  1235.   While the PPP software will not perform this task, you may add the
  1236.   route table entry yourself once the link has been established. The
  1237.   syntax for the route statement is:
  1238.  
  1239.        route add -host 192.187.163.32 lo
  1240.  
  1241.   where the local IP address is represented as 192.187.163.32 in this
  1242.   example. This will tell the network software to route all frames
  1243.   destined to your local IP address to the loopback adapter.  Once you
  1244.   add the appropriate route to the local IP address then you may use
  1245.   this address as the target to IP frames.
  1246.  
  1247.   You will be responsible for deleting the route when the link goes
  1248.   down.
  1249.  
  1250.   12.  Interactions with other PPP implementations
  1251.  
  1252.   12.1.  How do I connect to a Windows NT server?
  1253.  
  1254.   This question is becomming one of the most frequently asked questions
  1255.   about PPP. The Microsoft Windows NT platform is making substantial
  1256.   inroads into the corporate and commerial service organizations and the
  1257.   use of it's RAS services is seen as one of the reasons. It is just so
  1258.   easy to fill a few items in a form and have your Windows 95 system
  1259.   connect to the Windows NT platform that it is extremely tempting for
  1260.   many companies to offer Windows NT as their method of connection to
  1261.   either the corporate intranet or the Internet.
  1262.  
  1263.   Yet, there are some difficulties with the use of Linux PPP and
  1264.   Microsoft Windows NT. There are a few different things with Windows NT
  1265.   as opposed to a UNIX platform.
  1266.  
  1267.   There is no special script for connecting to Windows NT servers. If
  1268.   you are using chat (a UUCP expect-reply scripting tool), the script is
  1269.   nothing more than:
  1270.  
  1271.        chat "" ATDT5551212 CONNECT
  1272.  
  1273.   since it only needs to dial the Windows NT server and get the
  1274.   telephone to return a connected status. You can embelish it to look
  1275.   for things such as BUSY or VOICE or other errors from the modem, but
  1276.   those are not required. The only thing is to not expect "login:" or
  1277.   any other form of textual login sequence. Also, Windows NT server is
  1278.   ┤quiet┤. It does not send anything until you do. It will just answer
  1279.   the telephone and then wait.
  1280.  
  1281.   There is nothing special about using PAP or MSCHAP with Windows NT and
  1282.   Linux PPP. The Linux PPP process supports the MSCHAP protocol if you
  1283.   apply the patches which are included with the source package and get
  1284.   the D.E.S. library from ftp.funet.fi. (The DES library was originally
  1285.   developed in Australia. That country has the same restrictions on
  1286.   export of cryptography as do the countries of NORAD. So, since it has
  1287.   leaked to Finland, people should get it from there. I do not know who
  1288.   broke Australian law and that does not matter as long as it was not
  1289.   I.)
  1290.  
  1291.   If you require to interface to a server which is configured to accept
  1292.   only encrypted authentication then you must use MSCHAP. If you can
  1293.   open up the server and accept "any authentication, including clear
  1294.   text" then you are best using PAP.
  1295.  
  1296.   If you use PAP, then edit the /etc/ppp/pap-secrets file and put the
  1297.   entry which corresponds to:
  1298.  
  1299.        account        remote            password
  1300.  
  1301.   This is three words, seperated by one or more spaces, on the same
  1302.   line. I have left out the IP addresses as they are used more for the
  1303.   ┤dial-in server┤ side of the pppd process. There is no limit to the
  1304.   line length. If your password or account name has spaces in it then
  1305.   use "password" or "account" (put quotes around it.) If the password
  1306.   has special characters which are not glyphs (printable characters such
  1307.   as a, b, c, etc.) then you may use \nnn for octal or \xNN for
  1308.   hexadecimal to enter the raw data as needed.
  1309.  
  1310.   The field marked account is the name of the account on the Windows NT
  1311.   server, remote is either an "*" to mean that it is not used or it
  1312.   corresponds to the value used with the ┤remotename┤ option to pppd and
  1313.   password is, obviously, the password.
  1314.  
  1315.   Then you need to add either "user account" or "name account" where
  1316.   "account" is the matching item to your user name on the Windows NT
  1317.   server and matches the entry in the pap-secrets file.
  1318.  
  1319.   Do not use the "+chap", "+pap", or "auth" options since these require
  1320.   that the remote system (Windows NT) authenticate itself with you.
  1321.   Normally the administrator won┤t put in your codes so this will fail
  1322.   and you will not be able to communicate.
  1323.  
  1324.   The entry for the chap-secrets file is basically the same. The MSCHAP
  1325.   code will convert the ASCII code to UNICODE that Windows NT requires
  1326.   since it is a simple mapping function from ASCII to UNICODE for the
  1327.   first 128 characters.
  1328.  
  1329.   The double entry in the chap-secrets file is because the CHAP
  1330.   authentication is assumed to work both ways. In fact, since the MSCHAP
  1331.   sequence only works in one direction at the present time (because the
  1332.   Windows NT server does not authenticate itself with the client because
  1333.   Microsoft chose not to do that section of the code) the second entry
  1334.   is just noise. However, the parser for the option in pppd will require
  1335.   that you have it to make MSCHAP an acceptable authentication protocol
  1336.   when requested by the Windows NT peer. The "secret" for this item can
  1337.   be anything but an empty string.
  1338.  
  1339.   The difference between "name", "remotename", and "user" is:
  1340.  
  1341.   user : Used for PAP authentication. It will default to the value
  1342.   assigned to "name" if you do not specify the "user" option directly.
  1343.  
  1344.   name : The name of the local system. It is used by the CHAP and MSCHAP
  1345.   code to select the secret from the chap-secrets file. It will default
  1346.   to name of the local IP address if you don't specify it.
  1347.  
  1348.   remotename : The name of the remote (peer) system. It is used by PAP,
  1349.   CHAP, and MSCHAP to select the item from the file. It will default to
  1350.   the name of the peer's IP address if you don't specify it.
  1351.  
  1352.   The Microsoft authentication sequence is a CHAP style authentication
  1353.   with their DES encryption algorithm for the passwords.
  1354.  
  1355.   So why didn┤t Microsoft just use CHAP with MD5 encryption then?  CHAP
  1356.   does not send the clear text password across the ┤wire┤. The answer is
  1357.   that in order to use CHAP protocol, you need the clear text for the
  1358.   password to be used with the encryption algorithm. You would need to
  1359.   store this clear text on your disk file. (The pppd process stores it
  1360.   in the /etc/ppp/chap-secrets file.)  Storing a password in clear text
  1361.   on the disk also violates the requirements for C2 registration.
  1362.  
  1363.   The only real difference between CHAP and MSCHAP is that MSCHAP does
  1364.   not store the clear text for the secret (password). They are both as
  1365.   vulnerable for middle-man imposter threats. They are both just as
  1366.   secure. Yet, MSCHAP can be used on a C2 registered system; CHAP can
  1367.   not.
  1368.  
  1369.   12.2.  I tried to use MSCHAP or PAP with Windows NT and it fails with
  1370.   "E=691". Now what?
  1371.  
  1372.   The error condition identified as 691 is Windows NT way of telling you
  1373.   "invalid user name or password". Cute, isn┤t it? It would have been
  1374.   better if they had included just a little more text with the message
  1375.   such as 'E=691 R="invalid user name or password"', but I guess that
  1376.   they had to save some memory some place and that was the place that
  1377.   they chose to do it. So, they left it as just this cryptic code
  1378.   number.
  1379.  
  1380.   (There are about five other errors which may occur. Each is just a
  1381.   code number as well. For a list of the code numbers and their textual
  1382.   translation, you will have to query Microsoft's knowledge base on
  1383.   http://www.microsoft.com.)
  1384.  
  1385.   Aside from the obvious reason of really not giving it a valid user
  1386.   name and password, the other reason is that it can not validate the
  1387.   entry that you did give it.
  1388.  
  1389.   If your RAS server is a member or a secondary domain controller of a
  1390.   domain then you need to prefix the user name with the domain name. The
  1391.   reason that you must specify the domain name is that the RAS server
  1392.   must ask some other server to validate your account, it needs to know
  1393.   the domain name which corresponds to your account.
  1394.  
  1395.   The domain name is pre-pended to the user name with a \ character
  1396.   separator.
  1397.  
  1398.   However, since \ is special to pppd as it has the normal "C" language
  1399.   meanings then you need to use an entry in the pap-secrets or chap-
  1400.   secrets file which looks like:
  1401.  
  1402.        domain\\account     remote         password
  1403.  
  1404.   and use name "domain\\account" or user "domain\\account" as the option
  1405.   for pppd.
  1406.  
  1407.   Then, you need to be careful about putting the \ character on the
  1408.   runline or as an un-quoted parameter to the connect option. The shell
  1409.   also uses \ for special purposes. This may mean that you would have to
  1410.   use name domain\\\\account just so that the pppd process sees name
  1411.   domain\\account so that it can give to Windows NT the sequence
  1412.   domain\account.
  1413.  
  1414.   12.3.  How do I support Windows 95?
  1415.  
  1416.   Windows 95 PPP support is designed to work with Windows NT and similar
  1417.   servers which do not use a login and password prompt. For this to
  1418.   work, you would need to use a getty process which will recognize the
  1419.   LCP configure-request.
  1420.  
  1421.   12.4.  I am using a Trumpet (for MSDOS) and the connection simply ter¡
  1422.   minates. Why is this happening?
  1423.  
  1424.   Trumpet does not like any VJ header compression.  Use the pppd option
  1425.   ┤-vj┤ to turn it off.
  1426.  
  1427.   12.5.  I am using dp-3.1.2 (with SunOS) and the system will not allow
  1428.   me to use anything but ping, or nslookup. Why is this happening?
  1429.  
  1430.   There is a bug in the 3.1.2 version of dp.  Please get the 3.1.2a or
  1431.   later file from the dp ftp home site harbor.ecn.purdue.ecu. Until you
  1432.   can put the patch into dp, disable the vj header compression.
  1433.  
  1434.   12.6.  My provider wants to use a dynamic DNS address which is not the
  1435.   same with every connection. Yet, Linux wants just one address in the
  1436.   /etc/resolv.conf file. This works with Microsoft Windows 95, but how
  1437.   do I make it work with Linux?
  1438.  
  1439.   Run a local ┤cache-only┤ nameserver on your own Linux system.
  1440.  
  1441.   Instructions on running the nameserver are in the Named-HOWTO. The
  1442.   only file which you need to obtain from the internet to enable the
  1443.   nameserver is the named.boot file. This is available from the ftp site
  1444.   at ds.internic.net. Then, use the address 127.1 as the address of the
  1445.   nameserver.
  1446.  
  1447.   You will need to create a named.boot file as well as a primary for a
  1448.   dummy domain which will hold your localhost name and a primary domain
  1449.   for the 127 IP network. Again, instructions on how to do this are in
  1450.   the Named-HOWTO file.
  1451.  
  1452.   13.  Other messages written to the system log
  1453.  
  1454.   13.1.  Alarm
  1455.  
  1456.   This is not a problem. It means that a timer has expired. Timers are a
  1457.   necessary part of the protocol establishment phase. This is a message
  1458.   to help the authors debug the program.
  1459.  
  1460.   13.2.  SIGHUP
  1461.  
  1462.   The pppd process has received a HUP signal. The HUP signal is
  1463.   generated by the tty software when the remote system has disconnected
  1464.   the modem link. It means that the modem has put the ┤telephone
  1465.   receiver back on the hook┤, or, ┤Hung UP┤ the connection.
  1466.  
  1467.   The kill program may also be used to send this signal to the pppd
  1468.   process.
  1469.  
  1470.   The pppd process will terminate the link in an orderly fashion when it
  1471.   receives this signal.
  1472.  
  1473.   13.3.  SIGINT
  1474.  
  1475.   The pppd process has received an INT signal. The INT signal is
  1476.   generated by the console software when you press the Ctrl-C key
  1477.   combination and pppd is the foreground process.
  1478.  
  1479.   The kill program may also be used to send this signal to the pppd
  1480.   process. In fact, the recommended method to terminate the pppd link is
  1481.   to send the process an INT. See the question relating to ┤dip -k┤ for
  1482.   a script which will perform this task. The pppd process will terminate
  1483.   the link in an orderly fashion when it receives this signal.
  1484.  
  1485.   13.4.  Unknown protocol (c025) received!.
  1486.  
  1487.   The remote wishes to exchange Link Quality Reporting protocol with the
  1488.   Linux system. This protocol is presently not supported. This is not an
  1489.   error. It is merely saying that it has received the request and will
  1490.   tell the remote that ┤I can't do this now. Don't bother me with this!┤
  1491.  
  1492.   The Morning Star PPP package will always try to do LQR protocol. This
  1493.   is normal.
  1494.  
  1495.   13.5.  Unknown protocol (80fd) received!.
  1496.  
  1497.   The remote wishes to exchange Compression Control Protocol with the
  1498.   Linux system. This type of protocol is layered upon the basic data
  1499.   protocol and will, if successfully negotiated, result in a fewer
  1500.   number of bytes transmitted for the frame. This means that the
  1501.   transfer will be quicker.
  1502.  
  1503.   However, there are many types of compressors which are used under the
  1504.   general ┤umbrella┤ of a Compression Control Protocol. The 2.2 PPP
  1505.   package understands only one; the BSD compressor.  This compressor
  1506.   works very similar to the Unix ┤compress┤ program and uses a LZW
  1507.   compressor. Depending upon the size of the code, there can be a
  1508.   significant amount of kernel space needed to hold the compression and
  1509.   decompression dictionaries. This should not be used if you have a
  1510.   limited memory space and should not even be contemplated if you have
  1511.   8Meg or less real (RAM) memory. In those cases you should invest in a
  1512.   decent modem which support compression.
  1513.  
  1514.   Unless both sides can agree upon the type of compression the
  1515.   compression will not be used.
  1516.  
  1517.   Another common compressor is called Predictor-1.  This will take less
  1518.   memory and run faster. However, its compression is not as good in that
  1519.   it will send a little more data than the equivalent frame given to the
  1520.   BSD compressor.
  1521.  
  1522.   Many commercial terminal servers will employ a compressor called
  1523.   ┤Stacker(TM) LZW┤ or LZS protocol. This is a commercial compression
  1524.   agent. Apparently Stacker will give you a license for no charge.
  1525.   However, a specific license is required and that will usually prevent
  1526.   it being included with the pppd process.
  1527.  
  1528.   The 2.3 package will additionally include the compressor known as
  1529.   ┤deflate┤. It is a variation of the common package called ┤gzip┤.
  1530.  
  1531.   13.6.  The connection fails with errors ┤ioctl(TIOCGETD): I/O error┤
  1532.   or ┤ioctl(PPPIOCSINPSIG): I/O error┤. What now?
  1533.  
  1534.   Look at the boot messages when you boot the kernel.  If it says ┤PPP
  1535.   version 0.1.2┤ then you have an old version of the ppp.c driver.
  1536.  
  1537.   If it says ┤PPP version 0.2.7┤ then you have the current driver, for
  1538.   the 2.1.2 package however, it was not built with the same set of
  1539.   defines for the ioctl numbers.  Ensure that you have only one file
  1540.   called ┤if_ppp.h┤.  It should be located in the kernel┤s include/linux
  1541.   directory. Once you have done this, rebuild the kernel and the pppd
  1542.   process.
  1543.  
  1544.   If it says ┤PPP version 2.2.0┤ then you are using the driver for the
  1545.   2.2.0 package. This version of the driver will only work with the 2.2
  1546.   series of the pppd package.  The 2.2 pppd program will only work with
  1547.   this version of the driver.
  1548.  
  1549.   13.7.  Sometimes the messages ┤ioctl(PPPIOCGDEBUG): I/O error┤,
  1550.   ┤ioctl(TIOCSETD): I/O error┤ and ┤ioctl(TIOCNXCL): I/O error┤ occur.
  1551.   Why?
  1552.  
  1553.   The remote system has disconnected the telephone.  The tty drivers
  1554.   will re-establish the proper tty discipline and these errors are the
  1555.   result of the pppd process trying to do the same thing. These are to
  1556.   be expected.
  1557.  
  1558.   13.8.  My ifconfig has strange output for PPP.
  1559.  
  1560.   Usually the ifconfig program reports information similar to the
  1561.   following. You will have different IP addresses.
  1562.  
  1563.        ppp0      Link encap:Point-Point Protocol
  1564.                  inet addr:155.190.0.1  P-t-P:155.190.8.1  Mask:255.255.0.0
  1565.                  UP POINTOPOINT RUNNING  MTU:1500  Metric:1
  1566.                  RX packets:0 errors:0 dropped:0 overruns:0
  1567.                  TX packets:0 errors:0 dropped:0 overruns:0
  1568.  
  1569.   The information is for display purposes only. If you are using a
  1570.   recent kernel then update the nettools package with the current one on
  1571.   sunacm.swan.ac.uk in the directory /pub/Linux/networking/nettools.
  1572.  
  1573.   13.9.  The file /proc/net/dev seems to be empty
  1574.  
  1575.   Do not be concerned with the contents of the /proc/net/dev file. There
  1576.   was a time when it was suggested that you check this file to determine
  1577.   if the ppp devices have been created. Now this check causes more
  1578.   confusion than satisfaction since the devices are dynamically created.
  1579.  
  1580.   Did you just issue the command ┤ls -l /proc/net┤ and are wondering why
  1581.   the size is zero? If so, this is normal. Instead, issue the command:
  1582.  
  1583.        cat /proc/net/dev
  1584.  
  1585.   You should not find the file empty. The size is always shown as zero,
  1586.   but that is the ┤proc┤ file system. Don't believe the size. Do the
  1587.   command.
  1588.  
  1589.   The ┤more┤, ┤less┤, and ┤most┤ programs may not be used to view the
  1590.   file directly. If you wish to use these programs, use it as follows:
  1591.  
  1592.        cat /proc/net/dev | less
  1593.  
  1594.   The current versions of pppd do not pre-create the ppp devices as the
  1595.   earlier versions did. If you have instructions which say that you
  1596.   should look at the /proc/net/dev file to see if there are ppp devices
  1597.   then you should ignore them. The ppp devices will be automatically
  1598.   created as they are needed and when they are needed.
  1599.  
  1600.   13.10.  The kernel reports that the PPP devices are being unlinked
  1601.   when the system is being started.
  1602.  
  1603.   This message is generated only from earlier attempts at making the ppp
  1604.   devices dynamic. The current code no longer generates these messages.
  1605.   If you are seeing these messages then you should upgrade the pppd
  1606.   package to at least the 2.2.0 code.
  1607.  
  1608.   13.11.  I just checked /proc/net/dev and there are no PPP devices.
  1609.   Where did they go?
  1610.  
  1611.   They went nowhere. They were all unlinked during the startup of the
  1612.   system.
  1613.  
  1614.   The devices will be created again as they are needed.
  1615.  
  1616.   14.  Network routing issues (using PPP as a ┤cheap┤ bridge)
  1617.  
  1618.   14.1.  Slattach and ifconfig don't work as they do with SLIP
  1619.  
  1620.   Do not use slattach and ifconfig with PPP. These are used for SLIP.
  1621.   The pppd process does these functions at the appropriate time. These
  1622.   must occur after the LCP and IPCP protocols have been exchanged.
  1623.  
  1624.   You can not replace pppd with slattach and ifconfig. Most of the
  1625.   protocol support for PPP is in the pppd process. Only the IP and IPX
  1626.   processing is in the kernel.
  1627.  
  1628.   The host route to the remote system will be automatically added by
  1629.   pppd. There is no option to NOT add the route. The pppd process will
  1630.   terminate if the route could not be added.
  1631.  
  1632.   The default route may or may not be added. This is controlled by the
  1633.   option ┤defaultroute┤.  If you have a default route, it will not be
  1634.   changed.
  1635.  
  1636.   If you must do routing for an entire network, then put the route
  1637.   command into the /etc/ppp/ip-up script. The parameters to the script
  1638.   are:
  1639.  
  1640.        $0 - name of the script (/etc/ppp/ip-up or /etc/ppp/ip-down)
  1641.        $1 - name of the network device (such as ppp0)
  1642.        $2 - name of the tty device (such as /dev/cua0)
  1643.        $3 - speed of the tty device in Bits Per Second (such as 38400)
  1644.        $4 - the local IP address in dotted decimal notation
  1645.        $5 - the remote IP address in dotted decimal notation
  1646.        $6 - the value of the ipparam parameter
  1647.  
  1648.   14.2.  I want the route to the network and not the route to the host.
  1649.  
  1650.   On sunsite there is a package called devinfo.tar.gz.  It contains some
  1651.   useful little programs which will extract the data from the device and
  1652.   to do various things with the dotted IP addresses.
  1653.   The documentation is in the man pages in the file.
  1654.  
  1655.   For example, if you want to route the entire IP domain to the remote,
  1656.   the following may be used in /etc/ppp/ip-up.
  1657.  
  1658.   Of course, if the values are not variable, then simply use the
  1659.   appropriate entry in the route command.
  1660.  
  1661.        # Obtain the netmask for the ppp0 (or whatever) device
  1662.        NETMASK = `devinfo -d $1 -t mask`
  1663.  
  1664.        # Obtain the IP domain (without the host address by removing the extra bits)
  1665.        DOMAIN = `netmath -a $5 $NETMASK`
  1666.  
  1667.        # Do the network route now that the IP domain is known
  1668.        route -net add $DOMAIN gw $5
  1669.  
  1670.   15.  Other features and protocols
  1671.  
  1672.   15.1.  What about support for ┤demand dial┤
  1673.  
  1674.   Use the diald package. This is on sunsite in the same directory as the
  1675.   PPP source, /pub/Linux/system/Network/serial.
  1676.  
  1677.   15.2.  What about ┤filtering┤
  1678.  
  1679.   There are no plans to put filtering into the PPP code. The 1.3 kernel
  1680.   supports a firewall option and you should use that rather than attempt
  1681.   to find a method of putting firewall logic into a network device
  1682.   driver. Use either the ipfw or ipfwadm programs to define the rules
  1683.   for the firewall code in the kernel.
  1684.  
  1685.   15.3.  How about IPX?
  1686.  
  1687.   It is in the 2.2.0e package.
  1688.  
  1689.   15.4.  How about NETBIOS?
  1690.  
  1691.   There is a netbios PPP protocol. However, your better solution would
  1692.   be to use TCP/IP and the ┤samba┤ code.
  1693.  
  1694.   Microsoft and others have used Netbios PPP protocol.
  1695.  
  1696.   The nbfcp protocol is a public document and available from several
  1697.   sources. The Netbios protocol is not a valid address family at the
  1698.   present time for Linux. Until Linux supports the protocol, there is
  1699.   little need to support Netbios over PPP for Linux.
  1700.  
  1701.   15.5.  I need ISDN support. Is there any?
  1702.  
  1703.   ISDN support revolves around having a working ISDN driver. The present
  1704.   design of the PPP driver does not lend itself well to the concept of a
  1705.   block of data being received. This is being changed. A driver for the
  1706.   Sonix interface is being developed.
  1707.  
  1708.   15.6.  I would like multi-point support. Is there any support?
  1709.  
  1710.   Multi-point would be nice. I am not aware of anyone working on multi-
  1711.   point support at the present time.
  1712.  
  1713.   15.7.  How about just standard synchronous PPP?
  1714.  
  1715.   There are small changes needed to support a serial interface which
  1716.   uses synchronous communications. The redesign of the PPP driver will
  1717.   help with this function as well. Kate Marika Alhola has expressed an
  1718.   interest in writing such a synchronous driver for her hardware. You
  1719.   should contact her at kate@iti.fi or kate@nic.funet.fi for further
  1720.   information.
  1721.  
  1722.   She informs me that the current status of sync ppp is, that I have had
  1723.   it few months in ┤production┤ use talking with Cisco(TM) in speeds 64K
  1724.   and 256K. The source is under the GPL license and it may be found in
  1725.   ftp://nic.funet.fi/pub/Linux/kernel/xnet-sync-driver-1.0.tar.gz.
  1726.  
  1727.   16.  Miscellaneous
  1728.  
  1729.   16.1.  Do you have a PPP compatible mail reader?
  1730.  
  1731.   Huh? You have the wrong group if you want MSDOS.  PPP has nothing to
  1732.   do with the mail user agent. All of the mail agents are compatible
  1733.   with PPP.
  1734.  
  1735.   16.2.  How about a news reader?
  1736.  
  1737.   Refer to the previous answer.
  1738.  
  1739.   17.  Questions about chat
  1740.  
  1741.   The chat program is packages with the pppd executable. This is not an
  1742.   endorsement for chat. Any program which will arrange to start the PPP
  1743.   protocol on the remote system may be used. However, since chat is
  1744.   included with pppd, many people use it. There are only a few common
  1745.   questions about chat.
  1746.  
  1747.   17.1.  My modem wont dial when I run chat
  1748.  
  1749.   The modem is required to be in the command mode to issue dial
  1750.   commands. If your modem is ┤online┤ then characters sent to the modem
  1751.   will be sent to the remote system.
  1752.  
  1753.   If possible, configure the modem to monitor the DTR signal and to
  1754.   return to the command mode when the DTR signal drops.  This will
  1755.   permit the computer to force the modem back to the command mode when
  1756.   the pppd process terminates at the end of a connection.  It will then
  1757.   be in the proper state when the next execution attempts to dial the
  1758.   telephone.
  1759.  
  1760.   If you can┤t do this then you should change the dial sequence so that
  1761.   it is similar to the following. It will ensure that the modem is in
  1762.   the command state prior to attempting to send the dial sequence.
  1763.  
  1764.   TIMEOUT 3 \'\' \rAT OK-+++\c-OK AT&D2&C1 TIMEOUT 60 OK ATDT555-1212 CONNECT
  1765.  
  1766.   The commands will change the timeout period to three seconds. This
  1767.   accommodates the guard time period used by many modems. It will then
  1768.   send AT to the modem and look for its response of OK. If it is not
  1769.   received in the three seconds, it will send the +++ sequence to the
  1770.   modem and wait for the modem to present the expected OK response. Once
  1771.   it receives the valid response it will configure the modem and dial
  1772.   the telephone number.
  1773.  
  1774.   17.2.  The modem dials only on every second attempt
  1775.  
  1776.   Please refer to the above answer. It is usually the same issue.
  1777.  
  1778.   17.3.  The chat script stops after sending the account name and it
  1779.   never receives the password prompt.
  1780.  
  1781.   Some systems, notably SCO, will flush the receive buffers after
  1782.   writing the prompts for user name and password.  The chat program
  1783.   normally transmits the response immediately upon seeing the prompt.
  1784.   The result is that the reply from chat is flushed by SCO. The chat
  1785.   program continues to wait for the password prompt.  However, the
  1786.   remote system is still waiting for the user to enter the account name.
  1787.  
  1788.   The solution is simple. Slow down the responses from chat so that
  1789.   there is time for the remote system to flush the receive buffer before
  1790.   chat starts to send the response. Chat supports this with the \d
  1791.   parameter. Change the response strings similar to the following:
  1792.  
  1793.          ogin:--ogin: \d\daccount assword: \d\dhello2u2
  1794.  
  1795.   17.4.  The chat script stops before finishing and fails to make the
  1796.   connection
  1797.  
  1798.   A common method of using chat is to use the connect option and have it
  1799.   directly run the chat program, i.e. connect "chat ...". What is not so
  1800.   obvious is the method by which pppd implements the connect processing.
  1801.  
  1802.   The pppd process uses the execl() function to start a shell. The shell
  1803.   is given the command line string which you supplied with the connect
  1804.   option. This has several advantages in that the parameters do not need
  1805.   to be parsed by pppd, they may be expanded, the path is automatically
  1806.   searched, etc. However, it does have some disadvantages as well.
  1807.  
  1808.   The disadvantage is that the shell will re-interpret the option string
  1809.   again for special characters and act upon them. It will use the \
  1810.   character to take the next character as a different meaning, it will
  1811.   use the & character to start a new sub-shell, and it will use the <
  1812.   and > to do I/O redirection.
  1813.  
  1814.   So, if your prompt string is "protocol>" and you use just the string
  1815.   protocol> or even > then the shell will cause chat to fail to run.
  1816.   This is not a problem with chat. This is not a problem with the shell.
  1817.   They are both doing exactly what is expected.
  1818.  
  1819.   So, how do you actually use the string protocol> as a prompt? Well,
  1820.   the answer is simple. Put a \ before the > character as in protocol\>.
  1821.   This tells the shell that the > is not an I/O redirection sequence but
  1822.   a simple character which is to be given to the chat program just like
  1823.   any other.
  1824.  
  1825.   The same thing is required for the modem configuration options of
  1826.   AT&D2, etc. The & needs to be quoted as in AT\&D2.
  1827.  
  1828.   The chat program also recognizes the \ character as being special
  1829.   within its own processing. This is performed so that strings may have
  1830.   special characters within them such as \r for a carriage return. If
  1831.   your prompt or the reply contains a \ then you need to give chat \\
  1832.   for each \ character that you wish to use. (Remember that the shell
  1833.   will also need \\ for each of those as well if you don't put the
  1834.   sequence within quotes.)
  1835.  
  1836.   17.5.  When I attempt to run chat, it says that the -l parameter is
  1837.   invalid. Why?
  1838.  
  1839.   There was a time when chat had the ability to set a lock file for the
  1840.   modem device. The name of the file was given to chat with the
  1841.   parameter -l.
  1842.  
  1843.   However, that was a seriously bad idea and should not have been in the
  1844.   code in the first place.
  1845.  
  1846.   The reason is that chat is a filter. It does not attempt to configure
  1847.   the modem for the proper rate. So, what people would do is run stty to
  1848.   set the rate, then run chat, and then attempt to run pppd. This was
  1849.   definitely not the way to do the connection.
  1850.  
  1851.   The serial port sharing only works if all of the programs on your
  1852.   system follow the same rules and play by the same game. If you want to
  1853.   share the serial port then you need to use a lock file. This lock file
  1854.   must be created using the proper method before the serial port is
  1855.   touched. You are not permitted to run stty on the serial port until
  1856.   the lock file is first created.
  1857.  
  1858.   Consider what would happen if you had run chat, and chat was in the
  1859.   middle of the dial sequence and then some cron event occurred which
  1860.   launched another program. That program just changed the BPS rate on
  1861.   your modem without attempting to lock the serial device first. I can
  1862.   tell you what would happen. The chat connection script won't complete.
  1863.  
  1864.   So, for that reason, since chat is a filter and not meant to be a
  1865.   controlling program, the lock option was removed. Chat is not able to
  1866.   create a lock file for the modem. The lock file must be created by the
  1867.   program which configures the serial port and then runs chat, such as
  1868.   pppd.
  1869.  
  1870.   17.6.  I ran chat. It seems to want to use the local terminal as the
  1871.   modem and it does not talk to the modem. How do I specify the modem
  1872.   name to chat?
  1873.  
  1874.   Chat is in a class of programs called a ┤filter┤. That is, it reads
  1875.   from the standard input, does some processing internally, and writes
  1876.   to the standard output.
  1877.  
  1878.   So, if you really want to just run chat and have it talk to a modem
  1879.   then you need to use the I/O redirection operators < and > so that the
  1880.   standard input and output are redirected to the modem.
  1881.  
  1882.   HOWEVER, if you are using chat with pppd, please do not run chat first
  1883.   and then attempt to run pppd after it. You should only use the
  1884.   combination of chat and pppd if you use the connect option for pppd to
  1885.   run the chat program.
  1886.  
  1887.   The reason for this is that pppd will automatically redirect the
  1888.   standard input and standard output to the appropriate modem device
  1889.   before it runs the connect script (and chat). In addition, the
  1890.   necessary device locking will have been performed before it attempts
  1891.   to run the chat program.
  1892.  
  1893.   If you just run chat first and then expect to run pppd, your system
  1894.   will fail should you have another program which is sharing the serial
  1895.   device. The locking will not have been performed, chat will not have
  1896.   re-configured the serial device so that it has the proper transmission
  1897.   rate, parity, stop bits, etc. and then when the other program, such as
  1898.   mgetty, comes along it will find that the lock file is not valid and
  1899.   re-configure the modem again. In so doing, it will destroy the use of
  1900.   the modem by chat and chat or pppd will fail.
  1901.  
  1902.   17.7.  When I run pppd and chat along with mgetty then the connection
  1903.   does not start. If I stop mgetty, then pppd will work. Why?
  1904.  
  1905.   For the serial port to be shared properly, a lock file is needed
  1906.   between the use of the serial port by mgetty and the use by pppd (and
  1907.   chat).
  1908.  
  1909.   The pppd process uses the FSSTND location of /var/lock/LCK..ttyS0 to
  1910.   lock the device called 'ttyS0'.
  1911.  
  1912.   There have been some pre-built binaries of mgetty in some
  1913.   distributions which use the much older location of
  1914.   /usr/spool/uucp/LCK..ttyS0.
  1915.  
  1916.   In addition to the file location, the file format must be the same.
  1917.   There are two common methods of recording the pid information in the
  1918.   file. The first is the older method, used commonly by some pre-built
  1919.   binaries for the kermit terminal emulator, of storing the pid as a
  1920.   binary value. You can tell this format in that the lock file is four
  1921.   bytes in size.
  1922.  
  1923.   The more modern method is to store the pid as an ASCII string. This
  1924.   file has a size of eleven bytes (ten bytes for the pid, one for the
  1925.   trailing newline character.)
  1926.  
  1927.   If the file format does not match what mgetty expects then mgetty
  1928.   treats the lock as being invalid and seizes the device, drops the DTR
  1929.   (which usually hangs up on the connection), and reconfigures the
  1930.   modem.
  1931.  
  1932.   The other cause for the condition is that you simply forgot to tell
  1933.   pppd that it must lock the serial port. To tell pppd that it needs to
  1934.   lock the serial port, use the option 'lock' when you run pppd.
  1935.  
  1936.   In the context of the lock file, the name of the lock file is formed
  1937.   from the name of the serial device. That is good for the most part.
  1938.   The problem comes when people use 'modem' and 'ttyS0' to be the same
  1939.   thing. Some people have a symbolic link from /dev/modem to /dev/ttyS0.
  1940.   They then forget that mgetty is using the name ttyS0 for the name of
  1941.   the serial port and they use /dev/modem when they run pppd, telling it
  1942.   to create the lock. The pppd process does so, but the lock file
  1943.   created is called "LCK..modem". Then mgetty comes along and does not
  1944.   see that the serial device is locked (because there is no "LCK..ttyS0"
  1945.   file) and drops the DTR signal and the PPP connection is broken.
  1946.  
  1947.   So, either use /dev/modem or /dev/ttyS0 for your modem. Choose one
  1948.   name. Get rid of the other. Use that name everywhere, not just in
  1949.   "most" of the places, but in "every" place.
  1950.  
  1951.   We have been working on a solution to this problem. It involves
  1952.   getting rid of the reliance upon the name of the serial device and
  1953.   using the values that the operating systems really uses, the major and
  1954.   minor device numbers. However, that is not in place yet. Until it is,
  1955.   be careful and use the proper names for the devices on the system and
  1956.   you should not have a problem.
  1957.  
  1958.