Modern Linux distributions make PPPoE configuration fairly straightforward, though the landscape has evolved significantly since the old pppoeconf days. The discussion already covers NetworkManager and nmcli, which are the recommended approaches for most desktop users. Let me add some additional context that might help.
Beyond NetworkManager: systemd-networkd
For headless servers or users who prefer a more minimal setup, systemd-networkd is an excellent alternative. It handles PPPoE natively through configuration files in /etc/systemd/network/. A simple configuration looks like:
[Match]
Name=enp3s0
[Network]
DHCP=no
[PPPoE]
Username=yourispuser
Password=yourisppass
Then enable the service. This method avoids dependency on NetworkManager entirely and is very reliable. It also integrates well with netplan if you’re using Ubuntu; netplan can generate systemd-networkd configs if you set the renderer accordingly.
Common Pitfalls and Modern Considerations
MTU issues are still a frequent source of problems. Many ISPs require an MTU of 1492 instead of the default 1500 due to PPPoE overhead. You can adjust this in NetworkManager by setting the MTU in the connection profile, or in systemd-networkd under the [PPPoE] section with MTUBytes=1492.
VLAN tagging is increasingly common, especially with fiber-to-the-home (FTTH) where the ISP might require PPPoE on a specific VLAN (e.g., VLAN 35). In that case, you need to create a VLAN interface first and then configure PPPoE on top of it. NetworkManager supports this through the interface: ifname enp3s0.35. With systemd-networkd, you define a [VLAN] section in a separate .netdev file.
Interface naming – as mentioned, predictable names like enp3s0 are standard now, but be aware that some USB-to-Ethernet adapters might still use ethX. Using ip link or nmcli dev status to verify is the first step.
Troubleshooting with Modern Tools
If things don’t work, ppp0 interface won’t appear. Use journalctl -fu NetworkManager to see real-time logs when connecting. For systemd-networkd, networkctl status and journalctl -u systemd-networkd are your friends. The classic pppoe-discovery (from the rp-pppoe package) can still help verify that the modem is in bridge mode and that a PPPoE access concentrator is reachable.
A Practical Note on Connection Persistence
Both NetworkManager and systemd-networkd handle automatic reconnection after sleep or reboot. With NetworkManager, ensure the connection profile has “Automatically connect” checked. For systemd-networkd, it’s the default if the [Network] section includes KeepConfiguration=yes.
The shift from pppoeconf to NetworkManager/systemd-networkd reflects the broader move toward modular, service-based network management. The command-line tools have become more powerful and scriptable, making automation easy.