With service bindings, CDN1 customers using BYOIP can take the same prefix they have onboarded to Cloudflare and use it to selectively route traffic on a per-IP address basis to Spectrum2, or vice versa. This means:
You can upgrade individual IPs within a CDN prefix to a Spectrum IP. For example, if you have a CDN prefix 203.0.113.0/24, you can upgrade 203.0.113.1 to Spectrum.
You can upgrade individual IPs within a Spectrum prefix to a CDN IP. For example, if you have a Spectrum prefix 203.0.113.0/24, you can upgrade 203.0.113.1 to CDN.
This guide will use the first example and consider a prefix that was onboarded to the CDN, with a few IPs upgraded to Spectrum.
Before you begin
Cloudflare strongly recommends implementing service bindings through an aggregated CIDR block, as it is more efficient than adding discrete bindings for non-contiguous CIDR blocks.
Add one discrete Spectrum service binding for 203.0.113.16 with a /29 netmask.
Once a service binding is created (or deleted), it will take four to six hours to propagate across Cloudflare's global network. Services for the IP addresses in scope will likely be disrupted during this window.
Make a GET request to the List Services endpoint and take note of the id associated with the Spectrum service.
Use the List Prefixes endpoint and take note of the id associated with the prefix (cidr) you will configure.
At this point, continuing the example, you should have a mapping similar to the following:
Variables
Description
{service_id}
The ID of the Spectrum service within Cloudflare.
Example: 969xxxxxxxx000xxx0000000x00001bf
{prefix_id}
The ID of the CDN prefix (203.0.113.0/24) you want to configure.
Example: 6b25xxxxxxx000xxx0000000x0000cfc
To confirm you currently have a CDN service binding and that it spans across your entire prefix, make a GET request to the List Service Bindings endpoint. Replace the {prefix_id} in the URI path by the actual prefix ID you got from the previous step.
Make a POST request to the Create service binding endpoint, indicating the IP address you want to bind to Spectrum. Specify the corresponding network mask as needed.
Continuing the example, 203.0.113.100/32 designates an IP address that is within the CDN prefix 203.0.113.0/24.
Replace the {prefix_id} in the URI with your prefix ID from previous steps. Within the request body, the cidr value should correspond to the IP address or subnet that you are configuring for use with Spectrum.
In the response body, the initial provisioning state should be provisioning.
{
"errors":[],
"messages":[],
"success":true,
"result":{
"cidr":"203.0.113.100/32",
"id":"<SERVICE_BINDING_ID>",
"provisioning":{
"state":"provisioning"
},
"service_id":"<SERVICE_ID>",
"service_name":"<SERVICE_NAME>"
}
}
You can periodically check the service binding status using the List Service Bindings endpoint.
3. Verify all service bindings
After the propagation time (four to six hours), the List Service Bindings endpoint should return all service bindings that are part of the prefix - in this case, CDN and Spectrum.
If you already use BYOIP with CDN, you might be able to skip this step. However, if you are using this guide to upgrade a few IPs from a Spectrum prefix to the CDN, consider the following sections on address maps and DNS records.
Address maps
Use address maps to specify which IPs should be used by Cloudflare in DNS responses when a record is proxied.
You can choose between two different scopes:
Account-level: uses the address map for all proxied DNS records across all of the zones within an account.
Zone-level: uses the address map for all proxied DNS records within a zone.
Make sure you have the correct Key/Token and permissions.
DNS records
While the DNS record proxy status and address map will determine how Cloudflare's authoritative DNS responds to requests for your hostnames, the IP addresses specified in A/AAAA records will determine how Cloudflare reaches the configured origin.
Complete the required fields, setting the Proxy status to proxied.
Select Save.
To create records with the API, use a POST request. For field definitions, select a record type under the request body specification.
Example
Type
Name
IP address
Proxy status
TTL
A
www
203.0.113.150
Proxied
Auto
At this point, if an address map for a zone example.com specifies that Cloudflare should use 203.0.113.100 for proxied records and the above record exists in the same zone, you can expect the following:
Cloudflare responds to DNS requests for www.example.com with 203.0.113.100.
Cloudflare proxies requests through the CDN and then routes the requests to the origin server 203.0.113.150.
As the HTTP response egresses the Cloudflare network back to the client side, the source IP address of the response becomes 203.0.113.100 (the IP address that the HTTP request originally landed on).
Example
Assuming 203.0.113.100 was also the origin IP, the DNS record would look like the following:
Type
Name
IP address
Proxy status
TTL
A
www
203.0.113.100
Proxied
Auto
Spectrum
Configuring Spectrum to use your own IP address is only possible via the Cloudflare API.
The origin_direct field takes the origin IP address, while edge_ips allows you to define which IP address from your BYOIP prefix Cloudflare should use to process requests for your Spectrum application.