The VPN Providers integration provides provides a list of IP address ranges for well known VPN providers.

```json title="Example"
[{"id": "1.116.0.0/15"}, {"id": "1.12.32.0/23"}, {"id": "1.14.0.0/15"}]
```

he external data sources we provide are meant to be examples and inspiration for users to create their own data sources. We won't maintain these integrations in perpetuity, and changes to the APIs they interact with may break them in the future.

The [datasource](https://github.com/pomerium/datasource) project is open-source, and if the community wishes to provide contributions to keep it working in the future, we will shepherd those updates.

## Install

No installation is necessary for the VPN Providers external data source. It is provided from Github's CDN available at [https://raw.githubusercontent.com/pomerium/vpnlist/main/vpnlist.json](https://raw.githubusercontent.com/pomerium/vpnlist/main/vpnlist.json).

## Configure Pomerium Enterprise Console

Create an external data source:

1. In the Pomerium Enterprise Console, navigate to **CONFIGURE** → **External Data** and click **+ ADD EXTERNAL DATA SOURCE**.

2. Fill out the following fields:

   | Field | Content |
   | :-- | :-- |
   | URL | https://raw.githubusercontent.com/pomerium/vpnlist/main/vpnlist.json |
   | Record type | pomerium.io/VPNNode |
   | Foreign Key | request.ip |
   | Polling Min Delay | `1h` |
   | Polling Max Delay | `4h` |

3. Click **SAVE EXTERNAL DATA SOURCE**.

A policy excluding VPN nodes would look something like this:

**Builder:**

\[VPNNode Policy in the Builder view]

**Editor:**

```yaml showLineNumbers
deny:
  or:
    - record:
        contains: .
        field: id
        type: pomerium.io/VPNNode
```
