ِDoh, مقالات, میکروتیک

راه‌اندازی 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 سریع، امن و بدون نیاز به زیرساخت پیچیده راه‌اندازی کنی. این روش برای توسعه‌دهندگان، شبکه‌کارها و علاقه‌مندان به امنیت اینترنت بسیار کاربردی است.

دیدگاهتان را بنویسید