UPGRADING REMOVES PPPOE (13.1 => 13.2)

This is such a severe bug, it should be right there in the release notes.

Anyone using PPPoE to connect to the internet, download the rpm for rp-pppoe BEFORE running the upgrade!

I would’ve posted this sooner, but I just spend a day fiddling with a spare box to set it up as a router.

Get them here:

http://download.opensuse.org/distribution/13.2/repo/oss/suse/x86_64/rp-pppoe-3.11-4.1.3.x86_64.rpm
http://download.opensuse.org/distribution/13.2/repo/oss/suse/i586/rp-pppoe-3.11-4.1.3.i586.rpm

Install them with zypper as usual.

On 2014-11-06 14:56, a2043037 wrote:
>
> This is such a severe bug, it should be right there in the release
> notes.

Then please report the issue in Bugzilla.


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

What Bugzilla?

Found it (bugs.opensuse.org)

Though it says “Please confirm that your email address is valid by clicking here and following the instructions. If you have already done so, please log out and log back in.” and I can’t get past that.

On 2014-11-07 22:06, a2043037 wrote:
>
> Found it (bugs.opensuse.org)
>
> Though it says “Please confirm that your email address is valid by
> clicking here and following the instructions. If you have already done
> so, please log out and log back in.” and I can’t get past that.

It is the same login as here in the forum. Do not create another account.

openSUSE:Submitting bug
reports


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

Is that why i couldn’t find anywhere to set up my DSL account?

I just finished fixing this issue too. Luckily I decided to do a fresh install of 13.2 and dual-boot 13.1. While wicked is looking good, this is a huge regression for those needing PPPoE.

Good news is that the pppd that comes with the installation media in the ppp package is sufficient to start a PPPoE connection. No need for rp-pppoe. Bad news is that all the PPPoE networking ‘glue’ from 13.1 has been removed, so you need to make your own. I’ll try to list everything that I did below so that others can configure their own systems. Perhaps waiting for the next version of openSUSE and hoping for an upgraded wicked is the best strategy for those that don’t want to use NetworkManager for PPPoE connections.

Anyhow, here’s my steps to get a working PPPoE connection on boot using pppd and systemd:

  1. Create a pppd options file specific to your connection provider in /etc/ppp/peers, naming it something relevant to your connection (you can make multiple files if you use different PPPoE connections). My ISP is called TekSavvy, so I made a file called /etc/ppp/peers/teksavvy. There’s a PPPoE connection template in the /etc/ppp/peers directory called pppoe that you can start from. See the man page for pppd for details on the options that can be used. Remember that /etc/ppp/options is read first by pppd, so be sure to review the settings in that file too. My peer file looks something like:
# load plugin for PPPoE
plugin rp-pppoe.so
#
# Ethernet interface to use
enp0s20u3
#
# set user
user username@teksavvy.com
#
# set lower mtu/mru for PPPoE
mtu 1492
mru 1492
#
# set default route
defaultroute
#
# obtain DNS entries
usepeerdns
#
# never die
idle 0
maxfail 0
persist
passive
  1. Put your login information in /etc/ppp/chap-secrets and/or /etc/ppp/pap-secrets. Doesn’t hurt to put it in both files. Set the “client name” in those files to the same value that you set for the user option above. My secrets files look something like:
"username@teksavvy.com"  *  "password"
  1. Make an /etc/ppp/ip-up script to setup DNS and firewall stuff, possibly symlinking it to /etc/ppp/ipv6-up. For reference, the ip-up script from openSUSE 13.1 can be found here, within the sysconfig-0.81.5.tar.bz2 file in sysconfig-0.81.5/scripts/ip-up. That script from 13.1 was also symlinked to ipv6-up, ip-down, and ipv6-down, changing behaviour depending on what name it was called by. That script was a bit too complex for my taste, so I simplified it and split it into separate up and down scripts. My ip-up script looks like:
#!/bin/bash
# Automatic nameserver config with netconfig
{
    echo "INTERFACE='$IFNAME'"
    echo "IPADDR='$IPLOCAL'"
    echo "PTPADDR='$IPREMOTE'"
    echo "DNSSERVERS='$DNS1 $DNS2'"
} | /sbin/netconfig modify -s pppd -i "$IFNAME"

# Restart firewall if already enabled and active
/etc/sysconfig/network/scripts/firewall try-restart
  1. Make an /etc/ppp/ip-down script, possibly symlinking it to /etc/ppp/ipv6-down. My ip-down script looks like:
#!/bin/bash
# Automatic nameserver config with netconfig
/sbin/netconfig remove -s pppd -i "$IFNAME"

# Restart firewall if already enabled and active
/etc/sysconfig/network/scripts/firewall try-restart
  1. Make a service file for systemd to manage PPP connections and call it /etc/systemd/system/ppp@.service. The @ in the name lets you pass a parameter to the service, which you can use to specify which file in /etc/ppp/peers to use. I wanted my service to restart pppd if it fails. Here’s what my ppp@.service looks like:
