kpppoed(8)

πŸ“¦
version 0.1.8 Β· 2 versions
  • 0.1.8 Β· debian trixie, fedora 43, fedora 44, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • 0.1.7 Β· ubuntu noble
, in debian trixie, fedora 43, fedora 44, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– kpppoed β€” the PPPoE-to-L2TPv2 glow-up πŸ’–

okay bestie, sit down, hydrate, and let me tell you about kpppoed from the go-l2tp collection. it's a daemon, it's in section 8 of the manual (that's the "system administration / big girl commands" section, iykyk), and it is so niche and so powerful. let's get into it 🫢


✨ NAME ✨

kpppoed β€” a PPPoE daemon that spins up L2TPv2 Access Concentrator sessions whenever PPPoE requests come knocking. like, you ask nicely, it builds you a tunnel. iconic behavior honestly πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

kpppoed [ arguments ]

that's it. that's the whole vibe. arguments optional, drama mandatory πŸ’…


🌸 DESCRIPTION 🌸

so kpppoed is a PPPoE server daemon β€” that's RFC 2516 for anyone taking notes πŸ“ β€” and its whole thing is creating L2TPv2 Access Concentrator sessions. it doesn't do the L2TP stuff itself, no ma'am: it spawns kl2tpd to handle all the L2TP protocol business. teamwork makes the dream work fr fr 🀝

and the way it knows what to do? it's driven by a configuration file that describes the PPPoE service it's supposed to be offering. no config, no service, no cap.


πŸ’… OPTIONS πŸ’…

  • -config string β€” tells it where your configuration file lives. the default is "/etc/kpppoed/kpppoed.toml" if you don't say anything, which, valid, that's the standard spot 🏠
  • -verbose β€” toggles verbose log output. flip it on when you want the daemon to actually tell you what's going on instead of being mysterious and cryptic πŸ”

πŸ¦‹ CONFIGURATION πŸ¦‹

your config file, kpppoed.toml, is written in TOML markup language β€” yes, that one, the one at https://toml.io/en/ if you wanna go read up on it, nerd (affectionate) πŸ“š

it keeps things cute and simple: a small set of key:value pairs configures the whole PPPoE server. here's the full example, and I'm giving it to you exactly as-is because every single comment is doing important work:

# ac_name is the name that kpppoed will use in the PPPoE AC Name tag sent
# in PADO packets.  If not specified it will default to "kpppoed".
ac_name = "MyAccessConcentrator.2000"

# interface_name is the name of the network interface that kpppoed will listen
# on for PPPoE discovery packets.  It must be specified.
interface_name = "eth0"

# services is a list of service names that kpppoed will advertise in PADO packets
# At least one service must be specified.
services = [ "serviceA", "serviceB", "serviceC" ]

# lns_ipaddr is the IP address and port of the L2TP server to tunnel
# pppoe sessions to.  The LNS address must be specified.
lns_ipaddr = "3.22.1.9:1701"

let me break down the ✨lore✨:

  • ac_name β€” the name kpppoed puts in the PPPoE AC Name tag it sends inside PADO packets. skip it and it defaults to "kpppoed". you can leave it, but naming your concentrator is a main character move.
  • interface_name β€” the network interface kpppoed listens on for PPPoE discovery packets. this one is REQUIRED, bestie. must be specified, no default, no wiggle room 🚨
  • services β€” the list of service names it advertises in PADO packets. at least one service must be specified. an empty list is not the vibe.
  • lns_ipaddr β€” the IP address and port of the L2TP server your PPPoE sessions get tunneled to. the LNS address must be specified. mandatory, periodt.
heads up: three of these four are non-negotiable. only ac_name has a fallback. don't come crying to me when it refuses to start πŸ™ˆ

🌈 SEE ALSO 🌈


πŸ’œ AUTHORS πŸ’œ

Katalix Systems, Ltd. β€” the legends behind all of this 🫑


and that's the whole page, babe! this little write-up is from go-l2tp v0.1.8, dated May 2024. go forth, tunnel responsibly, and remember: kpppoed(8) ate and left no crumbs πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from