راهاندازی DoH Proxy با Cloudflare Workers🚀

🚀 راهاندازی DoH Proxy با Cloudflare Workers
در این آموزش یاد میگیریم چطور با استفاده از Cloudflare Workers یک پراکسی سبک و امن برای DNS over HTTPS (DoH) راهاندازی کنیم. این روش برای تبدیل درخواستهای DNS به HTTPS بسیار مناسب است و نیازی به سرور اختصاصی ندارد.
🧠 چرا DoH Proxy با Cloudflare؟
- بدون نیاز به هاست یا VPS
- اجرا در لبه شبکه Cloudflare (Edge)
- سریع، امن و قابل سفارشیسازی
- مناسب برای استفاده شخصی یا عمومی
🛠 مراحل راهاندازی
1️⃣ ورود به داشبورد Cloudflare
به Cloudflare Workers بروید و وارد حساب کاربری خود شوید.
2️⃣ ساخت یک Worker جدید
🔹 ابتدا از بخش سمت چپ روی گزینه workers & pages کلیک کنید.
🔹 در بخش Workers روی گزینه Start with Hello World! کلیک کنید.
🔹 نام Worker را به دلخواه انتخاب کنید (مثلاً doh-proxy
) و روی deploy کلیک کنید.
🔹 در مرحله بعد روی Edit Code کلیک کنید تا وارد محیط ویرایشگر شوید.
3️⃣ جایگزینی کد پیشفرض با کد DoH Proxy
1.کد زیر را کامل جایگزین کد پیشفرض کنید:
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
const path = url.pathname;
if (path !== '/dns-query') {
return new Response('Not Found', {
status: 404,
headers: { 'Access-Control-Allow-Origin': '*' }
});
}
let dnsRequest;
if (request.method === 'POST') {
const contentType = request.headers.get('content-type') || '';
if (!contentType.includes('application/dns-message')) {
return new Response('Unsupported Media Type', {
status: 415,
headers: { 'Access-Control-Allow-Origin': '*' }
});
}
dnsRequest = await request.arrayBuffer();
} else if (request.method === 'GET') {
const dnsParam = url.searchParams.get('dns');
if (!dnsParam) {
return new Response('Missing dns query', {
status: 400,
headers: { 'Access-Control-Allow-Origin': '*' }
});
}
dnsRequest = Uint8Array.from(atob(dnsParam.replace(/-/g, '+').replace(/_/g, '/')), c => c.charCodeAt(0)).buffer;
} else {
return new Response('Method Not Allowed', {
status: 405,
headers: { 'Access-Control-Allow-Origin': '*' }
});
}
const response = await fetch('https://cloudflare-dns.com/dns-query', {
method: 'POST',
headers: {
'Content-Type': 'application/dns-message',
'Accept': 'application/dns-message',
},
body: dnsRequest
});
const dnsResponse = await response.arrayBuffer();
return new Response(dnsResponse, {
status: 200,
headers: {
'Content-Type': 'application/dns-message',
'Access-Control-Allow-Origin': '*',
'Content-Length': dnsResponse.byteLength.toString()
}
});
}
}
2.از بالا سمت راست روی Deploy کلیک کنید.
3.سپس آدرس Worker شما یا همان DoH Proxy خود را کپی کنید که روی عکس فوق با شماره 3 نشان داده ام.
4️⃣ تست
به انتهای آدرس /dns-query
اضافه کنید تا شبیه به لینک زیر شود:
https://doh-proxy.yourname.workers.dev/dns-query
برای تست میتونید آدرس فوق را در بخش DoH یا DNS Secure مرورگر خود وارد کنید
نمونه ست شده روی مرورگر گوگل کروم :
📦 نتیجهگیری
با استفاده از Cloudflare Workers میتونی یک DoH Proxy سریع، امن و بدون نیاز به زیرساخت پیچیده راهاندازی کنی. این روش برای توسعهدهندگان، شبکهکارها و علاقهمندان به امنیت اینترنت بسیار کاربردی است.