Configure routes
Magic Networking uses a routing table to steer your traffic from Cloudflare's global network to your connected networks via next-hop. You can add entries to the Magic routing table through static route configuration or routes learned from BGP peering (only available over Direct CNI).
Refer to Traffic Steering for more information about all the technical aspects related to:
- Routes' priorities and weights
- Regional scoping of traffic to reduce latency
- BGP peering
- Automatic Return Routing (ARR)
The following IPv4 address ranges are allowed in the Magic Routing table:
- RFC 1918 address space, specifically
10.0.0.0/8,172.16.0.0/12, and192.168.0.0/16.
When using Magic WAN and Cloudflare Tunnel together, remember to consider the IP ranges utilized in the static routes of Cloudflare Tunnel when selecting static routes for Magic WAN. For more information, refer to Cloudflare Tunnel.
For prefixes outside RFC 1918 contact your Cloudflare customer service manager.
- Go to Magic WAN's Configuration page.
- From the Routes tab, select Create to add a new route.
- Enter a descriptive name for your route in Description.
- In Prefix, enter your range of IP addresses. For example,
10.10.10.100/24. - In Tunnel/Next hop, select a tunnel for your route from the tunnels you created in Configure tunnel endpoints.
- Choose the Priority for your route. Lower numbers have higher priorities.
- (Optional) Choose a Weight for your route. Refer to Set priority and weights for static routes for examples.
- (Optional) If you need to scope your route to a specific region, you can do it in Region code.
- (Optional) We highly recommend testing your route before adding it by selecting Test routes.
- Select Add routes.
Create a POST request using the API to create one or more static routes.
Example:
Required API token permissions
At least one of the following token permissions
is required:
Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "nexthop": "<IP_NEXT_HOP>", "prefix": "<YOUR_IP_PREFIX>", "priority": 0, "id": "023e105f4ecef8ad9ca31a8372d0c353", "description": "<ROUTE_DESCRIPTION>", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 }'{ "errors": [ { "code": 1000, "message": "message" } ], "messages": [ { "code": 1000, "message": "message" } ], "result": { "routes": [ { "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "id": "023e105f4ecef8ad9ca31a8372d0c353", "description": "New route for new prefix 203.0.113.1", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } ] }, "success": true}- In Routes, locate the route to modify.
- Select the three dots next to it > Edit.
- Enter the updated route information.
- (Optional) We highly recommend testing your route before adding it by selecting Test routes.
- Select Edit routes.
Create a PUT request using the API to update one or more static routes.
Example:
Required API token permissions
At least one of the following token permissions
is required:
Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes/$ROUTE_ID" \ --request PUT \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "nexthop": "<IP_NEXT_HOP>", "prefix": "<YOUR_IP_PREFIX>", "priority": 0, "id": "023e105f4ecef8ad9ca31a8372d0c353", "description": "<ROUTE_DESCRIPTION>", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 }'{ "errors": [ { "code": 1000, "message": "message" } ], "messages": [ { "code": 1000, "message": "message" } ], "result": { "modified": true, "modified_route": { "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "id": "023e105f4ecef8ad9ca31a8372d0c353", "description": "New route for new prefix 203.0.113.1", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } }, "success": true}- In Routes, locate the static route to delete.
- Select the three dots next to it > Delete.
- Confirm the action by selecting the checkbox and select Delete.
Create a DELETE request using the API to delete a static route.
Example:
Required API token permissions
At least one of the following token permissions
is required:
Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes/$ROUTE_ID" \ --request DELETE \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "errors": [ { "code": 1000, "message": "message" } ], "messages": [ { "code": 1000, "message": "message" } ], "result": { "deleted": true, "deleted_route": { "nexthop": "203.0.113.1", "prefix": "192.0.2.0/24", "priority": 0, "id": "023e105f4ecef8ad9ca31a8372d0c353", "description": "New route for new prefix 203.0.113.1", "scope": { "colo_names": [ "den01" ], "colo_regions": [ "APAC" ] }, "weight": 0 } }, "success": true}Automatic Return Routing (beta) allows Cloudflare to track network flows from your Magic WAN connected locations, ensuring return traffic is routed back to the connection where it was received without requiring static or dynamic routes. This functionality requires the new Unified Routing mode.
To enable ARR:
- Follow the Add tunnels information to learn how to create an IPsec or GRE tunnel.
- On the tunnel's options, select Automatic return routing.
- Select Add tunnels to save your changes.
Create a POST request to create an IPsec or GRE tunnel with ARR enabled. For example:
Required API token permissions
At least one of the following token permissions
is required:
Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/ipsec_tunnels" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "cloudflare_endpoint": "<CLOUDFLARE_ENDPOINT>", "interface_address": "<INTERFACE_ADDRESS>", "name": "IPsec_1", "customer_endpoint": "<CUSTOMER_ENDPOINT>", "description": "Tunnel for ISP X", "psk": "<PSK>", "automatic_return_routing": "true" }'BGP peering is available when using a Direct CNI as an on-ramp.
The Magic routing table is managed by the customer. You can select both the Cloudflare-side ASN (Autonomous System Number) and the ASN for your customer device. The customer device ASN can be 2-byte or 4-byte.
By default, each BGP peering session uses the same Cloudflare-side ASN to represent peering with the Magic WAN routing table. This ASN is called the CF Account ASN and is set to 13335. You can configure this to a private 2-byte ASN (for example, any value between 64512 and 65534).
To set this ASN:
- Go to Magic WAN's Configuration page.
- Go to BGP configuration.
- In CF Account ASN, enter Cloudflare's ASN.
- Select Update.
Magic WAN customers should also be aware of the following:
- The customer chooses their device ASN, which must be different to the Cloudflare-side ASN.
- The Cloudflare side ASN will be included in the
AS_PATHof announced routes to any BGP enabled interconnect. - The customer-announced
AS_PATHis transitive between interconnects — meaning the origin (customer) ASN is visible in theAS_PATHof routes received from Cloudflare via BGP. Due to default BGP loop prevention mechanisms, a router will reject any route that contains its own ASN in theAS_PATH. For example, if two Magic WAN-connected sites both useASN 65000, site A will not accept routes from site B, and vice versa, because each site sees its own ASN in the advertisedAS_PATH.
To enable routing between private networks over Magic WAN, you should either:- Assign a unique ASN to each site/network, or
- Configure your edge CPE to accept BGP routes that include its own ASN in the
AS_PATH.
You need to configure two ASNs:
- The Cloudflare account-scoped ASN named CF Account ASN.
- One ASN for each interconnect you want to configure with BGP.
If you have already set up your Cloudflare account ASN, skip steps two and three below.
- In the Cloudflare dashboard, go to Magic WAN's Configuration page.
- Go to BGP configuration.
- In CF Account ASN, enter Cloudflare's ASN.
- Go to Interconnects.
-
Locate the Direct CNI interconnect to configure with BGP > select the three dots next to it > Configure BGP.
-
In Customer device ASN, enter the ASN for your network.
-
In MD5 key, you can optionally enter the key for your network. Note that this is meant to prevent accidental misconfigurations, and is not a security mechanism.
-
(Optional) In Advertised prefix list, input the additional prefixes automatically assigned by Cloudflare during the creation of the CNI interconnect. These prefixes advertise alongside your existing routes. Leave this blank if you do not want to advertise extra routes.
Typical prefixes to configure here include:- A route to
0.0.0.0/0, the default route — to attract all Internet-bound traffic if using Magic WAN with Gateway. - A route to
100.96.0.0/12, the portion of CGNAT space used by default with WARP clients.
- A route to
-
Select Save.
Now that you have configured your tunnels and routes, the next step is to create a site.
Sites represent the local network of a data center, office, or other physical location, and combine all on-ramps available there. Sites also allow you to check, at a glance, the state of your on-ramps and set up health alert settings so that you get notified when there are issues with the site's on-ramps.
Refer to Set up a site for more information.
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Directory
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- © 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark
-