Stacking a VPN, Tor and an application proxy feels like multiplying privacy, and it multiplies the number of places a connection can die. The usual result is a browser that spins while three tools each report themselves healthy. Changing all three settings at once then removes the only clue you had about which one is lying.

Draw the intended path first, in order, naming which program opens each connection and which name gets resolved at each step.

Layers do not add up, they interact

A VPN before Tor means the Tor client's entry connection travels inside the tunnel. A VPN carried through Tor means the VPN client's own endpoint must be reachable over Tor, which is a very different requirement. A browser proxy adds yet another hop that the operating system knows nothing about. Three arrangements, three separate dependency lists.

Each arrangement changes what can be resolved, what can be carried, and who sees the first packet. Only one of them can be the configuration you meant.

Add the direct path to the diagram too. A fallback route, a split-tunnel exclusion or a proxy bypass can make a page load while quietly skipping the chain you wanted to test, and that success is more misleading than the failure.

Order decides what can be carried

Tor carries TCP streams through its SOCKS interface, and a client that asks the proxy to resolve the hostname keeps the lookup inside the circuit. UDP does not travel that way in ordinary configurations, which is why a WireGuard tunnel cannot be nested inside Tor without an extra TCP relay in the middle.

OpenVPN can be forced to TCP, so that arrangement is at least describable. It is also slower and more fragile, and the failure mode when it breaks looks identical to a blocked port. Expect to spend longer distinguishing those two than fixing either.

Resolution is the other half. With --socks5-hostname the proxy resolves the destination, while plain --socks5 asks the local resolver first and leaks the name outside the circuit. That single flag decides whether the name lookup belongs to the chain or to your ISP.

OrderWhat must resolve the endpointWhat usually breaks
VPN, then TorThe tunnel's resolverEntry guards blocked by the VPN provider's filters
Tor, then VPNThe SOCKS proxy, remotelyUDP transports, which Tor does not carry
App proxy on topThe application itselfProxy bypass rules and cached connections

Locating the first broken boundary

Test the stages in the order the packets travel, with harmless requests, and stop at the first one that fails. Note which command ran first, because the order is part of the evidence. Two commands separate a dead circuit from a dead exit:

curl -s --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/api/ip
curl -4 -s https://api.ipify.org; echo

The first reports whether a request completes through the SOCKS proxy at all, and the second shows the address the network currently presents. If the first fails and the second succeeds, the problem sits at or before the Tor client. If both succeed and the browser still fails, the application is using a different path than the shell.

A public-IP page also only describes the last visible exit. It cannot tell you how many hops preceded it, so pair it with the supported status output of each tool rather than treating one number as a diagram.

Deciding when to stop adding layers

If you cannot state what a layer contributes in one sentence, remove it. A chain whose purpose is unclear is a chain nobody can debug at three in the morning, and the privacy gain of an unexplained hop is usually smaller than the availability you lose.

If a layer does earn its place, test it alone first, then add the next one and confirm the path again with the same two commands. Restore the full chain before ordinary use, and keep TLS validation and authentication switched on; a certificate warning accepted to make a page load is a routing workaround, not a repair. Note the order you settled on while it is fresh.

Write that order down, including the resolver that answers at each stage. A working chain you can describe survives the next update, while a working chain you assembled by trial disappears with it. Add the date and the versions, so a later failure can be compared with a known-good state instead of argued about from memory. Ten lines in a text file save an evening of guessing.

פֿאַרבונדענע אַרטיקלען