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
sync update mới nhất đi bác, sau đó vào action cập nhập lại file main.yml mới chạy là bt ngay

Github đó bị xoá rồi, mod Filỏ nói ngay mấy bài trc ko chịu đọc gì cả :v.

Thanks 2 bác, e làm được rồi. N không lỗi nên cũng k vào topic các bác ạ =))
E cũng bị lỗi này các bác ạ, fix sao thế ạ 😅 nó chạy ngon nên lâu lắm cũng ko vào topic. Đã sync folk r chạy lại vẫn bị
 
E cũng bị lỗi này các bác ạ, fix sao thế ạ 😅 nó chạy ngon nên lâu lắm cũng ko vào topic. Đã sync folk r chạy lại vẫn bị
Sửa lại file file main.yml thôi
Sửa lại file workflow thôi:
Mã:
name: Update Filter Lists

on:
  schedule:
    - cron: "0 3 * * 1"
  push:
    branches:
      - main
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  NODE_ENV: production

jobs:
  cgps:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          repository: "mrrfv/cloudflare-gateway-pihole-scripts"
          ref: "v1"

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: ".node-version"

      - name: Install npm dependencies
        run: npm ci

      - name: Download allowlists
        run: npm run download:allowlist
        env:
          ALLOWLIST_URLS: ${{ vars.ALLOWLIST_URLS }}

      - name: Download blocklists
        run: npm run download:blocklist
        env:
          BLOCKLIST_URLS: ${{ vars.BLOCKLIST_URLS }}

      - name: Delete old rules and lists
        run: npm run cloudflare-delete
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }}
          DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}

      - name: Create new rules and lists
        run: npm run cloudflare-create
        env:
          BLOCK_PAGE_ENABLED: ${{ vars.BLOCK_PAGE_ENABLED }}
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }}
          DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}

      - name: Send ping request
        if: env.PING_URL != ''
        run: |
          curl "${{ env.PING_URL }}"
        env:
          PING_URL: ${{ secrets.PING_URL }}

  keepalive:
    if: github.event_name == 'schedule'
    runs-on: ubuntu-latest
    permissions:
      actions: write
    steps:
      - uses: liskin/gh-workflow-keepalive@v1
Đã pull request rồi chờ ông kia merge vào thôi.
 
Hướng dẫn sử dụng Usque
Tóm tắt:
Usque là một phần mềm mã nguồn mở để sử dụng giao thức mới Masque của Cloudflare.
Masque dùng giao thức HTTP/3 sử dụng cổng 443 trùng với các dữ liệu https thông thường khác nên khó bị phát hiện hoặc ngăn chặn hơn so với giao thức cũ Wireguard.
1/ Tải về:
Nếu sử dụng Windows thì tải bản usque_XXX_windows_amd64.zip (có tên windows_amd64 ở đuôi)
Sau khi tải về giải nén ra bỏ cố định folder đâu đó trong máy.
2/ Lấy token:
Làm như hướng dẫn này để lấy token:
3/ Thiết lập:
Sau khi có token, mở cmd folder usque như sau:
Gõ cmd vào explorer như hình khi đang mở folder usque
1746416130963.png

Gõ lệnh:
Mã:
usque register --jwt <token>
Trong đó <token> thay thế bởi token kiếm được ở bước trên.
Sẽ có bảng hỏi có đống ý điều khoản sử dụng của Cloudflare hay không. Gõ y rồi ấn enter
Chờ một lúc sẽ xuấy hiện file config.json là đã thành công.
4/ Sử dụng:
Tạo file .bat bằng notepad với nội dung
Mã:
usque socks -b 127.0.0.1 -p 9099
Để dùng không hiển thị cửa sổ cmd thì tạo file .vbs với nội dung
Mã:
CreateObject("WScript.Shell").Run "usque socks -b 127.0.0.1 -p 9099",0,True
Lúc này dùng bất cứ cái gì để chạy được sock5 có ip là 127.0.0.1 port 9099. Tham khảo:
 
Mọi người cho mình hỏi bị lỗi ở đây làm sao fix được vậy ạ, mình xóa hết làm lại mày mò hơn 2 tiếng như #1 vẫn không được luôn ạ
1746589770925.png
 
Hướng dẫn sử dụng Usque
Tóm tắt:
Usque là một phần mềm mã nguồn mở để sử dụng giao thức mới Masque của Cloudflare.
Masque dùng giao thức HTTP/3 sử dụng cổng 443 trùng với các dữ liệu https thông thường khác nên khó bị phát hiện hoặc ngăn chặn hơn so với giao thức cũ Wireguard.
1/ Tải về:
Nếu sử dụng Windows thì tải bản usque_XXX_windows_amd64.zip (có tên windows_amd64 ở đuôi)
Sau khi tải về giải nén ra bỏ cố định folder đâu đó trong máy.
2/ Lấy token:
Làm như hướng dẫn này để lấy token:
3/ Thiết lập:
Sau khi có token, mở cmd folder usque như sau:
Gõ cmd vào explorer như hình khi đang mở folder usque
Xem tệp đính kèm 3033643
Gõ lệnh:
Mã:
usque register --jwt <token>
Trong đó <token> thay thế bởi token kiếm được ở bước trên.
Sẽ có bảng hỏi có đống ý điều khoản sử dụng của Cloudflare hay không. Gõ y rồi ấn enter
Chờ một lúc sẽ xuấy hiện file config.json là đã thành công.
4/ Sử dụng:
Tạo file .bat bằng notepad với nội dung
Mã:
usque socks -b 127.0.0.1 -p 9099
Để dùng không hiển thị cửa sổ cmd thì tạo file .vbs với nội dung
Mã:
CreateObject("WScript.Shell").Run "usque socks -b 127.0.0.1 -p 9099",0,True
Lúc này dùng bất cứ cái gì để chạy được sock5 có ip là 127.0.0.1 port 9099. Tham khảo:
thằng này muốn tạo conf dùng với wgtunnel trên android thì ntn vậy ngài?
 
thằng này muốn tạo conf dùng với wgtunnel trên android thì ntn vậy ngài?
 
Vào chỗ này
Xem tệp đính kèm 2006779
Điền giống y vậy
Xem tệp đính kèm 2006780
Chọn Domain, Matches regex, và gõ tên domain vào. Nếu nhiều domain nhấn nút Or
Chỗ step 3 chọn như hình:
Xem tệp đính kèm 2031815
Rồi bấm save là xong.
Còn với web nào không có cloudflare thì vào đây để lấy ip điền vào step 3.
Google Public DNS (https://dns.google/)
Muốn check có cloudflare hay ko thì vào đây
https://checkforcloudflare.selesti.com/
Mà cũng tùy nhà mạng, có nhà mạng chặn ip thì cách này chịu.
chỗ step3 điền medium.com hay voz.vn v hoàng 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
cái DDNS của mình là lấy đâu á @Fioren :D sorry lâu quá ko vào topic quên sạch
 
override = voz.vn



chỉnh tay đc à, nghe có vẻ có ý tưởng :shame:
confirm lại đoạn worker còn hoạt động ko v Fi ơi
Có, thêm vô dns location mới thì nó sẽ dùng ip hiện có. Hoặc là tắt dns ipv4 xong bật lại thì nó sẽ update
tắt router bật lại vẫn update ip chuẩn nha, worker hoạt động bình thường
 

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