Configuring PPPoE Broadband Internet on Linux

Hi everyone, I just installed Ubuntu (the latest LTS) and I’m stuck on setting up my broadband connection. My ISP requires a username and password for the WAN connection (PPPoE). I have a Huawei xDSL modem connected directly to my PC via Ethernet. In Windows, it’s straightforward, but in Linux I’m lost. I tried the Network Manager GUI but didn’t see a PPPoE option. Do I need to install something like pppoeconf? Or can I set it up via nmcli? Any step-by-step guidance would be appreciated.

Steps I’ve seen online but not sure:

  • Using sudo pppoeconf in terminal (seems deprecated?)
  • Creating a connection in Network Manager manually
  • Configuring /etc/network/interfaces (but that’s for ifupdown, not netplan)

I’d prefer a method that works with the modern Ubuntu (using netplan or NetworkManager). Also, my modem is in bridge mode, so the PC does the PPPoE dialing. Thanks!

Topic Summary: Modern PPPoE configuration on Linux using NetworkManager, nmcli, and systemd-networkd, covering bridge mode, VLAN tagging, MTU issues, and troubleshooting for Ubuntu and other distributions.

Hey, I’ve set up PPPoE many times. The easiest way on modern Ubuntu (18.04+) is to use NetworkManager. Open the settings, go to Network, and click the ‘+’ to add a new connection. Choose ‘DSL/PPPoE’ as the type (if missing, install network-manager-pppoe). Then enter your username and password. Make sure your ethernet interface is set to ‘Wired’ with DHCP disabled if the modem is in bridge mode.

Alternatively, if you prefer CLI, nmcli works well:

nmcli connection add type pppoe con-name "MyDSL" ifname eth0 username yourusername password yourpassword

Replace eth0 with your actual interface name. Then bring it up with nmcli connection up MyDSL. This method persists across reboots.

The old pppoeconf is indeed obsolete; it used the deprecated pppd directly and doesn’t integrate with NetworkManager. Stick with NM and you’ll have no issues.

Adding to what rvalkass said, I had a similar Huawei modem and it worked fine with NetworkManager after installing the network-manager-pppoe plugin (you might need plasma-nm if using KDE). One thing: sometimes the interface name might be something like enp3s0 instead of eth0. Use ip link show to list your interfaces.

Also, if you ever have issues where the connection drops randomly, check your modem’s configuration. Some Huawei modems need to be set to ‘Bridge’ mode explicitly. I remember wasting hours before realizing my modem was still in router mode. Once I switched to bridge, PPPoE worked flawlessly.

Hope you get it sorted quickly!

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.