路由,顧名思義,就是把一個數據包從一個設備發送到不同網絡里的另一個設備上去,這些工作依靠路由器來完成。路由器只關心網絡的狀態和決定網絡中的最佳路徑,路由的實現依靠路由器中的路由表來完成。路由器的工作職責如下:
- 分隔廣播域
- 選擇路由表中到達目標最好的路徑
- 維護和檢查路由信息
- 連接廣域網
路由器可以分為三類:
- 主機路由
- 網絡路由
- 默認路由
路由表的構成:
- 目標:數據包發送的目標路徑{單個主機|網段|0.0.0.0默認路由}
- 子網掩碼:配合目標地址來確定網段
- 接口:路由器的出口
- 網關:直連(網關不需要配置);非直連(下一個路由器鄰近本路由器的接口地址)
如上圖如示,位於10.120.2.0網段的主機和位於172.16.1.0網段的主機進行通信就需要路由器來協助完成。
在Linux服務器上,IP地址、網關、DNS、子網掩碼、路由等的管理都是Linux內核在管理,而不是網卡,內核在管理此類對象時需要網卡這個載體來操作。同時,在用戶空間用命令調用內核的TCP/IP模塊配置網絡時能在內存空間立即更改,但是重啟網絡服務或重啟服務器就會丟失,要永久保存更改就需要把配置寫入磁盤的相應文件中,如下圖如示
本文將詳細描述兩種模式下配置IP和三類路由的具體操作方法(注:所有的操作指令以CentOS7為准)。
主機路由
一般情況下,Linux在給網卡分配IP的過程中同時會配置路由。
實驗步驟:
- 在虛擬機A上新加一塊網卡,選擇橋接模式
- 在目錄/etc/sysconfig/network-scripts下新建此網卡的配置文件ifcfg-eth2,內容如下
NAME=eth2
IPADDR=192.168.40.222
PREFIX=24
- 啟動此網卡 ip link set eth2 up
- 查看新加的路由ip route: 192.168.40.0/24 dev eth2 proto kernel scope link src 192.168.40.222;也可以用舊的命令route -n來查看,其中Flags值為U表示啟用,一般情況下Flags為UG表示網關,只有U時表示本機路由
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.40.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
- 同一網絡內有一台IP為192.168.40.144的主機B可以ping通主機A192.168.40.222
- 在主機A上刪除本機路由ip route del 192.168.40.0/24 dev eth2 proto kernel scope link src 192.168.40.222,主機Bping主機A失敗
默認路由
默認路由的適用場景一般是公司通過寬帶提供商實現公司多台私有網絡主機的上網。如下圖所示:
此時,所有的公司內部主機上Internet都會通過默認路由轉發到外網互聯網。
實驗步驟:
- 本網段的網關IP是172.20.0.1/16
- 配置DNS /etc/resolv.conf nameserver 114.114.114.114
- 配置主機A的eth2的IP和網關在一個網段ip address add 172.20.44.144/16 dev eth2
- 在主機A上ping www.baidu.com, 失敗。
- 在主機A上增加默認網關ip route add default via 172.20.0.1
- 可以查看到默認路由
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.20.0.1 0.0.0.0 UG 100 0 0 eth2 -
在主機A上ping www.baidu.com, 成功。
- 修改ifcfg-eth2文件,永久保存默認路由
DEVICE=eth2
IPADDR=172.20.44.144
GATEWAY=172.20.0.1
PREFIX=16
DNS1=114.114.114.114
網絡路由
網絡路由的優先級介於主機路由和默認路由之前,精度越高,優先級越高。
實驗步驟:
需求:配置路由,使A主機192.168.1.100/24能ping通B主機192.168.0.100/24
- 准備5台Linux虛擬機,兩台模擬A、B主機,三台模擬路由器R1,R2,R3,模擬路由器的主機必須有兩塊網卡
第一種配置方法:
- 在R1路由器上,配置兩條路由記錄,分別到達10.0.0.0/8和192.168.0.0/24網段
ip route add 10.0.0.0/8 via 172.16.0.3
ip route add 192.168.0.0/24 via 172.16.0.3
- 在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
- 在R3路由器上,配置兩條路由記錄,分別到達172.16.0.0/16和192.168.1.0/24網段
route add -net 172.16.0.0/16 gw 10.0.0.2
route add -net 192.168.1.0/24 gw 10.0.0.2
第二種配置方法:
即然要求是只關心主機A能否ping到主機B,所以只配置到達對方網段的路由,不配置中間路由:
- 在R1路由器上,配置一條路由記錄,只到達192.168.0.0/24網段
ip route add 192.168.0.0/24 via 172.16.0.3
- 在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
- 在R3路由器上,配置一條路由記錄,只到達192.168.1.0/24網段
route add -net 192.168.1.0/24 gw 10.0.0.2
第三種配置方法:
通過配置默認路由實現:
- 在R1路由器上,只配置默認路由
ip route add default via 172.16.0.3
- 在R2路由器上,配置兩條路由記錄,分別到達192.168.0.0/24和192.168.1.0/24兩個網段
ip route add 192.168.1.0/24 via 172.16.0.2
ip route add 192.168.0.0/24 via 10.0.0.3
- 在R3路由器上,只配置默認路由
ip route add default via 10.0.0.2
永久生效的方法是創建相應網口的路由文件,/etc/sysconfig/network-scripts/route-ethX,內容DEST/netmask via NEXTHOP