🌐 Languages: English | Русский
Allows to set Redirect and Block rules to your Cloudflare and NextDNS accounts.
Ready-to-run via GitHub Actions. Video guide
General comparison: Cloudflare vs NextDNS
Both providers have free plans, but there are some limitations
- 100 000 DNS requests per day
- Ipv4 DNS requests are restricted by the only one IP. But you are free to use other methods: DoH, DoT, Ipv6
- 300 000 DNS requests per month (still more than enough for personal use)
- Slow API speed is restricted by 60 requests per minute. Takes significantly more time for script to save settings
- After signing up into a Cloudflare, navigate to Zero Trust tab and create an account.
- Free Plan has decent limits, so just choose it.
- Skip providing payment method step by choosing Cancel and exit (top right corner)
- Go back to Zero Trust tab
- Create a Cloudflare API token, from https://dash.cloudflare.com/profile/api-tokens
with 2 permissions:
Account.Zero Trust : Edit
Account.Account Firewall Access Rules : Edit
Set API token to environment variable AUTH_SECRET
- Get your Account ID from : https://dash.cloudflare.com/?to=/:account/workers
Set Account ID to environment variable CLIENT_ID
-
Generate API KEY, from https://my.nextdns.io/account and set as environment variable
AUTH_SECRET -
Click on NextDNS logo. On the opened page, copy ID from Endpoints section. Set it as environment variable
CLIENT_ID
Set environment variable DNS with DNS provider name (Cloudflare or NextDNS)
Each data source must be a link to a hosts file, e.g. https://raw.githubusercontent.com/Internet-Helper/GeoHideDNS/refs/heads/main/hosts/hosts
You can provide multiple sources split by coma: https://first.com/hosts,https://second.com/hosts
Set sources to environment variable REDIRECT
Script will parse sources, filtering out redirects to 0.0.0.0 and 127.0.0.1
Thus, parsing lines:
0.0.0.0 domain.to.block
1.2.3.4 domain.to.redirect
127.0.0.1 another.to.block
will keep only 1.2.3.4 domain.to.redirect for the further redirect processing.
- Redirect priority follows sources order. If domain appears more than one time, the first only IP will be applied.
Set sources to environment variable BLOCK
Script will parse sources, keeping only redirects to 0.0.0.0 and 127.0.0.1.
Thus, parsing lines
0.0.0.0 domain.to.block
1.2.3.4 domain.to.redirect
127.0.0.1 another.to.block
will keep only domain.to.block and another.to.block for the further block processing.
- You may want to provide the same source for both
BLOCKandREDIRECTfor Cloudflare. - For NextDNS, the best option might be to set
REDIRECTonly, and then manually choose any blocklists at the Privacy tab.
Previously generated data will be removed. Script recognizes old data by marks:
- Name prefix for List: Blocked websites by script and Override websites by script
- Name prefix for Rule: Rules set by script
- Different Session id. Session id is stored in a description field.
After removing old data, new lists and rules will be generated and applied.
If you want to clear Cloudflare block/redirect settings, launch the script without providing sources in related environment variables. E.g. providing no value for environment variable BLOCK will cause removing old related data: lists and rules used to setup blocks.
For REDIRECT:
- Existing domain will be updated if redirect IP has changed
- If new domains are provided, they will be added
- The rest redirect settings are kept untouched
For BLOCK:
- If new domains are provided, they will be added
- The rest block settings are kept untouched
Previously generated data is removed ONLY when both BLOCK and REDIRECT sources were not provided.
Step-by-step video guide: REDIRECT for NextDNS
- Fork repository
- Go Settings => Environments
- Create New environment with name
DNS - Provide
AUTH_SECRETandCLIENT_IDto Environment secrets - Provide
DNS,REDIRECTandBLOCKto Environment variables
- The action will be launched every day at 01:30 UTC. To set another time, change cron at
.github/workflows/github_action.yml - You can run the action manually via
Run workflowbutton: switch to Actions tab and choose workflow named DNS Block&Redirect Configurer cron task