LinuxCommandLibrary
GitHubF-DroidGoogle Play Store

pppoe-server

Run PPPoE access concentrator server

TLDR

Start PPPoE server
$ pppoe-server -I [eth0]
copy
Specify local IP and starting remote IP (allocate up to N consecutive addresses)
$ pppoe-server -I [eth0] -L [10.0.0.1] -R [10.0.0.100] -N [100]
copy
Run with specific service name
$ pppoe-server -I [eth0] -S [myservice]
copy

SYNOPSIS

pppoe-server [options]

DESCRIPTION

pppoe-server implements a PPPoE access concentrator that accepts incoming PPPoE client (PADI/PADR) frames on a specified Ethernet interface. For each accepted session it spawns a pppd instance plumbed to the user-space pppoe plugin (or the in-kernel driver with -k) and assigns a remote IP from the local pool unless -D delegates that to pppd.Typical deployments run pppoe-server as part of a small lab DSL/PPPoE setup; ISPs more commonly use it as the front end to a RADIUS-backed AAA stack via pppd's radius plugin.

PARAMETERS

-I INTERFACE

Ethernet interface to listen on. Repeatable to serve multiple interfaces.
-L IP
Local (server-side) IP address (default 10.0.0.1).
-R IP
Remote IP pool starting address (default 10.67.15.1); each session gets the next address.
-p FILE
Read the remote IP pool from a text file (one address per line).
-S NAME
Advertised service name. Repeatable to advertise multiple services.
-C ACNAME_
Access-concentrator name announced in PADO replies (default: hostname).
-N NUM
Maximum concurrent sessions (default 64).
-x N
Limit concurrent sessions from a single peer MAC.
-O FILE
Path to a pppd options file used for every spawned session.
-T SECONDS
Idle timeout passed through to pppoe.
-m MSS
Clamp the negotiated TCP MSS to MSS.
-D
Delegate IP address assignment to pppd (do not allocate from the local pool).
-k
Use the in-kernel PPPoE driver (Linux 2.4+).
-F
Run in the foreground rather than daemonising.
-X PIDFILE
Write the daemon PID to PIDFILE with locking.
-q PATH
Path to the pppd binary.
-Q PATH
Path to the user-space pppoe binary.
-u
Invoke pppd with the unit option for predictable interface naming.
-i
Silently drop PADI broadcasts when no session slots remain.
-r
Randomise PPPoE session IDs.
-h
Print usage and exit.

CAVEATS

The Ethernet interface used by pppoe-server typically must be brought up without an IP, since PPPoE works at layer 2. Combine with a RADIUS plugin in pppd for real authentication; the built-in pool assignment is meant for simple/lab use. The default session cap (-N 64) is the absolute maximum per interface for rp-pppoe unless raised.

HISTORY

pppoe-server is part of rp-pppoe by Roaring Penguin Software (originally written by Dianne Skoll), the canonical user-space PPPoE implementation on Linux and \*BSD.

SEE ALSO

pppoe(8), pppoe-relay(8), pppd(8)

Copied to clipboard
Kai