Linux 核心內建完整路由功能,透過 route 或 ip route 指令即可管理核心路由表。本文系統整理路由表欄位含義、三大路由類型、靜態路由增刪指令與 IPv4 封包轉發啟用方法。
# route -n
# 或
# ip route show
輸出欄位說明:
| 類型 | Flags | 範例 | 用途 |
|---|---|---|---|
| 主機路由 | H | 10.0.0.10/32 via 192.168.1.1 | 指向單一主機 |
| 網路路由 | 無 H | 192.168.10.0/24 via 192.168.1.1 | 指向整個子網 |
| 預設路由 | G | default via 192.168.1.1 | 無匹配路由時的最後出口 |
# 語法:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [dev If]
# 新增主機路由
route add -host 192.168.1.2 dev eth0:0
route add -host 10.20.30.148 gw 10.20.30.40
# 新增網路路由
route add -net 10.20.30.40 netmask 255.255.255.248 eth0
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route add -net 192.168.1.0/24 eth1
# 新增預設路由
route add default gw 192.168.1.1
# 刪除對應路由(將 add 改為 del)
route del -host 192.168.1.2 dev eth0:0
route del default gw 192.168.1.1
臨時生效(重開機失效):
# sysctl -w net.ipv4.ip_forward=1
永久生效:
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# sysctl -p
驗證: sysctl net.ipv4.ip_forward 回傳 1 即啟用成功。
建議使用 ip route 取代 route,功能更強、語法一致:
ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0
ip route del default
ip route show