Bài viết sử dụng một cấu hình RouterOS 7.21.5 thực tế để minh họa cách định tuyến từng client qua nhiều WAN. Các IP và tên interface được giữ nguyên trong ví dụ để dễ đối chiếu với giao diện WinBox.
Không nên copy toàn bộ cấu hình vào router khác. Hãy kiểm tra tên interface, gateway, routing table và dải IP trước khi áp dụng.
Mục tiêu của cấu hình
Mục tiêu là cho phép chọn WAN theo từng client trong mạng LAN:
- Client
10.0.0.10đi quaVNPT1. - Client
10.0.0.11đi quaVT2. - Client
10.0.0.12sử dụng bảngmain. - Client
10.0.0.15đi quaVNPT1. - Client
10.0.1.25đi quaVNPT1.
Mô hình này thường được gọi là policy routing hoặc source-based routing: router quyết định đường đi dựa trên địa chỉ nguồn thay vì chỉ dùng default route chung.1

Mô hình interface trong cấu hình thực tế
Các interface liên quan:
| Interface | Vai trò |
|---|---|
bridgeLAN | Mạng LAN chính |
LAN2 | Cổng vật lý chứa các macvlan cho PPPoE |
LAN3 | Cổng vật lý chứa VLAN 597-VNPT-LAN3 |
597-VNPT-LAN3-MACVLAN1 | MACVLAN dùng cho PPPoE VNPT1 |
LAN2-MACVLAN1 | MACVLAN dùng cho PPPoE VT2 |
LAN2-MACVLAN2 | MACVLAN dùng cho PPPoE VT1 |
VNPT1 | PPPoE client của VNPT |
VT2 | PPPoE client của Viettel/đường VT2 |
VT1 | PPPoE client chính còn lại |
Các PPPoE client trong export:
| |
Tên user PPPoE đã được bỏ khỏi tutorial. Không đưa username, password hoặc secret vào bài công khai.
Routing table là gì?
RouterOS v7 cho phép tạo nhiều routing table. Mỗi table có thể chứa default route tới một WAN khác nhau.1
Trong cấu hình thực tế có hai table policy routing đang bật:
| |
Tham số fib cho phép table được dùng để tra cứu và chuyển tiếp gói tin. Các table chỉ có tác dụng khi chúng có route phù hợp.

Default route cho từng WAN
Bảng VNPT1 có default route đi qua PPPoE interface VNPT1:
| |
Bảng VT2 có default route đi qua PPPoE interface VT2:
| |
Điều này có nghĩa:
- Gói được tra cứu trong table
VNPT1sẽ dùng WANVNPT1. - Gói được tra cứu trong table
VT2sẽ dùng WANVT2. - Gói được tra cứu trong table
mainsẽ dùng các route chính của router.
Kiểm tra route:
| |

Routing Rules trong cấu hình thực tế
Các rule nội bộ được đặt trước các rule theo client:
| |
Các rule này giữ traffic tới mạng nội bộ ở lại table main, thay vì đẩy traffic nội bộ qua WAN. Đây là phần quan trọng để client vẫn truy cập được Proxmox, OpenHAB, AdGuard Home và các thiết bị LAN.
Sau đó mới đến các rule chọn WAN theo client:
| |
lookup-only-in-table yêu cầu RouterOS chỉ tra cứu trong table được chỉ định. Nếu table không có route phù hợp, gói có thể bị loại thay vì rơi xuống table khác. Đây là khác biệt quan trọng so với lookup.2


src-address=10.0.0.10/32, action lookup-only-in-table, table VNPT1.
src-address=10.0.0.11/32, action lookup-only-in-table, table VT2.Vì sao phải đặt rule mạng nội bộ trước?
Giả sử 10.0.0.10 được định tuyến qua table VNPT1. Khi client này truy cập 10.0.0.4 — máy AdGuard Home — router cần ưu tiên rule:
| |
Nếu không có rule nội bộ ở trước, request có thể bị tra cứu trong table VNPT1 và đi ra WAN thay vì tới máy LAN.
Thứ tự khái niệm nên là:
| |
Thêm một client mới
Ví dụ muốn cho client 10.0.0.20 đi qua VNPT1:
| |
Nếu muốn client đi qua VT2:
| |
Nên dùng /32 cho một host. Nếu muốn áp dụng cho cả subnet, thay bằng CIDR phù hợp, ví dụ 10.0.1.0/24.
Kiểm tra rule và route
Xem toàn bộ rule theo đúng thứ tự:
| |
Xem route trong policy table:
| |
Kiểm tra route tới một địa chỉ Internet từ router:
| |
Từ chính client, kiểm tra IP public bằng trình duyệt hoặc lệnh:
| |
Thực hiện lần lượt trên các client:
| |
Kết quả IP public có thể thay đổi theo thời điểm, nên đây chỉ là kiểm tra định tuyến tương đối.
Kiểm tra khi client không truy cập được LAN
Nếu client đi Internet được nhưng không truy cập được 10.0.0.4, 10.0.0.2 hoặc OpenHAB, kiểm tra:
| |
Các mạng LAN trong export gồm:
| |
Hãy bảo đảm các rule dst-address cho các mạng này nằm trước rule src-address của client.
Lưu ý về IPv6
Export cũng có các rule IPv6 tương ứng, ví dụ client fd00:10::10/128 và fd00:10::25/128. IPv4 và IPv6 cần kiểm tra riêng:
| |
Một client có thể đi IPv4 qua VNPT1 nhưng IPv6 lại đi theo route khác. Nếu mục tiêu là bắt client dùng cùng một WAN cho cả hai giao thức, phải cấu hình và kiểm thử cả hai nhóm rule.
Trong export có rule:
| |
Comment nói VT1, nhưng table thực tế là main. Đây là điểm cần kiểm tra lại trên thiết bị trước khi đưa vào tài liệu chính thức.
Rollback một rule
Trước khi chỉnh sửa, nên xuất riêng routing rule:
| |
Vô hiệu hóa rule theo số thứ tự:
| |
Hoặc xóa rule sau khi đã xác nhận đúng số:
| |
Không nên xóa theo số nếu vừa thêm/xóa nhiều rule. Hãy dùng print detail để xác nhận lại comment và src-address trước.
Tóm tắt
Cấu hình policy routing trong ví dụ này hoạt động theo chuỗi:
| |
Phần khó nhất không phải là thêm một rule mới, mà là bảo đảm traffic tới mạng nội bộ vẫn được đưa về main trước khi áp dụng rule chọn WAN.
Hình ảnh minh họa WinBox
Các ảnh dưới đây minh họa trực tiếp những mục cấu hình được sử dụng trong ví dụ: interface, routing table, default route và routing rule.
Nguồn tham khảo
Mình đã lược bỏ các phần không liên quan như firewall, NAT, WireGuard và DDNS để tập trung vào cơ chế định tuyến client bằng Routing Rules.


Góp Ý / Bình Luận / Đánh giá