Personal Bridge

Overview

Personal Bridge is a multi-hop VPN technology that provides enhanced privacy and security by routing your traffic through multiple intermediary servers before reaching the internet.

Important Notice

Personal Bridge servers must be installed, configured, and maintained by clients themselves. Pango does not provide any Personal Bridge nodes or infrastructure. Clients are responsible for:

  • Setting up their own Personal Bridge server instances

  • Maintaining these instances and ensuring compatibility

  • Resolving any incompatibilities between current/future SDK versions and different versions of Personal Bridge

The Personal Bridge technology is provided "as is" without any guarantees of compatibility with future SDK releases.

General Approach

The server intended to be used as intermediate Wireguard server for multihop connections:

A chain of servers can be of any length, even allowing circular routing:

Setup Resources

All necessary binaries and instructions to set up a personal bridge (server side) can be found in our Github repository. The repository contains everything you need to configure and deploy your own Wireguard intermediate server.

Client Implementation Examples

Android

To configure Android SDK to connect using Personal Bridge nodes:

val builder = SessionConfig.Builder()
               .withTransport(WireguardTransport.TRANSPORT_ID)
               .withPersonalBridgeNodes(listOf("node url"))

Apple

In order to use Personal Bridge feature, user needs to pass list of node urls to ComposedConfiguration that is passed in SDK initializer.

var composedConfig = ComposedConfiguration(availableTypes:
                            [
                                .hydra(extensionBundleID: ProvidersID.hydra.rawValue),
                                .ipsec,
                                .wireguard(extensionBundleID: ProvidersID.wireguard.rawValue)
                            ],
                        carrierID: carrierID,
                        groupData: Self.groupData,
                        trafficCountersFetchInterval: 3.0,
                        fireshieldConfig: makeFireshieldConfig(),
                        personalBridgeNodes: personalBridgeNodes)

Parameters

  • personalBridgeNodes: An optional parameter that takes either:

    • nil (default): Uses standard node selection logic

    • [String]: An array of URL strings pointing to custom nodes

Windows

One new property should be filled: List<string> PersonalBridgeNodes

When option is null or empty list, then Personal Bridge feature is disabled.

var startVpnRequest = new StartVpnRequest
{
    AccessToken = loginResponse.AccessToken,
    Credentials = getCredentialsResponse.Credentials,
    VpnNode = getLocationsResponse.VpnCustomLocations.FirstOrDefault(),   
    PersonalBridgeNodes = ["https://vpnlite-test-1.pango-internal.com"],
};

var startVpnResponse = await sdk.StartVpnAsync(startVpnRequest).ConfigureAwait(false);
if (startVpnResponse.Result == ResponseResult.Ok)
{
    Console.WriteLine(startVpnResponse.Message);
}

Last updated

Was this helpful?