[Unit]
Description=PPP link to %I
Documentation=man:pppd(8)
After=network-pre.target network.service SuSEfirewall2_init.service
Before=network.target multi-user.target shutdown.target SuSEfirewall2.service

[Service]
Type=forking
PIDFile=/var/run/ppp-%I.pid
ExecStart=/usr/sbin/pppd call %I linkname %I updetach nolog
ExecReload=/usr/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=10
SuccessExitStatus=1
RestartPreventExitStatus=3 4 5

[Install]
WantedBy=network-online.target multi-user.target
  1. Enable your new systemd ppp service. Recall that my peers file was /etc/ppp/peers/teksavvy, so to enable the service, I ran:
systemctl enable ppp@teksavvy.service
  1. Start your systemd ppp service. In my case, I used:
systemctl start ppp@teksavvy.service

I think that’s all I did to get my PPPoE connection working. Good luck to any others attempting to do the same.

This is a great thread, thanks to cdugal for his vital post!

My problems are
1/ when I start pppoe using systemctl, systemd seems to get bored and kill it, and then restarts it. If I simply start pppoe-start at the command line then it works.
2/ I need a script to run once the connection is up, to add an IPv6 address, add a default ipv6 address, and set the congestion algorhythm to fq_codel. however the /etc/ppp/ip-up.d/ppp script doesn’t get run

Short back story

I am very very annoyed about killed off the pppoe support. I use opensuse as the basis for my home router/firewall. I leave it a long time to do major upgrades so until yesterday I was still on 13.1. I decided the time was right to go to 13.2. Bad mistake! Once I did the upgrade I had no internet connection at all until I worked out the hard way to fix it!

All the PPPoE stuff no longer worked! In fact, I couldn’t bring up any network interfaces at all. I ended up writing a manual network start script for the local networks, but was totally lost without being able to do “ifup dsl0”. Luckily I’d already experimented with rp-pppd some time ago, and the packages were already installed. After hours of being down, trying all sorts of things, I managed to get pppoe to start manually and run my manual script to fix things after.

So I came looking for a solution to the missing PPPoE control and found this page.

Long version

My internet connection is a Huawei HG612 VDSL2 modem on a phone line carrying FTTC service, and it presents the link as PPPoE. My WAN interface thus has no IP address, and the “/etc/sysconfig/network/ifcfg-dsl0” defined the connection in conjunction with the /etc/sysconfig/network/providers/my-isp file. Life was easy! I wrote a simple script which ping’d a few things every few minutes and restarted the interface in case things went wrong.

So, I did the upgrade to opensuse13.2. And then rebooted the firewall/router. The network didn’t come up. “if-up anything” didn’t work, said the network was controlled by NetworkManager, but that all seemed broken. Wicked installation was incomplete. Yast allowed me to try and create a DSL connection but it didn’t work at all. I went round in circles. I tried rp-pppoe but it wouldn’t authenticate. I happened to have a USB drive installed with openSuse13.2, so I booted that, and no sign of any ability to create a DSL connection at all, nor ppp. I also tried booting ubuntu and fedora live, but the network control applets were useless.

My firewall/router has a backup installation of linux. I tried chrooting into it but systemd would complain it was running chroot and stopped things working. After hours wasted I went to bed. Where I live there’s little mobile phone signal, I use a femtocell and that relies on working internet. I managed to get a small amount of signal in the morning and read up on using rp-pppoe to refresh my mind, having used it long ago. I’d made a mistake with the configuration files and fixed them, and voila!

I found this forum entry and repeated the systemd file to start pppoe, and it worked. Well, mostly…

I followed the post of cdugall on opensuse 42.1 and I would point out a couple of things hoping to be useful:

I used /etc/ppp/options with default options

This is the list of the active options in /etc/ppp/options

PC:~ # grep -v ^# /etc/ppp/options | grep -v ^$
noipdefault
noauth
crtscts
lock
modem
asyncmap 0
nodetach
lcp-echo-interval 30
lcp-echo-failure 4
lcp-max-configure 60
lcp-restart 2
idle 600
noipx
file /etc/ppp/filters

The files /etc/ppp/ip-down and /etc/ppp/ip-up have to be set “executable” and don’t need to be linked to other files

The file /etc/ppp/peers/teksavvy needs to be modified setting-up correctly:

  • the name of your Ethernet interface (eth0, enp0s20u3, …)
  • the name of the user specified in /etc/ppp/pap-secrets and /etc/ppp/ip-up/chap-secrets

and adding the parameter replacedefaultroute under defaultroute

The correct file is this :

# load plugin for PPPoE
plugin rp-pppoe.so
#
# Ethernet interface to use
eth0
#
# set user
user username@teksavvy.com
#
# set lower mtu/mru for PPPoE
mtu 1492
mru 1492
#
# set default route
defaultroute
replacedefaultroute
#
# obtain DNS entries
usepeerdns
#
# never die
idle 0
maxfail 0
persist
passive