Querying DNS Resolution Results in Different Regions Worldwide.
English | 简体中文
Vercel https://vercel.dns.surf
Cloudflare https://cloudflare.dns.surf
Vercel's Edge Functions support custom deployment regions. By querying DNS records through DoH, we can obtain global DNS resolution results. Theoretically supports 18 countries or regions.
Cloudflare Workers are deployed globally. By accessing Workers in specific regions and using DoH to query DNS records, we can obtain global DNS resolution results. Theoretically supports 120+ countries and 330+ cities.
Supports deployment to either Vercel or Cloudflare, independently.
- Fork the project to your GitHub
- Create a new project on Vercel
- Select the DNS.Surf project and
Next.js
framework - Save and deploy
- Bind a domain (optional)
- Fork the project to your GitHub
- Create a Worker locally using
npm run deploy -- --var "CORS_ORIGIN:dns.surf" "WORKER_HOST:dns.html.zone"
. Please modify the variable value:$CORS_ORIGIN
to the domain name of your web page for cross-origin verification, and$WORKER_HOST
to the access domain name of your Worker for source retrieval. - Link the Worker to GitHub in Cloudflare Dashboard and configure build script
npm run deploy -- --var "CORS_ORIGIN:dns.surf" "WORKER_HOST:dns.html.zone"
- Configure DNS resolution
- After copying the ENV file locally using
cp .env.example .env
- Modify
WORKER_HOST
to the access domain of the Worker,CLOUDFLARE_ZONE_ID
to the ID of the domain's ZONE, andCLOUDFLARE_API_TOKEN
to the Cloudflare API Token, which needs permissions for 'reading user information', 'editing Workers', and 'editing DNS' - Then use
npm run cf-dns
to configure DNS resolution.
- After copying the ENV file locally using
- Create a new Pages project on Cloudflare
- Select the DNS.Surf project and
Next.js(static)
framework - Set environment variables and deploy
- Bind a domain (optional)
pnpm install
pnpm run local
Backend:
cp .dev.vars.example dev.vars
# ↑ Modify WORKER_HOST to your Worker's access domain for remote access
pnpm install
pnpm run worker
Frontend:
cp .env.example .env
# ↑ Modify NEXT_PUBLIC_CLOUDFLARE_WORKER_HOST to your Worker's URL for remote access
pnpm run dev