PPPoE Connection Loss Requires Reboot (Does Not Work Disabling and Re-enabling Interface Only)

Hi all,

First time post here but I’m losing my mind because I’ve searched and found several other posts on this topic and none of the provided solutions work.

Device: hAp ac

Every ~36 hours my ISP assigns a new IP address and I lose internet connectivity via the PPPoE client.

I’ve seen, via other posts, that the only solution for this is to disable and re-enable the PPPoE client interface to re-establish the connection (even though other consumer devices don’t have this problem, like my ISP provided router).

I’ve done this via netwatch (ping 1.1.1.1 every 3s and run a reconnect script if it’s unreachable).

Well today my internet went down again and netwatch did its thing but the client interface simply goes into a loop of disconnecting and reconnecting. The only thing that fixes it is a reboot of the router. I don’t want to lose a minute of internet every 36 hours because this can happen during very inconvenient times (e.g. in a video call with a client).

I’m at the point where I’m going to chuck this thing and switch to the ISP provided router. Anyone have any suggestions or ideas on this front? I’d much appreciate any help.


Log snippet from when it went down today:

Mar/11/2025 22:24:48 netwatch,info event down [ type: simple, host: 1.1.1.1 ]
Mar/11/2025 22:24:48 system,info device changed by netwatch:type: simple, host: 1.1.1.1/script:pppoe-reconnect/action:18 (/interface set pppoe-out1 disabled=yes; /queue interface set pppoe-out1; /interface pppoe-client set pppoe-out1 disabled=yes)
Mar/11/2025 22:24:48 pppoe,ppp,info pppoe-out1: terminating… - administrator request
Mar/11/2025 22:24:48 pppoe,ppp,info pppoe-out1: disconnected
Mar/11/2025 22:24:48 pppoe,ppp,info pppoe-out1: initializing…
Mar/11/2025 22:24:48 pppoe,ppp,info pppoe-out1: connecting…
Mar/11/2025 22:24:48 system,info device changed by netwatch:type: simple, host: 1.1.1.1/script:pppoe-reconnect/action:19 (/interface set pppoe-out1 disabled=no; /queue interface set pppoe-out1; /interface pppoe-client set pppoe-out1 disabled=no)
Mar/11/2025 22:24:58 pppoe,ppp,info pppoe-out1: terminating… - disconnected
Mar/11/2025 22:24:58 pppoe,ppp,info pppoe-out1: disconnected
Mar/11/2025 22:24:58 pppoe,ppp,info pppoe-out1: initializing…
Mar/11/2025 22:24:58 pppoe,ppp,info pppoe-out1: connecting…
Mar/11/2025 22:25:08 pppoe,ppp,info pppoe-out1: terminating… - disconnected
Mar/11/2025 22:25:08 pppoe,ppp,info pppoe-out1: disconnected
Mar/11/2025 22:25:09 pppoe,ppp,info pppoe-out1: initializing…
Mar/11/2025 22:25:09 pppoe,ppp,info pppoe-out1: connecting…
Mar/11/2025 22:25:19 pppoe,ppp,info pppoe-out1: terminating… - disconnected
Mar/11/2025 22:25:19 pppoe,ppp,info pppoe-out1: disconnected
Mar/11/2025 22:25:19 pppoe,ppp,info pppoe-out1: initializing…
Mar/11/2025 22:25:19 pppoe,ppp,info pppoe-out1: connecting…

Never seen like this with MT on both v6 or v7, try to change cable first and re-observed

Sorry I Don’t know but a couple of thoughts.

  1. Perhaps you can have a scheduled task to take the link down and then restore it each night at some convenient out of hours time.
    (Hopefully the next 36 hours starts from this time)

  2. Perhaps instead of turning off the pppoe you could disable the underlying ethernet interface for a short while.
    (Maybe will help with the restart)
    Or perhaps both the pppoe and underlying interface.

If done out of hours it probably doesn’t matter so much if it takes a while to restart.

Normally, when the PPPoE goes down it should reconnect automatically without any issues.
When your ISP disconnects you it sends a PADT message or simply drop the session? Normally, in the second case in wich your ISP simply drops the session without seding the clients a PADT message to close it too, your router will close the connection via a keep alive timeout that uses LCP Echo requests/reply.
What is your keep alive timeout value set to?
Enable debugging logging on PPPoE for more details, but store it to memory instead of disk to not write a lot to flash and wear it.
When you can’t connect you should also perform a traffic capture on the underlying interface on wich PPPoE stands, normally the ether1 one in a basic config. Perform the capture withi the sniffer tool, save it to the router, then download the file and open it via Wireshark to see what is actually going on and why you can’t connect to your ISP.
Normally, when you want to establish a PPPoE session you send a PADI request and ISP replys with PADO and then the connection follows the normal stages of PADR, PADS, etc.

Hi rplant. I’ve done so now. Set it to both disconnect ether1 and the pppoe client if netwatch detects the link goes down and do so at 04:00 every day. It hasn’t been 36 hours yet since it last went down but I have logging enabled for 500k lines and logging rules for pppoe and packet, so will just have to wait and see if this fixes it I guess.

Thanks RaresC95. I enabled additional logging (just added packet and pppoe since I was worried about log file size) since making the post. Haven’t had another event yet so waiting still but will do the sniff when it goes down as well. The problem is if it happens during the day while I’m working from home, I don’t really have time to do so since I need to be back up ASAP.

Edit: I forgot to add that my keepalive is set to the default value of 10

In case this information is useful for any passersby:

interface pppoe-client print

name=“pppoe-out1” max-mtu=1492 max-mru=auto mrru=disabled interface=ether1 user=“xxxxx” password=“xxxxx” profile=default keepalive-timeout=10 service-name=“” ac-name=“” add-default-route=yes default-route-distance=1 dial-on-demand=no use-peer-dns=no allow=pap,chap,mschap1,mschap2

I experience exactly the same issue on my brand new RB5009.
After physical wan cable reconnect the router dials PPPoE and says “connected” but does not get v4/v6 addresses assigned. It helps to disable/enable the interface. So, I’ve come up with a dirty on-up script which helps

:global mklog do={
    :local msg $1
    :put $msg
    :log info message=$msg
}

:onerror err in={
$mklog "PPPoE hook: entered, waiting 5s";
delay 5;
:local wanip [/ip address get [/ip address find where interface="pppoe-out1"] address]
:local wanip6 [/ipv6 address get [/ipv6 address find where from-pool="blacknight"] address]
$mklog ( "PPPoE hook: have IPs: v4=" . $wanip . " v6=" . $wanip6 );

# force UDMP to reset it's wan interface
/interface set disabled=yes [find name=sfp-sfpplus1];
$mklog "PPPoE hook: SFP disabled, waiting 5s";
delay 5;
$mklog "PPPoE hook: about to enable SFP";
/interface set disabled=no [find name=sfp-sfpplus1];
$mklog "PPPoE hook: done";

} do={
        $mklog ("PPPoE hook: fail =" .  $err);
        $mklog "PPPoE hook: will reset PPPoE";
        /interface pppoe-client enable "pppoe-out1"
       $mklog "PPPoE hook: reset done";
}

Although this definitely needs to be fixed in the OS itself.