Hướng dẫn thực hành · MikroTik
Trong trang này
Cloudflare WARP: cài sau mạng nền
WARP trong dự án dùng WireGuard và định tuyến IPv4 chọn lọc trên RouterOS 7. Đây là tích hợp cộng đồng, không phải ứng dụng Cloudflare One Client chính thức chạy trên MikroTik. Không dùng trên RouterOS 6.
1. Điều kiện và quyết định có cần cài
- Mạng nền từ generator đã chạy; có danh sách interface
LANvới BridgeLAN và các VLAN cần thiết. Firewall nhận established/related, NAT và multi-WAN đã qua test. - Có macOS, Python 3; bản tạo tài khoản thường cần Homebrew và
wgcf. Nếu chỉ có Windows/Linux, tạo/import từ profile bằng Python theo CLI bên dưới rồi chuyển file qua WinBox; chức năng Clipboard trong launcher dành cho macOS. - WARP mặc định chọn Telegram, Medium và BBC theo các IP/domain được liệt kê. Không tự đưa Zalo, toàn Internet hoặc mạng LAN qua tunnel.
- Nếu bot gửi trực tiếp được và không cần định tuyến chọn lọc, bỏ qua WARP sẽ giảm phụ thuộc. WARP không làm public IPv4 cho port-forward, không cộng băng thông một kết nối và không thay một WAN dự phòng.
2. Tạo WARP thường ngay trên web
Mở Tạo WARP. Chọn dịch vụ cần đi qua tunnel; có thể thêm domain hoặc IPv4/CIDR, mỗi dòng một đích. Tên address list trong RouterOS là WARP_LIST. Không nhập mạng LAN, private IP, IP endpoint hay các probe giám sát; bộ tạo chặn các IP/CIDR trùng này.
Đọc điều khoản Cloudflare, tích đồng ý rồi bấm Tạo WARP mới. Trình duyệt dùng Web Crypto X25519 để tạo keypair, chỉ gửi public key qua API cùng domain tới Cloudflare. Private key không gửi lên server và không lưu localStorage. Worker không lưu account token/response vào database hoặc log payload. Giới hạn 2 lượt/phút/IP tại điểm xử lý Cloudflare; đây là chống bấm lặp cơ bản, không phải quota toàn cầu tuyệt đối.
Khi có profile hợp lệ, phần xem trước sinh lệnh và mở nút Copy cấu hình/Tải .rsc. Đổi dịch vụ hoặc thêm domain sẽ dùng lại tài khoản vừa tạo. Tải/copy trước khi đóng trang; tải lại trang làm mất private key trong bộ nhớ. Không có chức năng khôi phục key từ server. Cấu hình chứa key nên phải lưu riêng tư.
Nếu trình duyệt không hỗ trợ X25519 hoặc API từ chối/timeout, trang báo lỗi, không tự tạo profile giả và không tự gửi lại yêu cầu. Với timeout, đăng ký có thể đã diễn ra nhưng chưa nhận response. Dùng command trên macOS bên dưới nếu cần. API client WARP không phải API public có cam kết ổn định, nên khả năng đăng ký có thể thay đổi.
3. Tải bộ công cụ dự phòng
Tải bộ WARP không chứa khóa riêng, giải nén vào thư mục riêng tư. Đọc README.md trong gói. Các file đi cùng nhau: warp_config.py, hai launcher .command, script gỡ và README.
Không tải profile do người lạ chia sẻ. Các file *.conf, .rsc đã sinh và Clipboard chứa private key; không đẩy lên Git hoặc gửi nhóm chat.
4. Cách A: tạo tài khoản WARP thường trên macOS
Mở Tao_Acc_WARP_Mikrotik.command. Nếu macOS chưa cho chạy, mở Terminal, gõ bash rồi kéo đúng file .command vào cửa sổ và Enter; kiểm tra đường dẫn trước khi chạy. Không dùng lệnh bỏ bảo mật toàn máy.
Script kiểm tra wgcf, dùng Homebrew cài nếu chưa có; wgcf register --accept-tos đồng ý điều khoản Cloudflare và đăng ký tài khoản mới mỗi lần chạy. Đọc điều khoản trước; không chạy liên tục để thử. Sau đó nó tạo profile trong thư mục tạm, kiểm tra key/address/endpoint, lưu mikrotik_warp_generated.rsc quyền 0600 và copy vào Clipboard.
Nếu đăng ký lỗi, dừng và kiểm tra thông báo của wgcf/network. Không tạo endpoint hoặc public key phỏng đoán. Việc có file RSC chỉ xác nhận sinh file, chưa xác nhận Cloudflare chấp nhận tunnel. wgcf upstream.
5. Cách B: chuyển profile WireGuard có sẵn
Nếu đã có profile hợp lệ của chính bạn, dùng Tao_Cau_Hinh_WARP_Tu_Profile.command, nhập đường dẫn đầy đủ tới .conf. Công cụ xử lý profile tại máy, không nhận JWT và không đăng ký thiết bị Zero Trust. Nó phân giải hostname endpoint qua DNS khi cần.
Trên macOS có thể dùng CLI trong thư mục đã giải nén:
python3 warp_config.py /duong/dan/profile.conf /duong/dan/mikrotik_warp_generated.rsc
Profile phải có [Interface] PrivateKey, IPv4 /32, [Peer] PublicKey, Endpoint host:port. Công cụ từ chối khóa sai độ dài/base64, địa chỉ sai và port ngoài 1–65535. Khi dùng nhiều peer/profile kiểu khác, cần chuyển về profile WARP một peer đúng chuẩn trước, không tự chọn đại endpoint.
Với Zero Trust, theo lựa chọn của chủ dự án, chỉ sử dụng Tao_Acc_WARP_Zero_Trust_Mikrotik.command trên máy anh để tạo tài khoản/profile. File command này không đưa lên web, không commit và không nằm trong ZIP public; vẫn là helper thử nghiệm dùng API đăng ký client, chưa xác nhận end-to-end. Chạy từ thư mục Cloudflare WARP trên máy, đọc hướng dẫn đăng nhập của helper, giữ JWT/profile/RSC riêng tư. Sau khi có profile, dùng bộ chuyển profile ở trên để nhận cấu hình routing đã sửa; không nhập lại RSC cũ do helper tạo. Web không nhận JWT Zero Trust.
Cloudflare One Client có MASQUE và WireGuard, nhưng chuyển profile WireGuard không đồng nghĩa có đầy đủ device posture, DNS proxy hay chính sách của client chính thức. Tài khoản phải được tổ chức cho phép dùng WireGuard và enrollment phù hợp.
Nguồn: Cloudflare One Client và thiết lập tunnel.
6. Nạp cấu hình trên router
- Backup router, giữ phiên MAC WinBox tại chỗ. Đọc file sinh ra để biết những object sẽ được thay:
wg-warp,to-warp,WARP_LIST, rule comment WARP và watchdog WARP. - Xác nhận không có cấu hình khác dùng những tên này. Cài lại sẽ thay cấu hình WARP cũ, không phải tạo tunnel thứ hai.
- Mở Files trong WinBox, tải
mikrotik_warp_generated.rsclên router. Kiểm tra đúng tên file, không đăng ảnh chứa Source/private key. - Với file tải từ web, tên mặc định là
mikrotik-warp.rsc; đổi tên trong lệnh bên dưới cho đúng file đã tải. Mở New Terminal và import:
/import file-name=mikrotik_warp_generated.rsc
- Đọc output. Nếu lỗi, dừng và kiểm tra phần đã chạy; khối không tự hoàn tác. Nếu không lỗi, thực hiện mục 7 rồi xóa file nhập khỏi Files; giữ bản backup riêng trên máy nếu cần.
Không dán lại cấu hình nền generator sau WARP; generator dành cho router trắng. Thay đổi LAN hoặc thêm VLAN sau này phải giữ danh sách LAN đúng.
7. Kiểm tra trước khi sử dụng
Trong WireGuard > Peers, xem peer của wg-warp: Last Handshake phải mới, Rx/Tx tăng khi thử traffic. Không chia sẻ private key. Đọc thêm:
/interface wireguard peers print
/ip route print where routing-table=to-warp
/ip firewall mangle print stats where comment~"WARP"
/tool netwatch print detail where comment="WARP-Watchdog"
/ping 1.1.1.2 count=5
1.1.1.2/32 là canary được ép qua tunnel trong main, không phải DNS mặc định hay probe của PPPoE Monitor. Route blackhole dự phòng ngăn canary đi nhầm WAN khi interface mất; Netwatch dùng kết quả để bật/tắt rule đánh dấu WARP.
Sau cài, đóng/mở lại ứng dụng Telegram/trang cần test để tạo kết nối mới. Các kết nối đã FastTrack hoặc mang mark PCC từ trước không tự đổi tunnel. Counter WARP phải tăng; website thường vẫn dùng WAN. Nếu ping đạt nhưng HTTPS treo, kiểm tra MTU/MSS, endpoint, DNS và chính sách Cloudflare; ping một IP không chứng minh mọi dịch vụ hoạt động.
8. Khi chạy chung với PCC, cảnh báo và QoS
- Rule WARP được đặt trước PCC, chỉ bắt kết nối mới từ
LANhoặc router và cònconnection-mark=no-mark. Kết nối đã được đánh dấu đường WAN trả về được giữ nguyên. wg-warpkhông thêm vào danh sách WAN: danh sách này còn được generator dùng cho quyền WinBox. Firewall chỉ mở forward từ LAN ra tunnel; traffic ngược cần established/related của cấu hình nền.- FastTrack giữ
connection-mark=no-mark, loại kết nối WARP/PCC đã đánh dấu. Nếu QoS đã tắt FastTrack thì WARP không tạo lại rule đó. - Packet mark download theo
in-interface=pppoe-outNkhông bắt gói bên trong tunnel từwg-warp. Vì vậy FQ-CoDel download theo WAN chưa được đảm bảo cho WARP. PCQ LAN chính cần đo riêng; không cam kết tốc độ/CPU khi bật tất cả. - Telegram Fetch do router phát được chọn qua chain output. Zalo mặc định đi WAN. Muốn thêm Zalo phải xác định hostname API thực tế và kiểm tra dịch vụ; không đưa IP endpoint/probe/mạng private vào WARP_LIST.
- Watchdog đo mỗi 10 giây, timeout 2 giây; lúc khởi động còn có startup delay của Netwatch theo phiên bản. Khi canary down, bỏ mark WARP, đóng các kết nối WARP cũ để phiên mới đi WAN theo cấu hình nền. Nếu ISP vẫn chặn Telegram, fallback WAN không bảo đảm gửi được cảnh báo.
- Khi canary up, rule được bật lại. Phiên đang đi WAN vẫn giữ tới khi ứng dụng kết nối lại. Không xóa toàn bộ connection tracking của router để ép chuyển tuyến.
9. Thêm đích và gỡ bỏ
Thêm domain cụ thể nếu thật sự cần:
/ip firewall address-list add list=WARP_LIST address=tenmien.com
Domain không bao gồm mọi subdomain. CDN dùng IP chung có thể làm dịch vụ khác cùng IP đi tunnel; client dùng DoH có thể phân giải IP khác router. Kiểm tra counter/địa chỉ đích thực tế, không chỉ tên website.
Khi gỡ, mở mikrotik_warp_remove.rsc trong gói đã tải, đọc rồi import tại chỗ. Nó gỡ object thuộc WARP, dừng watchdog trước, không gỡ điều kiện FastTrack connection-mark=no-mark mà PCC cần. Không cam kết phục hồi mọi sửa đổi thủ công trước đó; đối chiếu backup nếu có rule tùy chỉnh.
Sau gỡ: kiểm tra không còn wg-warp, route to-warp, watchdog WARP; web thường và từng WAN vẫn chạy. Bài test mất tunnel và rollback chi tiết nằm trong kiểm thử hệ thống.