thảo luận Hướng dẫn dùng Cloudflare Zero Trust

  • Người tạo chủ đề Người tạo chủ đề Fioren
  • Ngày bắt đầu Ngày bắt đầu
Lỗi này fix sao vậy mọi người ? giúp mình với
 

Tệp đính kèm

  • Screenshot_22.png
    Screenshot_22.png
    69,2 KB · Lượt xem: 75
HaGeZi vừa cập nhật khuyến nghị cho các phiên bản blocklist :big_smile:
https://github.com/hagezi/dns-blocklists#whatshouldiuse

1695856620233.png


=> Giải nghĩa dễ hiểu:
  • Nếu kích thước blocklist là vấn đề (dùng trên điện thoại với Blokada, personalDNSfilter,...) => Light
  • Nếu muốn thiết lập một lần và sử dụng mãi mãi => Normal
  • Nếu việc lâu lâu phải allow một domain không phải là vấn đề với bạn => Pro
  • Nếu việc thường xuyên phải allow một domain không phải là vấn đề với bạn => Pro++. Chú ý từ đây trở lên sẽ không sử dụng hết blocklist được vì số lượng domain đã trên 300k.
  • Nếu bạn rảnh => Ultimate
  • Nếu bạn quá rảnh => Ultimate + 1Hosts Pro
  • Nếu cả ngày bạn không có gì làm => Ultimate + 1Hosts Xtra
Blocklist này theo mình là xịn nhất bây giờ vì tổng hợp các blocklist chất lượng nhất (nghĩa là còn cập nhật, chặn sai không quá nhiều và người duy trì còn hoạt động, dĩ nhiên có cả hostsVN của @nhutthanh22), rất hiếm khi chặn nhầm, và khi có vấn đề thì xử lý rất nhanh, hơn nữa còn có thống kê rõ ràng cho từng phiên bản. NextDNS-Config của yokoffing cũng khuyến khích xài blocklist này.
 
Sửa lần cuối:
HaGeZi vừa cập nhật khuyến nghị cho các phiên bản blocklist :big_smile:
https://github.com/hagezi/dns-blocklists#whatshouldiuse

Xem tệp đính kèm 2096573

=> Giải nghĩa dễ hiểu:
  • Nếu kích thước blocklist là vấn đề (dùng trên điện thoại với Blokada, personalDNSfilter,...) => Light
  • Nếu muốn thiết lập một lần và sử dụng mãi mãi => Normal
  • Nếu việc lâu lâu phải allow một domain không phải là vấn đề với bạn => Pro
  • Nếu việc thường xuyên phải allow một domain không phải là vấn đề với bạn => Pro++. Chú ý từ đây trở lên sẽ không sử dụng hết blocklist được vì số lượng domain đã trên 300k.
  • Nếu bạn rảnh => Ultimate
  • Nếu bạn quá rảnh => Ultimate + 1Hosts Pro
  • Nếu cả ngày bạn không có gì làm => Ultimate + 1Hosts Xtra
Blocklist này theo mình là xịn nhất bây giờ vì tổng hợp các blocklist chất lượng nhất (nghĩa là còn cập nhật, chặn sai không quá nhiều và người duy trì còn hoạt động, dĩ nhiên có cả hostsVN của @nhutthanh22), rất hiếm khi chặn nhầm, và khi có vấn đề thì xử lý rất nhanh, hơn nữa còn có thống kê rõ ràng cho từng phiên bản. NextDNS-Config của yokoffing cũng khuyến khích xài blocklist này.
Cho mình hỏi ví dụ như bản normal này thì mình lấy link domains hay host hay là chọn 1 cái duy nhất là wildcard là có đủ hết vậy fen?
1695860554611.png
 
Cập nhật code update IP từ DDNS lên Cloudflare để set DNS cho tất cả các thiết bị trong nhà (lên router, thiết bị) không cần DoH, DoT:

JavaScript:
addEventListener('scheduled', (event) => {
  event.waitUntil(handleRequest());
});

