The IPsec tunnel establishes, the client shows a protected peer, and then the connection dies before anything reaches the private subnet. That gap is PPP doing its own work: link options, user authentication and address assignment all happen after the encrypted tunnel exists. Nothing about a successful phase-one exchange supplies a password or an inner address. Read the phases in order and the failure usually names itself.

The Tunnel Is Only the First Layer

L2TP carries PPP frames inside an IPsec-protected tunnel, which means two independent negotiations must succeed before a packet can be routed. The outer one proves both ends agree on keys and identities. The inner one decides link parameters, whether the user authenticates, and what address the client receives.

A failure inside PPP looks like a broken tunnel in every client that reports a single status light. Treating it as a tunnel problem leads to re-keying, restarting services and eventually replacing a shared secret that was never wrong. The useful distinction is cheap: if the peer exchange completed and the client moved on to a username prompt or an authentication stage, the tunnel is fine. Everything after that point belongs to PPP.

Read the Last Phase That Succeeded

Walk the log forward and stop at the first phase that did not complete. LCP comes first, then authentication, then IPCP for IPv4 parameters.

sudo journalctl -u xl2tpd -b --no-pager | tail -n 40
sudo journalctl -b --no-pager | grep -i -E 'pppd|lcp|chap|ipcp'
ip -4 address show ppp0

An LCP timeout means the two ends never agreed on basic link options, which is a profile mismatch or a blocked inner protocol rather than a bad password. An explicit authentication rejection is the opposite case: the link came up and one side refused the credentials. An IPCP timeout after successful authentication points at address pools or server policy. Each of those has a different owner and a different repair, which is why the phase matters more than the final error text.

Keep the log excerpt together with the phase name in the ticket. A pasted tail without the phase boundary invites the next reader to guess, and guessing here costs an hour.

Agreement Between the Client and the Server

Both ends must accept the same authentication method, and a saved profile can request one that the server retired last quarter. Managed deployments also hide the server side, where the rejection reason is usually recorded against the user rather than the device.

Enable one supported method rather than every legacy option, because a client offering five methods obscures which one failed. Ask the administrator for the server-side policy and the exact rejection, which does not require anyone to publish a password. A legacy method enabled to rescue one client tends to spread to every profile that copies the file.

Verify the Address, Not the Login

A completed login is not a usable session. IPCP negotiates the inner address, and an exhausted pool or a policy that denies the client can still leave a connected tunnel with nothing to route.

ip -4 address show ppp0
ip route get 10.52.9.1
ping -c 2 10.52.9.1

Check the inner address first, then the route and resolver for the resource you actually need. An inner address is not the public exit a website reports, and confusing the two sends people hunting for a leak that is not there. Test the private resource by address before testing by name, so a DNS failure is not mistaken for a routing failure.

Write the phase, the method and the address into one note and date it. If the same account fails again in a month, that note is the difference between a five-minute check and a fresh investigation. Failures at different phases are different incidents, even when the client shows a single dialog.

Pennadoù liammet