Chaining two VPNs is usually sold as extra encryption, which is the least interesting thing it does. The real product is a second authorization decision, made by a different owner against a different set of resources. If both stages accept the same credential and reach the same destinations, the inner gate is decoration with extra latency. Deciding whether that second decision is worth its operational cost starts with naming what each gate actually verifies.

One tunnel, then a second decision

The outer gate answers a broad question: is this an approved employee device, and may it reach the general internal network. The inner gate answers a narrower one: does this identity carry the maintenance entitlement, and may it reach these specific management endpoints. Those are different questions with different owners, and neither one implies the other. A path existing through both stages is not authority to use what sits behind the second one. Reaching the far entrance proves that a route works, and nothing more.

The principle is old and still ignored: network location argues for nothing by itself. The NIST zero-trust architecture abstract puts it plainly, rejecting implicit trust that follows from where a connection came from or who owns the network. Applied here, arriving at the inner entrance is a precondition for its resources, never the permission to use them.

Write down what each gate verifies

For every stage, record the identity it checks, the destinations it permits, and the conditions under which it can be skipped. The outer gate may legitimately allow ordinary internal services plus the inner gateway's listener, and nothing else. The inner gate may require a role claim and permit only the management addresses named in the change record. The application at the far end keeps the last word over which operations that role may perform, so the chain adds a gate without replacing application authorization.

GateIdentity it checksDestinations it permitsHow it could be skippedWhen it is removed
Outer gatewayEmployee account plus a managed device postureGeneral internal services and the inner gateway's listenerAny alternate path to the same destinations, including a public listenerOrdinary work stops and the inner stage becomes unreachable
Inner gatewayA maintenance entitlement or role claim on that identityThe named management addresses in the change recordDirect routes from the outer domain to those addressesMaintenance access ends while general access stays as it was

Two omissions break the design quietly. If the outer domain already reaches every sensitive destination directly, the inner gate is optional rather than mandatory. If a public listener or a second private route offers the same access, the intended path is one option among several. Assign an owner to each rule set as well, and make their contract name destination services, permitted source identities, private DNS, address translation and who answers when the handoff fails. An address trusted on the outer network must never stand in for the inner domain's authorization.

Test the denial cases, not the happy path

A successful connection through both gates proves very little, because that is the case everyone tested during the rollout. The interesting cases are the ones where one stage passes and the other refuses. Three of them cover most of the risk, and each has an expected outcome that can be checked rather than argued.

With general access approved and the sensitive role absent, ordinary work must continue while the sensitive destination is refused. Approve both stages and the reachable set should be the maintenance endpoints named in the change record, nothing wider. With the entitlement revoked mid-session, the agreed session policy has to take effect without tearing down unrelated general access. Whether that revocation ends an existing session at once or at the next reauthentication is a policy decision the contract should already contain. Whoever wrote the acceptance cases is not the person who should be interpreting them during an incident.

curl --fail --silent --max-time 5 https://maint.corp.internal/health || echo "denied as expected"

Count the dependencies you added

Every extra stage adds a component that can fail and a route that must nest correctly inside the outer tunnel. During a partial failure the outer path stays up while the inner one is unreachable, so the user sees a healthy VPN icon beside a service that never answers.

Check the routes and the blocking rules under failure rather than only in the normal case. A default route pushed by the outer tunnel can capture the inner gateway's own address, which turns the second stage into a connection that establishes and then drops. Record what is supposed to stay blocked while the inner tunnel is gone, because an accidental fallback around it is worse than a clean outage. Use the same probe shape on both hops, so each is measured rather than assumed. Two connected status indicators establish neither nesting nor isolation.

What the second gate cannot buy you

Ask whether the two gates share a credential, a certificate authority or a management plane. Where they do, they also share their most important failure modes, and the second stage costs more than the independence it appears to add. Separate cryptographic sessions do not create separate administrative controls.

Keep the inner gate while it enforces a requirement you can state and test, such as a role the outer domain never checks. Drop it when its only job is to re-authenticate the same identity against the same destinations. Either way, record the requirement, the owner and the failure behaviour together, so the next review argues about the requirement rather than about the diagram.

Zvinyorwa zvakafanana