Part 1 argued that "make Fusion private" is four decisions at four layers, and that most organizations should spend their effort on federating Fusion to their identity provider rather than on a tunnel. If you have read it and concluded that you genuinely need the private path - your breakout addresses are unmanageable, your clients have no stable source address, or policy says the traffic must not cross the public internet - this is the build.
What follows is the architecture we implemented in a recent Broadpin project, for a customer running Fusion in the Oracle EU Sovereign Cloud: the exact route rules involved, and the one mistake that is very easy to make and remarkably hard to see. Every step below is self-service in the console - no service request is needed anywhere in this setup, which is a comparatively recent state of affairs.
Spoiler for the impatient: the return route on the service gateway.

The complete path, and the three configuration objects that make it work.
The path:
On-premises client
-> IPSec Site-to-Site VPN (or FastConnect)
-> Dynamic Routing Gateway (DRG)
-> transit VCN
-> Service Gateway
-> Oracle Services Network
-> FusionFusion does not live in your VCN and never will, so this is not peering. It is transit routing into the Oracle Services Network (OSN) through a service gateway, which is a documented OCI pattern:
https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/transitroutingoracleservices.htm
Note what is not in that list: no internet gateway, no NAT gateway, no public IP anywhere on your side. The transit VCN is genuinely a transit VCN. Oracle explicitly recommends not running workloads in it, and that advice is worth following - the moment you put VMs in there, VCN local routing starts competing with your transit rules and troubleshooting becomes miserable.
None of this replaces single sign-on. Everything below controls where a request may come from; it says nothing about who is making it. Federate the environment to your identity provider first, as described in part 1, and treat this as the second layer rather than the only one.
:quality(80))
:quality(80))







