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.

Files:

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
/etc/modules.conf.

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
PAP.

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
pppoe_server
+pap
10.10.10.1:

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

papname * papsecret 10.10.10.0/24+ !10.10.10.1

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.

http://www.hgfelger.de/mss/mss.html

Michal Ostrowski
mostrows@styx.uwaterloo.ca