netifd cho phép khai báo route IP tĩnh trong /etc/config/network. Khác với ip route add chạy tạm thời, một route hoặc route6 section được UCI quản lý và có thể được nạp lại cùng interface.1
Phạm vi: Bài này nói về static route, không phải giao thức định tuyến động. Trước khi áp dụng, tôi phải biết interface nào thật sự đi tới next-hop và giữ một đường console/SSH để sửa nếu route làm mất quản trị.
1. IPv4 route cơ bản
Route IPv4 nằm trong section route gắn với một logical interface. Ví dụ tối thiểu của tài liệu:
| |
Trong đó lan là logical interface chứa route, 172.16.123.0 là network address và 255.255.255.0 là netmask. Tôi phải thay các giá trị bằng topology thật, không coi chúng là IP mặc định cho mọi router.
Có thể tạo default route trong table 100 như sau:
| |
vpn là logical interface, 0.0.0.0/0 bao phủ mọi IPv4 và table 100 là bảng định tuyến riêng. Nếu muốn dùng tên thay cho số, khai báo alias trong /etc/iproute2/rt_tables. Khai báo UCI này tương đương với lệnh runtime:
| |
2. Các option của route
| Option | Kiểu | Bắt buộc | Mặc định | Ý nghĩa |
|---|---|---|---|---|
interface | string | Có | — | Tên logical interface cha; phải trùng một config interface. |
target | IP address | Có | — | Địa chỉ network đích. |
netmask | netmask | Không | 255.255.255.255 | Bỏ qua thì target được hiểu như host address. |
gateway | IP address | Không | — | Gateway mạng; bỏ qua thì dùng gateway của interface cha nếu có, hoặc tạo link-scope route; 0.0.0.0 nghĩa là không đặt gateway. |
metric | number | Không | 0 | Metric của route. |
mtu | number | Không | MTU interface | MTU riêng cho route. |
table | routing table | Không | main | ID 0–65535 hoặc alias trong /etc/iproute2/rt_tables; alias đặc biệt gồm local 255, main 254, default 253. |
source | IP address | Không | — | Source address ưu tiên cho destination của route. |
onlink | boolean | Không | 0 | Cho phép gateway được coi là on-link dù không khớp prefix interface. |
type | string | Không | unicast | Kiểu route, xem bảng routing types bên dưới. |
proto | routing protocol | Không | static | ID 0–255 hoặc alias trong /etc/iproute2/rt_protos, ví dụ kernel, boot, ra, redirect, static. |
disabled | boolean | Không | 0 | Tắt section route khi đặt bật; option này có từ OpenWrt >= 21.02. |
Mỗi section có thể gắn vào một interface, và có thể có nhiều section route trên cùng interface. Đây là lý do tôi đặt tên section riêng như route_lan_iot hoặc route_vpn_default trong cấu hình thực tế thay vì sửa nhầm route có sẵn.
3. IPv6 route
IPv6 dùng section route6:
| |
lan là logical interface, 2001:0DB8:100:F00:BA3::1/64 là subnet IPv6 dạng CIDR và 2001:0DB8:99::1 là IPv6 gateway. Dải 2001:0DB8::/32 là dải documentation example; thay bằng prefix thật của hệ thống.
4. Các option của route6
| Option | Kiểu | Bắt buộc | Mặc định | Ý nghĩa |
|---|---|---|---|---|
interface | string | Có | — | Tên logical interface cha. |
target | IPv6 address | Có | — | Địa chỉ mạng IPv6 đích. |
gateway | IPv6 address | Không | — | Gateway IPv6; bỏ qua thì dùng gateway của interface cha. |
metric | number | Không | 0 | Metric của route. |
mtu | number | Không | MTU interface | MTU riêng cho route. |
table | routing table | Không | main | Bảng định tuyến số hoặc alias. |
source | IP address | Không | — | Source address trong source-dependent route; tương đương from của lệnh ip. |
onlink | boolean | Không | 0 | Cho phép gateway on-link ngoài prefix interface. |
type | string | Không | unicast | Kiểu route theo bảng routing types. |
proto | routing protocol | Không | static | Protocol ID số hoặc alias trong /etc/iproute2/rt_protos. |
disabled | boolean | Không | 0 | Tắt route; có từ OpenWrt >= 21.02. |
5. Routing types
Tài liệu cũng liệt kê các kiểu route mà option type có thể biểu diễn:
| Type | Ý nghĩa |
|---|---|
unicast | Route tới destination thực. |
local | Destination thuộc host này; packet loopback và giao local. |
broadcast | Destination là địa chỉ broadcast; packet gửi như link broadcast. |
multicast | Kiểu dành cho multicast routing, thường không xuất hiện trong bảng bình thường. |
unreachable | Bỏ packet và trả ICMP host unreachable; local sender nhận EHOSTUNREACH. |
prohibit | Bỏ packet và trả ICMP administratively prohibited; local sender nhận EACCES. |
blackhole | Bỏ packet im lặng; local sender nhận EINVAL. |
anycast | Destination anycast gán cho host; gần giống local nhưng không hợp lệ làm source address. |
6. Kiểm tra cấu hình trên router
Sau khi sửa /etc/config/network, tôi kiểm tra UCI và bảng route trước khi đóng phiên quản trị:
| |
Nếu route không xuất hiện, kiểm tra lại tên interface, target, gateway, table và trạng thái disabled. Đừng thêm default route vào main chỉ để thử; một default route sai có thể làm LuCI/SSH mất đường trả lời.
Kết luận
Route tĩnh của OpenWrt có ba lớp cần khớp: logical interface, destination/prefix và gateway/table. route dành cho IPv4, route6 dành cho IPv6; các option như metric, mtu, source, onlink, type, proto và disabled chỉ có ý nghĩa khi topology thật sự cần. Tôi luôn giữ cấu hình UCI làm nguồn chuẩn và dùng ip route show/ip -6 route show để xác nhận kết quả.
Nguồn
OpenWrt Wiki – Static routes , cập nhật 2025-07-07. Bài chuyển thể độc lập từ trang tài liệu chính thức. ↩︎


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