Linux路由表
- 一:查看路由
- 二:添加路由
- 三:刪除路由
- 四:路由測試
- 五:路由選擇機制
- 1.路由表
- 2.路由匹配機制
- 3.策略路由
- 示例
- 1.多網卡分流
- 2.VPN分流
- 3.雙默認路由負載均衡
一:查看路由
# 查看 main 表
ip route show# 查看所有路由表
ip route show table all# 查看特定表(如表 100)
ip route show table 100
二:添加路由
# 添加默認路由(網關為 192.168.1.1)
ip route add default via 192.168.1.1 dev eth0
route add default gw 192.168.1.1 dev lan1# 添加特定子網路由(目標 10.0.0.0/24,網關 10.0.0.1)
ip route add 10.0.0.0/24 via 10.0.0.1 dev eth1
route add -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5# 指定路由的 metric(優先級)
ip route add default via 192.168.1.1 dev eth0 metric 100
route add -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5 metric 100
三:刪除路由
# 刪除默認路由(網關為 192.168.1.1)
ip route del default via 192.168.1.1 dev eth0
route del default gw 192.168.1.1 dev lan1# 添加特定子網路由(目標 10.0.0.0/24,網關 10.0.0.1)
ip route del 10.0.0.0/24 via 10.0.0.1 dev eth1
route del -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5# 指定路由的 metric(優先級)
ip route del default via 192.168.1.1 dev eth0 metric 100
route del -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1 dev lan5 metric 100
四:路由測試
# 查看目標 IP 8.8.8.8 的路由選擇路徑
ip route get 8.8.8.8
五:路由選擇機制
Linux 的網絡路由選擇機制基于 路由表(Routing Table) 和 策略路由(Policy-Based Routing)。
1.路由表
Linux 內核維護多個路由表(默認最多 255 張),每張表包含一組路由規則。常用路由表:
- main 表:默認路由表,用戶通過 ip route 或 route 命令配置的路由在此表中。
- local 表:存儲本地網絡接口的地址和廣播路由,由內核自動管理。
- default 表:用于默認路由(優先級最低)。
- 自定義表:可通過策略路由規則定義。
2.路由匹配機制
當數據包需要發送時,內核按以下步驟選擇路由:
- 最長前綴匹配:優先匹配目標地址最具體的路由(子網掩碼最長)。
例如,目標 IP 為 192.168.1.100,路由表中同時存在 192.168.1.0/24 和 192.168.0.0/16,則選擇 192.168.1.0/24。 - 路由優先級:若多條路由前綴長度相同,按優先級(metric 值)選擇,metric 越小優先級越高。
- 默認路由:若無匹配路由,使用 default 路由(目標 0.0.0.0/0)。
3.策略路由
允許根據源 IP、服務類型(ToS)、接口等條件選擇不同的路由表。常用于多網卡、VPN 分流等場景。
- 創建自定義路由表
編輯 /etc/iproute2/rt_tables,添加自定義表:
# 添加表 ID 和名稱
100 custom_table
- 定義策略規則
# 根據源 IP 選擇路由表
ip rule add from 192.168.1.100 lookup custom_table# 根據目標 IP 選擇路由表
ip rule add to 10.0.0.0/24 lookup custom_table# 查看所有策略規則
ip rule show
- 在自定義表中添加路由
ip route add default via 10.0.0.1 dev eth2 table custom_table
示例
1.多網卡分流
需求:從 eth0 訪問公網,從 eth1 訪問內網 10.0.0.0/24
ip route add default via 公網網關 dev eth0
ip route add 10.0.0.0/24 via 10.0.0.1 dev eth1
2.VPN分流
需求:僅特定流量(如訪問 172.16.0.0/16)走 VPN 接口 tun0。
ip route add 172.16.0.0/16 dev tun0
3.雙默認路由負載均衡
# 添加兩條默認路由并啟用負載均衡
ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 10.0.0.1 dev eth1 metric 100