Linux路由配置從入門到精通:10年運維老鳥的實戰秘籍,讓你3天成為網路高手
1. 路由基礎概念
1.1 什麼是路由
路由是網路通訊中的核心機制,它決定了資料包從源地址到目標地址的傳輸路徑。在Linux系統中,路由功能由核心提供,透過路由表來管理不同網路之間的資料包轉發。
1.2 路由的工作原理
當資料包需要傳送到網路中時,Linux核心會按照以下步驟進行路由決策:
-
1. 目標地址檢查:首先檢查目標地址是否為本機地址 -
2. 路由表查詢:在路由表中查詢匹配的路由條目 -
3. 最長匹配原則:選擇子網掩碼最長的匹配條目 -
4. 預設路由:如果沒有匹配的條目,使用預設路由 -
5. 包轉發:將資料包傳送到指定的閘道器或介面
1.3 路由表的結構
Linux路由表包含以下關鍵欄位:
-
• Destination:目標網路或主機 -
• Gateway:閘道器地址 -
• Netmask:子網掩碼 -
• Flags:路由標誌 -
• Metric:路由優先順序 -
• Interface:出介面
2. 路由型別分類
2.1 按照範圍分類
本地路由(Local Routes)
-
• 直接連線到本機的網路 -
• 用於本機各介面之間的通訊 -
• 自動由系統生成
網路路由(Network Routes)
-
• 指向特定網路段的路由 -
• 需要透過閘道器進行轉發 -
• 可以是靜態或動態配置
主機路由(Host Routes)
-
• 指向特定主機的路由 -
• 子網掩碼為255.255.255.255 -
• 用於精確控制到特定主機的路徑
2.2 按照配置方式分類
靜態路由
-
• 手動配置的路由條目 -
• 配置簡單,效能開銷小 -
• 適用於網路拓撲相對固定的環境
動態路由
-
• 透過路由協議自動學習 -
• 能夠適應網路變化 -
• 需要執行路由守護程序
3. 路由檢視命令詳解
3.1 route命令
基本語法
route [-n] [-v] [-A family]
常用選項
-
• -n
:以數字形式顯示地址,不進行DNS解析 -
• -v
:詳細輸出 -
• -A inet
:指定地址族(IPv4)
示例輸出解讀
$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
標誌位含義
-
• U
:路由是活動的 -
• G
:路由指向閘道器 -
• H
:目標是主機 -
• R
:恢復動態路由產生的表項 -
• D
:由路由守護程式動態地安裝 -
• M
:由路由守護程式修改
3.2 ip route命令
基本語法
ip route [list|show] [SELECTOR]
檢視所有路由
ip route show
檢視特定網路的路由
ip route show 192.168.1.0/24
檢視預設路由
ip route show default
3.3 netstat命令
檢視路由表
netstat -rn
檢視IPv6路由
netstat -rn -A inet6
4. 靜態路由配置
4.1 新增路由條目
使用route命令新增
新增網路路由:
route add -net 192.168.2.0/24 gw 192.168.1.1 dev eth0
新增主機路由:
route add -host 192.168.2.100 gw 192.168.1.1 dev eth0
新增預設路由:
route add default gw 192.168.1.1 dev eth0
使用ip命令新增
新增網路路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
新增主機路由:
ip route add 192.168.2.100/32 via 192.168.1.1 dev eth0
新增預設路由:
ip route add default via 192.168.1.1 dev eth0
4.2 刪除路由條目
使用route命令刪除
route del -net 192.168.2.0/24 gw 192.168.1.1route del -host 192.168.2.100route del default gw 192.168.1.1
使用ip命令刪除
ip route del 192.168.2.0/24 via 192.168.1.1ip route del 192.168.2.100/32 via 192.168.1.1ip route del default via 192.168.1.1
4.3 修改路由條目
替換路由
ip route replace 192.168.2.0/24 via 192.168.1.2 dev eth0
修改路由屬性
ip route change 192.168.2.0/24 via 192.168.1.2 dev eth0 metric 100
5. 永久路由配置
5.1 透過配置檔案配置
Red Hat系列(CentOS/RHEL/Fedora)
在
/etc/sysconfig/network-scripts/route-interface
檔案中配置:# /etc/sysconfig/network-scripts/route-eth0192.168.2.0/24 via 192.168.1.1 dev eth010.0.0.0/8 via 192.168.1.2 dev eth0
Debian/Ubuntu系列
在
/etc/network/interfaces
檔案中配置:auto eth0iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 up route add -net 192.168.2.0/24 gw 192.168.1.1 dev eth0 down route del -net 192.168.2.0/24 gw 192.168.1.1 dev eth0
5.2 使用NetworkManager配置
nmcli命令配置
# 新增靜態路由nmcli con mod eth0 +ipv4.routes "192.168.2.0/24 192.168.1.1"# 啟用配置nmcli con up eth0
5.3 使用systemd-networkd配置
建立網路配置檔案:
# /etc/systemd/network/eth0.network[Match]Name=eth0[Network]DHCP=noAddress=192.168.1.10/24Gateway=192.168.1.1[Route]Destination=192.168.2.0/24Gateway=192.168.1.1
6. 高階路由配置
6.1 多路徑路由
ECMP(Equal Cost Multi-Path)配置
ip route add 192.168.2.0/24 \ nexthop via 192.168.1.1 dev eth0 weight 1 \ nexthop via 192.168.1.2 dev eth1 weight 1
檢視多路徑路由
ip route show 192.168.2.0/24
6.2 策略路由
建立路由表
echo"100 custom_table" >> /etc/iproute2/rt_tables
新增策略路由
# 基於源地址的策略路由ip rule add from 192.168.1.0/24 table custom_table# 基於目標地址的策略路由ip rule add to 10.0.0.0/8 table custom_table# 基於介面的策略路由ip rule add iif eth0 table custom_table
在自定義表中新增路由
ip route add default via 192.168.2.1 table custom_table
6.3 路由優先順序和度量值
設定路由優先順序
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 metric 100ip route add 192.168.2.0/24 via 192.168.1.2 dev eth1 metric 200
檢視路由優先順序
ip route show 192.168.2.0/24
7. 路由表管理
7.1 多路由表
檢視路由表列表
cat /etc/iproute2/rt_tables
檢視特定表的路由
ip route show table mainip route show table localip route show table 100
7.2 路由快取
檢視路由快取
ip route show cache
清除路由快取
ip route flush cache
7.3 路由規則管理
檢視所有規則
ip rule show
刪除規則
ip rule del from 192.168.1.0/24 table custom_table
8. 動態路由配置
8.1 RIP協議配置
安裝quagga
yum install quagga # CentOS/RHELapt-get install quagga # Debian/Ubuntu
配置RIP
# /etc/quagga/ripd.confrouter rip version 2 network 192.168.1.0/24 network 192.168.2.0/24 redistribute connected
8.2 OSPF協議配置
配置OSPF
# /etc/quagga/ospfd.confrouter ospf network 192.168.1.0/24 area 0 network 192.168.2.0/24 area 0
8.3 BGP協議配置
配置BGP
# /etc/quagga/bgpd.confrouter bgp 65001 bgp router-id 192.168.1.1 network 192.168.1.0/24 neighbor 192.168.2.1 remote-as 65002
9. 路由故障排除
9.1 常見路由問題
路由不可達
-
• 檢查路由表是否存在對應條目 -
• 驗證閘道器是否可達 -
• 確認介面狀態是否正常
路由迴圈
-
• 檢查路由表中是否存在迴圈引用 -
• 驗證路由優先順序設定 -
• 檢視動態路由協議配置
9.2 診斷工具
ping命令
ping -c 4 192.168.2.100
traceroute命令
traceroute 192.168.2.100
mtr命令
mtr 192.168.2.100
tcpdump抓包
tcpdump -i eth0 host 192.168.2.100
9.3 日誌分析
檢視系統日誌
journalctl -u networktail -f /var/log/messages
檢視路由守護程序日誌
journalctl -u quagga
10. 效能最佳化
10.1 路由表最佳化
減少路由表大小
-
• 使用路由聚合 -
• 刪除不必要的路由條目 -
• 最佳化路由表結構
路由快取最佳化
# 調整路由快取引數echo 1024 > /proc/sys/net/ipv4/route/max_sizeecho 300 > /proc/sys/net/ipv4/route/gc_timeout
10.2 核心引數調優
IP轉發最佳化
# 啟用IP轉發echo 1 > /proc/sys/net/ipv4/ip_forward# 調整轉發效能引數echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
路由效能引數
# 調整路由重新整理間隔echo 1 > /proc/sys/net/ipv4/route/gc_interval# 調整路由表大小限制echo 32768 > /proc/sys/net/ipv4/route/max_size
11. 安全配置
11.1 路由安全
防止路由欺騙
# 啟用反向路徑過濾echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
限制路由更新
# 配置路由認證# 在路由協議配置中新增認證
11.2 訪問控制
使用iptables控制路由
# 限制特定網段的路由iptables -I FORWARD -s 192.168.3.0/24 -j DROP
12. 監控和維護
12.1 路由監控
即時監控路由變化
ip monitor route
監控路由表大小
#!/bin/bashwhiletrue; do route_count=$(ip route show | wc -l)echo"$(date): Route count: $route_count"sleep 60done
12.2 自動化維護
路由備份指令碼
#!/bin/bashbackup_dir="/backup/network"timestamp=$(date +%Y%m%d_%H%M%S)# 備份路由表ip route show > "${backup_dir}/routes_${timestamp}.txt"# 備份路由規則ip rule show > "${backup_dir}/rules_${timestamp}.txt"
路由恢復指令碼
#!/bin/bashbackup_file="/backup/network/routes_20240101_120000.txt"# 清除現有路由ip route flush table main# 恢復路由whileread line; do ip route add $linedone < $backup_file
13. 最佳實踐
13.1 配置規範
命名規範
-
• 使用有意義的路由表名稱 -
• 為自定義路由表分配固定的ID -
• 保持配置檔案的註釋完整
版本控制
-
• 對網路配置檔案進行版本控制 -
• 記錄每次配置變更的原因 -
• 建立配置回滾機制
13.2 運維建議
定期檢查
-
• 定期檢查路由表的正確性 -
• 監控路由效能指標 -
• 及時清理無效路由
文件記錄
-
• 維護網路拓撲圖 -
• 記錄路由策略和配置原因 -
• 建立故障處理流程
13.3 容災設計
冗餘路由
-
• 配置多條備用路由 -
• 設定適當的路由優先順序 -
• 實現自動故障切換
快速恢復
-
• 準備路由配置模板 -
• 建立自動化部署流程 -
• 定期進行故障恢復演練
14. 案例分析
14.1 企業網路路由設計
需求分析
-
• 多個子網互聯 -
• 需要訪問外網 -
• 要求高可用性
解決方案
# 主路由配置ip route add 10.1.0.0/16 via 192.168.1.1 dev eth0 metric 10ip route add 10.2.0.0/16 via 192.168.1.2 dev eth1 metric 10# 備份路由配置ip route add 10.1.0.0/16 via 192.168.1.3 dev eth2 metric 20ip route add 10.2.0.0/16 via 192.168.1.4 dev eth3 metric 20# 預設路由配置ip route add default via 192.168.1.1 dev eth0 metric 10ip route add default via 192.168.1.2 dev eth1 metric 20
14.2 負載均衡路由
多鏈路負載均衡
# 配置多路徑路由ip route add default scope global \ nexthop via 192.168.1.1 dev eth0 weight 1 \ nexthop via 192.168.1.2 dev eth1 weight 1
基於策略的負載均衡
# 建立負載均衡表echo"200 load_balance" >> /etc/iproute2/rt_tables# 配置策略路由ip rule add from 192.168.1.0/24 table load_balanceip route add default via 192.168.1.1 table load_balance
15. 總結
Linux路由配置是網路管理的核心技能,掌握路由的基本原理、配置方法和故障排除技巧對於運維工程師至關重要。透過本文的詳細介紹,相信您已經對Linux路由配置有了全面的瞭解。
在實際工作中,建議根據具體的網路環境和需求選擇合適的路由配置方案,並建立完善的監控和維護機制,確保網路的穩定執行。同時,要不斷學習新的網路技術和最佳實踐,提升自己的專業能力。
記住,網路配置需要謹慎操作,在生產環境中進行任何變更前,都應該在測試環境中驗證配置的正確性,並制定詳細的回滾方案。
文末福利





······



以上所有資料獲取請掃碼

100%免費領取
(後臺不再回復,掃碼一鍵領取)