Bookmark

Static route trên OpenWrt: khai báo IPv4, IPv6 và routing table bằng netifd

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:

1
2
3
4
5
config route 'route_example_1'
        option interface 'lan'
        option target '172.16.123.0'
        option netmask '255.255.255.0'
        option gateway '172.16.123.100'

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:

1
2
3
4
5
config route 'route_example_2'
        option interface 'vpn'
        option target '0.0.0.0/0'
        option table '100'
        option gateway '10.72.197.110'

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:

1
ip route add default via 10.72.197.110 table 100

2. Các option của route

OptionKiểuBắt buộcMặc địnhÝ nghĩa
interfacestringTên logical interface cha; phải trùng một config interface.
targetIP addressĐịa chỉ network đích.
netmasknetmaskKhông255.255.255.255Bỏ qua thì target được hiểu như host address.
gatewayIP addressKhôngGateway 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.
metricnumberKhông0Metric của route.
mtunumberKhôngMTU interfaceMTU riêng cho route.
tablerouting tableKhôngmainID 0–65535 hoặc alias trong /etc/iproute2/rt_tables; alias đặc biệt gồm local 255, main 254, default 253.
sourceIP addressKhôngSource address ưu tiên cho destination của route.
onlinkbooleanKhông0Cho phép gateway được coi là on-link dù không khớp prefix interface.
typestringKhôngunicastKiểu route, xem bảng routing types bên dưới.
protorouting protocolKhôngstaticID 0–255 hoặc alias trong /etc/iproute2/rt_protos, ví dụ kernel, boot, ra, redirect, static.
disabledbooleanKhông0Tắ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:

1
2
3
4
config route6
        option interface 'lan'
        option target '2001:0DB8:100:F00:BA3::1/64'
        option gateway '2001:0DB8:99::1'

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

OptionKiểuBắt buộcMặc địnhÝ nghĩa
interfacestringTên logical interface cha.
targetIPv6 addressĐịa chỉ mạng IPv6 đích.
gatewayIPv6 addressKhôngGateway IPv6; bỏ qua thì dùng gateway của interface cha.
metricnumberKhông0Metric của route.
mtunumberKhôngMTU interfaceMTU riêng cho route.
tablerouting tableKhôngmainBảng định tuyến số hoặc alias.
sourceIP addressKhôngSource address trong source-dependent route; tương đương from của lệnh ip.
onlinkbooleanKhông0Cho phép gateway on-link ngoài prefix interface.
typestringKhôngunicastKiểu route theo bảng routing types.
protorouting protocolKhôngstaticProtocol ID số hoặc alias trong /etc/iproute2/rt_protos.
disabledbooleanKhông0Tắ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
unicastRoute tới destination thực.
localDestination thuộc host này; packet loopback và giao local.
broadcastDestination là địa chỉ broadcast; packet gửi như link broadcast.
multicastKiểu dành cho multicast routing, thường không xuất hiện trong bảng bình thường.
unreachableBỏ packet và trả ICMP host unreachable; local sender nhận EHOSTUNREACH.
prohibitBỏ packet và trả ICMP administratively prohibited; local sender nhận EACCES.
blackholeBỏ packet im lặng; local sender nhận EINVAL.
anycastDestination 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ị:

1
2
3
uci show network
ip route show
ip -6 route show

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, protodisabled 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


  1. 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. ↩︎


0 Bình luận

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