If you install roaring penguin PPPoE on Linux from the tarball, you get a few scripts named adsl-start, adsl-connect etc.
Debian's pppconfig, among others, uses a much tidier way using pppd's "call" parameter and /etc/ppp/peers entries.
Here is an example entry for a PPPoE connection. In the following, you would replace ISP with the PPPoE service name on your modem/AccessConcentrator, eth0 with the ethernet device connected to your AccessConcentrator, foo@myisp.com with your username, myisp with a label for your ISP and mypassword with your password.
/etc/ppp/peers/myisp:
pty '/usr/sbin/pppoe -p /var/run/pppoe.conf-adsl.pid.pppoe -m 1412 -U -T 80 -I eth0 -S ISP' holdoff 5 #debug persist ipcp-accept-remote ipcp-accept-local noauth defaultroute hide-password user foo@myisp.com lcp-echo-interval 5 lcp-echo-failure 5 remotename myisp maxfail 0
/etc/ppp/pap-secrets:
"foo@myisp.com" myisp "mypassword"
Now, typing pppd call myisp should connect the the AccessConcentrator then establish the PPP connection with the RemoteAccessNode? (in the case of ADSL).
The Linux kernel now has a built in PPPoE framer. Using the kernel mode PPPoE driver seems to yield measurably (but not noticably) lower CPU load than the userland client.
The framer provides a pty /dev/ppp for pppd to talk to, but it still needs a PPPoE plugin. The ppp package includes one which is supplied by the good folk at Roaring-Penguin. Oddly enough, the best docs for kernel mode seem to be in the usermode package, see doc/KERNEL-MODE-PPPOE.
You need a sufficiently recent version of ppp -- 2.4.2 is the minimum --, and your Kernel must have support for the following (this is for 2.6):
CONFIG_PPP=m CONFIG_PPP_ASYNC=m CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m CONFIG_PPPOE=m
You will also need the appropriate character device, in case it doesn't exist:
mknod --mode=664 /dev/ppp c 108 0
Add the following entries to /etc/modules.conf according to KERNEL-MODE-PPPOE (under your LinuxDistribution the file may already contain some or all of these):
alias net-pf-24 pppoe alias char-major-108 ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-13 n_hdlc alias tty-ldisc-14 ppp_synctty
In the following, you would replace ISP with the PPPoE service name on your modem/AccessConcentrator, eth0 with the ethernet device connected to your AccessConcentrator, foo@myisp.com with your username, myisp with a label for your ISP and mypassword with your password.
/etc/ppp/peers/myisp:
plugin rp-pppoe.so rp_pppoe_service ISP eth0 holdoff 5 #debug persist ipcp-accept-remote ipcp-accept-local noauth defaultroute hide-password user foo@myisp.com lcp-echo-interval 5 lcp-echo-failure 5 remotename myisp maxfail 0
/etc/ppp/pap-secrets:
"foo@myisp.com" myisp "mypassword"
Now, typing pppd call myisp should connect the the AccessConcentrator then establish the PPP connection with the RemoteAccessNode? (in the case of ADSL).
3 pages link to LinuxPPPoENotes: