PPPoE for Linux 2.4

This is a driver for PPPoE for Linux 2.4.

This driver is for 2.4 kernels only.  For a driver for 2.2 kernels, the Roaring Penguin
package is recommended.

The software on this page is currently required if you wish to use kernel-mode
PPPoE with Roaring Penguin (see the Roaring Penguin documentation for details),
though this functionality is currently recommended for experts only.


        ppp-2.4.1-pppoe.patch4   Patch for ppp-2.4.1
        ppp-2.4.1-pppoe4.tgz       Source of ppp-2.4.1 with patches applied.
        ppp-cvs.pppoe1.tgz       Source of ppp CVS repository with patches applied.

Installation & Usage:

1.  Configure, compile and install a 2.4 kernel.

     Make sure to enable PPP over Ethernet in the kernel configuration, as

     well as as the "Packet Socket" option.  You must also enable support
     for experimental drivers.

     If you are compiling as a module, add the line "alias net-pf-24 pppoe" to

      Make sure that the /dev/ppp device exists:  "mknod /dev/ppp c 108 0"

2.  Configure, compile and install the modified pppd package.
     Links to the patch, or the complete patched source are available above.

3.  Include the following line in your ppp options file:

    plugin pppoe

    If you experience problems, try replacing the "pppoe" with the
    full path and file name of the "pppoe.so" file that is installed
    by the pppd installation.

    Following these two lines should be your other ppp options.  My
    options file includes only one other line; a "name" statement for

4.  Invoke pppd (e.g.: "pppd eth0").  Before doing this, make sure the ethernet
     device is up ("ifconfig eth0 up" has been executed).

Other Stuff:

1.  You can restrict pppd to connect to specific access-concentrators
    or specific services by addin "pppoe_ac_name" and "pppoe_srv_name"
    options (respectively) to your options file.  Each of these options is
    followed by a string specifying the conecntrator or service name that
    is to be matched. Most people should not need this.

2.  Here's how I've configured things to get a server working:

    client's /etc/ppp/options:

        plugin /usr/lib/pppd/plugins/pppoe.so
        name papname

    client's /etc/ppp/pap-secrets:

        papname * papsecret

    server's /etc/ppp/options:

        plugin /usr/lib/pppd/plugins/pppoe.so

    server's /etc/ppp/pap-secrets:

        papname * papsecret !

    On both the client and the server, pppd is invoked as "pppd eth0".
    With this setup you will have to invoke a new pppd on the server for
    each session.

    The patched pppd also builds a new pppoed which can be used to create
    a PPPoE server capable of serving multiple clients.  To use this ,
    remove the "pppoe_server" line from the server's /etc/ppp/options
    file.  Invoke pppoed as: "pppoed -S -I eth0 -A ac_name -S srv_name".
    pppoed will now create a new pppd process for each incoming connection.
    Note: this is still rather flaky, use with caution  If pppoed seems to jam,
    restarting it will not affect existing connections.

3.  If you're trying to run masquerading over your PPPoE link, check out  this
     page for instructions on how to ensure that path MTU's are properly
     reported across your network.   Without this your masquerading will
     not work.


Michal Ostrowski