博主github page
ip rule 和 ip route
網路包優先匹配 ip rule 中的規則,然後再被轉到相應的 ip table 路由規則處理
ip rule
# output
# 0: from all lookup local
# 32766: from all lookup main
# 32767: from all lookup default
這三條規則是核心建立的
前面的數字代表優先順序
from all
代表所有包
ip route show table local
# output
# local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
# local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
# broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
# local 172.17.0.1 dev docker0 proto kernel scope host src 172.17.0.1
所以所有的網路包都會先在本地路由表(local table)中嘗試匹配路由規則,如果沒有匹配到,就到主路由表(main table),最後是預設路由表(default table)匹配
這就是所謂的策略路由,使用者也可以建立自己的路由策略(ip rule)以及路由表(ip tables)
除錯路由匹配
獲取 ip 匹配到的路由規則
ip route get ip_address
# ip route get 127.0.0.1
新增路由規則
# ip in 192.168.3.0/24 should be routed through mytun network interface
ip route add 192.168.3.0/24 dev mytun