路由 tables: Linux-2.x 可以按 table 來組織路由奈辰,table 可以用編號 1 到 255 來指定匹涮,也可以用 /etc/iproute2/rt_tables 中的名字來指定馋袜。默認情況下路由會被插入到 main 表 (ID 254),內核計算路由時也只會用這個表。
另外還有一個 local 表 (ID 255),這個表路由本機及廣播地址愁溜。內核自動維護該表,管理員一般不需要修改該表外厂。
多路由 tables 會在用到策略路由的時候登場冕象。
ip route
ip route { add | del | change | append | replace | monitor } ROUTE
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ] [ table TABLE_ID ] [ proto RTPROTO ] [ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ] ...
NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ rtt TIME ] [ rttvar TIME ] [ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ] [ ssthresh REALM ] [ realms REALM ] [ rto_min TIME ] [ initrwnd NUMBER ]
TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local| main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
FLAGS := [ equalize ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
- := 表示聲明并定義
- { xxx | xxx } 表示多選一必選
- [] 表示可選
- SPEC 應該是 specification 的縮寫
- NH 應該是 next hop 的縮寫
- PREFIX 就是地址加掩碼的格式,比如 0.0.0.0/0
- PREFIX 有個 default 的特殊表示汁蝶,等同于 0.0.0.0/0渐扮,也就是默認路由
示例
ip route add local default dev lo table 100
語法分析:
ip route add (command) local (TYPE) default (PREFIX) dev lo (NH) table 100 (table TABLE_ID)
ip rule
語法
ip rule [ list | add | del | flush ] SELECTOR ACTION
SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ] [ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ] [ nat ADDRESS ] [ prohibit | reject | unreachable ] [ realms [SRCREALM/]DSTREALM ]
TABLE_ID := [ local | main | default | NUMBER ]
ACTION 里的 table 關鍵字也可以用 lookup 代替
示例
ip rule add fwmark 1 lookup 100
語法分析:
ip rule add (command) fwmark 1 (SELECTOR) lookup (table) 100 (ACTION)