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
các dịch vụ chat thì vẫn hoạt động nhưng vào web là liệt, đang đổi tạm sang dùng rethink chạy CF worker serverless
 
Có thể còn tuỳ vị trí và nhà mạng nữa. Đêm qua hầu như ko sử dụng được, phải tắt mới xài được.
chắc là thế, thấy status là fix xong rồi đấy bác em thử lại thấy chạy đc bt rồi
1727319408766.png
 
Có thể còn tuỳ vị trí và nhà mạng nữa. Đêm qua hầu như ko sử dụng được, phải tắt mới xài được.
Bro nói mới để ý,viettel vẫn dùng bình thường - ít nhất là đến lúc 8h sáng nay trước khi mềnh đi làm, đến vp dùng vnpt thì mới thấy tạch thật.
 
Hướng dẫn sử dụng Cloudflare Worker để cập nhật IP match với Cloudflare qua DDNS:
Tại sao nên dùng: Bạn có thể set dns dạng 172.64.36.1, 172.64.36.2 thẳng vào router và sử dụng cho tất cả các thiết bị mạng có trong nhà mà không cần phải dùng DoH, DoT. Tốc độ truy vấn rất nhanh
  • Yêu cầu có ddns trỏ về IP nhà.
  • Cloudflare API, Cloudflare Email, API Key, Cloudflare ID (có hướng dẫn lấy tại #1)
(1) Tạo Worker và chỉnh sửa code theo code dưới đây:
OqargG6.png

Tiếp theo
D1c93dC.png

Tiếp theo
MtT1t73.png
Tiếp theo, nhập Name cho Worker
Tx5e8on.png

Kéo xuống cuối trang nhấn Deploy
EowsqQ5.png

Tiếp theo, nhấn Edit code
0aUoPq9.png

Tiếp theo, xoá tất cả các code, sửa code theo dưới đây:
IpczZnM.png

Điền các thông tin sau:
TZVbNKN.png

- Chỉnh sửa các thông tin: accountEmail, accountId (Cloudflare ID), apiKey, domain (DDNS của bạn).
Mã:
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: 'RouterZTE',
      networks: [
        { network: `${ip}/32` }
      ]
    })
  });

  if (response.ok) {
    const data = await response.json();
    return data.result || null;
  } else {
    return null;
  }
}
=> Save and deploy.
(2) Tạo Cron trigger để tự động chạy script cập nhật IP qua DDNS mỗi 1 phút (rất nhanh).
uxUmAud.png



(3) Chỉnh sửa giá trị Minutes là 1 (Chạy worker mỗi phút), sau đó nhấn Add Trigger
QAPmDJl.png


(4) Kết quả như thế này là hoàn tất:
oZXiESp.png


4. Cập nhật DNS cho thiết bị của bạn:
IPV4:

172.64.36.1
172.64.36.2
---
Máy tính:
rX0BoIt.png


Các thiết bị khác tương tự
Tốt nhất là đặt lên Router tổng để áp dụng cho tất cả các thiết bị trong nhà.
5. Kết thúc

Chúc các bạn cấu hình thành công. Sử dụng DNS dạng này cảm giác lướt web rất nhanh, không bị lỗi DoH (Mikrotik DoH không ổn định).
Kiểm tra xem đã chặn quảng cáo chưa:
Link 1:
Test Ad Block - Toolz (https://d3ward.github.io/toolz/adblock.html)
Link 2: AdBlock Test (https://iblockads.net/test)
Nhớ flush dns trước khi test nhé.
CMD: ipconfig /flushdns
*đã cập nhật ảnh lỗi
Cho em hỏi Domain DDNS là gì lấy ở đâu vậy thím ơi
 
app Cloudflare One Agent trên ios bị mất kết nối và không kết nối lại sau khi khoá màn hình gây mất mạng. Có bác nào bị không ạ 😂
 
bác đã cập nhật app bản mới nhất chưa
sáng nay em tải mới hoàn toàn cái agent one bác ạ, mới thử lại tiếp vẫn thấy ok chưa bị sao cả
B1: mở app -> connect
B2: check thử xem mạng ok
B3: khóa màn hình
B4: unlock -> vào safari -> vào thử 1 trang báo bất kì
Vẫn thấy ok
 

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.126
Quay lại
Lên đầu trang