Your tunnel is up, the internal wiki loads, and Remote Desktop still refuses to connect. That combination is normal, because the VPN supplies a route to the host while the desktop service has to be listening, permitted by its own firewall, and willing to authenticate the account. Four failure stages sit between a working tunnel and a usable session, and each one fails with a different message. Read the message first, since it names the stage.

Four failures that look like one

The stages are ordered: the name resolves to the private address the design intends, the port answers a TCP handshake, the host accepts the connection under its own policy, and the session login succeeds. Each stage makes the next one untestable, which is why changing RDP settings before the network is settled produces noise. The symptom looks identical from the user's side in all four cases. Only the client's message separates them.

A working internal website proves none of the four. It proves that a host on the same network answered on a different port with a different service. Treat that as evidence about routing and nothing more.

Test in order and write the result down. Jumping to the login screen because the port answered is how an afternoon gets spent on a firewall problem that the first step already located.

Is anything listening on 3389?

Start with the name, because a name that resolves to the wrong address invalidates every later test. Ask the tunnel's resolver what the name means, then compare the answer with the private address the design intends rather than with a successful response. A name that resolves to a public address is the whole problem, and no RDP change will fix it:

nslookup desktop.corp.example
Resolve-DnsName desktop.corp.example

Then test the port rather than the host. A completed TCP handshake on 3389 separates reachability from everything above it:

Test-NetConnection -ComputerName desktop.corp.example -Port 3389

Run that test from the LAN and from the tunnel, because a difference between the two results localises the fault to the VPN path. Two firewalls sit in the path and they are easy to conflate: the network has to permit the client's tunnel address to reach the host, and the host's own firewall has to permit that same source on the listening port. A rule scoped to the LAN subnet does not cover the VPN client pool, which is the most common cause of a timeout that only remote users report. Check the scope rather than the existence of the rule.

The return path deserves the same check. Replies need a route back to the client pool rather than to the LAN, and a translation in front of the host changes the source your log will show. If the port answers one way and not the other, the missing half is usually the return route.

Read the message before you read the config

The third stage is the host refusing the connection at its own policy, which often looks like a port that opens and closes immediately. Something answered, and that is useful information rather than silence. If the handshake completed and the session died at once, the network is fine and the host is deciding. Look at Remote Desktop permissions before touching the network again.

The feature can be enabled for the machine while access is restricted to specific groups, and the listener can be bound in ways that exclude the address you arrived on. Network Level Authentication adds a gate that fails before the desktop loads, and its error text differs from a wrong password. Compare the client's message with the host's event log, since the message names the gate and the log names the account.

Session login is its own boundary

Authentication belongs to the desktop service, not to the VPN. The tunnel's identity and the desktop account are separate credentials with separate lockout policies, so a working tunnel proves only that the tunnel accepted you. Locking the desktop account does not disturb the tunnel, and the reverse is also true.

Keep both intact. When the private route is missing, fix the route, because publishing the listener to the internet trades a reachability bug for an exposed desktop. Do not weaken the session's identity checks to get past a certificate warning that appeared at the same time either. A self-signed certificate on an RDP listener produces a warning by design, so accepting it is a decision rather than a step.

Count the attempts before retrying. Desktop lockout thresholds count failed logins separately from VPN failures, and a client that retries on a timer can trip the threshold while you are still editing a rule. That is the same parallel-retry mechanism that locks accounts after a password change.

What the session can move, and where it stays

Learn the approved sign-out workflow before you need it. Closing the window may only disconnect the view while the session keeps running under its configured policy, which matters on a shared or audited host. Sign out from inside the session when the policy expects that.

Then decide what the session may carry, because clipboard, redirected drives, printer redirection and file transfer all move data between the local and remote systems where policy permits. A published application running on the far side is not automatically a no-download boundary, and a session that looks read-only can still carry a clipboard. Test the real task rather than the connection: open the file, use the application, and confirm the redirection you need. The Microsoft guidance on reaching a remote desktop from outside describes the supported exposure options, and it is a better reference than a public listener added under pressure.

Pennadoù liammet