addEventListener('fetch', (event) => {
  return event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const accountEmail = '';
  const accountId= '';
  const apiToken = '';
  const domain = '';
  const ip = await resolveDomain(domain);

  if (ip) {
    console.log(`The IP address of ${domain} is: ${ip}`);
    const locationId = await getLocationId(accountId, apiToken, accountEmail);
    if (locationId) {
      console.log(`The location ID is: ${locationId}`);
      const updateResult = await updateLocation(accountId, apiToken, locationId, ip, accountEmail);
      if (updateResult) {
        console.log("Update location successful:");
        console.log(`Location ID: ${updateResult.id}`);
        console.log(`Name: ${updateResult.name}`);
        console.log(`IP: ${updateResult.networks[0].network}`);
        console.log(`Subnet: ${updateResult.networks[0].network.split('/')[1]}`);
        console.log(`Created At: ${updateResult.created_at}`);
        console.log(`Updated At: ${updateResult.updated_at}`);
      } else {
        console.log("No location data found.");
      }
    } else {
      console.log("No locations found.");
    }
  } else {
    console.log(`Failed to resolve the IP address of ${domain}`);
  }

  return new Response('Worker execution completed', { status: 200 });
}

async function resolveDomain(domain) {
  const apiURL = 'https://dns.google.com/resolve';
  const queryURL = new URL(apiURL);
  queryURL.searchParams.append('name', domain);
  queryURL.searchParams.append('type', 'A');

  const response = await fetch(queryURL);
  const data = await response.json();

  if (data.Answer instanceof Array && data.Answer.length > 0) {
    const ipAddresses = data.Answer
      .filter(answer => answer.type === 1)
      .map(answer => answer.data);
    return ipAddresses[0] || null;
  } else {
    return null;
  }
}

async function getLocationId(accountId, apiToken, accountEmail) {

  const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/gateway/locations`;

  const response = await fetch(url, {
    headers: {
      'Authorization': `Bearer ${apiToken}`,
      'Content-Type': 'application/json',
      'X-Auth-Email': accountEmail,
      'X-Auth-Key': apiToken
    }
  });

  if (response.ok) {
    const data = await response.json();
    const result = data.result;
    return result.length > 0 ? result[0].id : null;
  } else {
    return null;
  }
}

async function updateLocation(accountId, apiToken, locationId, ip, accountEmail) {
  const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/gateway/locations/${locationId}`;

  const response = await fetch(url, {
    method: 'PUT',
    headers: {
      'Authorization': `Bearer ${apiToken}`,
      'Content-Type': 'application/json',
      'X-Auth-Email': accountEmail,
      'X-Auth-Key': apiToken
    },
    body: JSON.stringify({
      client_default: true,
      ecs_support: true,
      name: 'Home',
      networks: [
        { network: `${ip}/32` }
      ]
    })
  });

  if (response.ok) {
    const data = await response.json();
    return data.result || null;
  } else {
    return null;
  }
}
Mình để code như của fen nhưng không get được location, get bằng github lại được fen ạ!
 

Tệp đính kèm

  • z4733794466337_122c2679ef8b58853ac3c581e0177265.png
    z4733794466337_122c2679ef8b58853ac3c581e0177265.png
    5,8 KB · Lượt xem: 75
Nay vào đọc lại bài mới thấy tắt cái EDNS client subnet đi thì vào VCB được rồi.
Cho mình hỏi bật và tắt cái này thì có ảnh hưởng gì nhiều không?
 
Nay vào đọc lại bài mới thấy tắt cái EDNS client subnet đi thì vào VCB được rồi.
Cho mình hỏi bật và tắt cái này thì có ảnh hưởng gì nhiều không?
Bật edns sẽ gửi thêm ip của thím để dns server quản lý biết thím ở đâu mà đưa ra máy chủ cdn gần nhất để tối ưu. Giống như cách google dns đang làm, còn nếu tắt thì sẽ ra máy chủ cdn tối ưu với vị trí của dns server đặt tại đó.
 
Bật edns sẽ gửi thêm ip của thím để dns server quản lý biết thím ở đâu mà đưa ra máy chủ cdn gần nhất để tối ưu. Giống như cách google dns đang làm, còn nếu tắt thì sẽ ra máy chủ cdn tối ưu với vị trí của dns server đặt tại đó.
Mình vừa thử cả tắt cả bật, vào dnschecktool đều thấy DNS resolvers HongKong thì chắc cũng ko ảnh hưởng gì nhiều thím nhỉ?
Với lại thím cho hỏi thêm sao bật lên thì cái VCB lại lỗi thế.
 
Mình để code như của fen nhưng không get được location, get bằng github lại được fen ạ!
Hi bác, bác kiểm tra mấy cái này xem đúng chưa:
1. API Token, Email, Account Id
2. Account Cloudflare tương ứng chỉ có 1 Location duy nhất, Source IPv4 là duy nhất không được đặt trùng với bất kì account khác. Ví dụ bác đã có một acc gán Source IPv4 là 1.2.3.4, thì account Cloudflare khác không được trùng Source IPv4 là 1.2.3.4, nếu trùng sẽ báo No data location found.
Bác check lại xem nha, nếu vẫn lỗi bác có thể nhắn tin em xem giúp bác nha bác.
Github Action chạy Scheduler không đều (tối thiểu 5 phút một lần chạy) nhưng đa số chạy cách 15p, có thể dùng Cloudflare Worker để dispatch action chạy đúng 5 phút một lần.
Đối với trường hợp lấy ip ddns để cập nhật ip lên cloudflare thì dùng Worker ngon hơn.
 
Mình vừa thử cả tắt cả bật, vào dnschecktool đều thấy DNS resolvers HongKong thì chắc cũng ko ảnh hưởng gì nhiều thím nhỉ?
Với lại thím cho hỏi thêm sao bật lên thì cái VCB lại lỗi thế.
Bình thường k có đứt cáp thì đi sing hay hongkong đều ổn, tới lúc "đứt cáp" mới biết được tình hình. Và có ECS thì 1 số dịch vụ xài CDN trong nước sẽ load nhanh hơn, vd như shopee, lazada,..

Còn bị lỗi app VCB khi gửi ECS thì mình chưa debug được, 1 là chưa có thời gian làm như hướng dẫn, 2 là k có xài VCB nên cũng k có debug
 
Hi bác, bác kiểm tra mấy cái này xem đúng chưa:
1. API Token, Email, Account Id
2. Account Cloudflare tương ứng chỉ có 1 Location duy nhất, Source IPv4 là duy nhất không được đặt trùng với bất kì account khác. Ví dụ bác đã có một acc gán Source IPv4 là 1.2.3.4, thì account Cloudflare khác không được trùng Source IPv4 là 1.2.3.4, nếu trùng sẽ báo No data location found.
Bác check lại xem nha, nếu vẫn lỗi bác có thể nhắn tin em xem giúp bác nha bác.
Github Action chạy Scheduler không đều (tối thiểu 5 phút một lần chạy) nhưng đa số chạy cách 15p, có thể dùng Cloudflare Worker để dispatch action chạy đúng 5 phút một lần.
Đối với trường hợp lấy ip ddns để cập nhật ip lên cloudflare thì dùng Worker ngon hơn.
Thanks fen! mình đã inbox, nhờ fen xem giúp nhé!
 

Thống kê chủ đề

Ngày tạo
Fioren,
Người trả lời cuối
tuananhhd88,
Trả lời
4.335
Lượt xem
418.168
Quay lại
Lên đầu trang