本文結合所學的一些基礎網絡協議來完成一個綜合性的實驗(實驗完整代碼放在最后)
會先說明使用協議的原理,然后分析具體在拓補圖中的應用過程,最后再給出配置
明確實驗目標:拓撲分?核心層(R1)、匯聚層(SW3、SW4,需配置 SVI 實現三層轉發)、接入層(SW1、SW2,純二層)?,目標是讓所有 PC 能互訪,且核心路由器 R1 能與外網(Net)通信,同時內網流量按預期路徑轉發。
整體思路:靜態路由手動配置、dhcp動態路由、vlan劃分網絡、mstp解決二層環路、vrrp保障網關冗余、ospf動態選路實現三層設備互聯、nat內網訪問外網、acl訪問控制?
數據傳輸完整流程(以 PC1 訪問公網為例 )
階段 1:PC1 發起到網關的流量(二層 + VRRP )
1.?PC1 封裝幀:PC1 要訪問公網(如 ?203.0.113.1??),先判斷目標 IP 是外網,需發往默認網關 ?192.168.2.254?(VRRP 虛擬 IP )。
- PC1 用 ARP 請求解析 ?192.168.2.254??的 MAC 地址。
- SW3 是 VLAN2 的 VRRP 主設備(優先級 120 ),會響應 ARP,告知 PC1:?192.168.2.254??的 MAC 是 SW3 的 VLAN2 SVI 接口 MAC。
2.?流量到匯聚層 SW3:PC1 封裝以太網幀(源 MAC:PC1,目的 MAC:SW3 VLAN2 MAC;源 IP:?192.168.2.1?,目的 IP:?203.0.113.1??),通過接入層 SW1(Trunk 鏈路 )、MSTP 計算的最優路徑,轉發到 SW3。
階段 2:匯聚層 SW3 轉發到核心 R1(三層 + OSPF )
1.?SW3 三層轉發:SW3 收到幀后,解封裝看目的 IP 是外網,查路由表(OSPF 學習的路由 ),發現需發往核心 R1。
?
?- OSPF 已在 SW3、R1 間建立鄰居,傳遞了 ?192.168.10.0/30?(SW3 - R1 互聯段 )、?192.168.2.0/24?(VLAN2 )等路由。
- SW3 路由表中,外網網段(?0.0.0.0/0??)的下一跳指向 R1 的 ?192.168.10.2?(OSPF 動態學習或靜態路由 )。
2.?封裝新幀轉發:SW3 重新封裝幀(源 MAC:SW3 互聯口 MAC,目的 MAC:R1 互聯口 MAC;源 IP:?192.168.2.1?,目的 IP:?203.0.113.1??),通過 ?G0/0??接口發往 R1。
階段 3:核心 R1 做 NAT + 轉發(NAT + 靜態路由 + ACL )
1.?NAT 轉換:R1 收到幀,解封裝后觸發 NAT:
- 因 PC1 是靜態 NAT(?ip nat inside source static 192.168.2.1 192.0.2.10??),R1 會把源 IP 替換為 ?192.0.2.10?,同時記錄轉換表項(便于回包時還原 )。
2.?ACL 過濾(可選):R1 外網口 ?f2/0??應用了 ?access-list 100?(假設允許 ICMP 等 ),檢查流量是否符合規則。若符合,繼續轉發。
3.?靜態路由轉發:R1 查路由表,默認路由 ?ip route 0.0.0.0 0.0.0.0 f2/0??指導流量發往外網口 ?f2/0?,封裝新幀(源 MAC:R1 ?f2/0??MAC,目的 MAC:公網網關 MAC;源 IP:?192.0.2.10?,目的 IP:?203.0.113.1??),發往公網。
階段 4:公網回包到 R1(反向路徑 )
1.?公網路由:公網設備(如 ?203.0.113.1??)收到包,回包時目的 IP 是 ?192.0.2.10?,根據公網路由(由 ISP 配置 ),發回 R1 的 ?f2/0??接口。
2.?NAT 還原:R1 收到回包,查 NAT 表項,將目的 IP ?192.0.2.10??還原為 ?192.168.2.1?,然后查路由表(OSPF 學習的 ?192.168.2.0/24??路由 ),下一跳指向 SW3 的 ?192.168.10.1?。
3.?轉發回 SW3:R1 封裝幀(源 MAC:R1 互聯口 MAC,目的 MAC:SW3 互聯口 MAC;源 IP:?203.0.113.1?,目的 IP:?192.168.2.1??),發往 SW3。
階段 5:SW3 轉發回 PC1(OSPF + 二層 )
1.?SW3 三層轉發:SW3 收到回包,查路由表(OSPF 學習的 ?192.168.2.0/24??直連路由 ),目的 IP 是 PC1,需發往 VLAN2 SVI 接口。
2.?ARP 解析 PC1 MAC:SW3 用 ARP 請求解析 ?192.168.2.1??的 MAC 地址,PC1 響應后,SW3 封裝幀(源 MAC:SW3 VLAN2 MAC,目的 MAC:PC1 MAC;源 IP:?203.0.113.1?,目的 IP:?192.168.2.1??),通過 MSTP 最優路徑,經 SW1 轉發回 PC1
一.? 靜態路由的配置:(sw3、sw4、r1)
靜態路由核心是?“告訴設備:到達某網段,下一跳給誰”?,需梳理每個設備的 “已知網段” 和 “需要轉發的網段”。
定義:由管理員手工配置的,是單向的,拓撲關系缺乏靈活性
優點:配置靈活,管理員手工配置,節省鏈路開銷。
缺點:當拓撲發生改變時,需要管理員去每臺路由器上修改路由配置。
R1 作為核心層路由器,需連通內網(匯聚、接入層網段)和外網(假設 ?192.0.2.0/24? 是公網或上級網絡 ),同時匯聚層 SW3、SW4 也需通過它訪問外網。假設內網主要需互通的網段有:- 接入層 VLAN 網段:?192.168.2.0/24?(VLAN2 )、?192.168.3.0/24?(VLAN3 )、?192.168.4.0/24?(VLAN4 )- 匯聚與核心互聯網段:?192.168.10.0/30?(R1 - SW3 )、?192.168.10.4/30?(R1 - SW4 )等R1R1(config)# ip route 192.168.2.0 255.255.255.0 192.168.10.1 // 去往 VLAN2 網段,下一跳指向 SW3
R1(config)# ip route 192.168.3.0 255.255.255.0 192.168.10.1 // 去往 VLAN3 網段,下一跳指向 SW3
R1(config)# ip route 192.168.4.0 255.255.255.0 192.168.10.5 // 去往 VLAN4 網段,下一跳指向 SW4
R1(config)# ip route 0.0.0.0 0.0.0.0 192.0.2.2 // 默認路由,指向外網出口(假設對端是 192.0.2.2 )
SW3(config)# ip route 0.0.0.0 0.0.0.0 192.168.10.2 // 默認路由,指向核心 R1,讓非直連網段走 R1
SW3(config)# ip route 192.168.4.0 255.255.255.0 192.168.10.10 // 去往 VLAN4(SW4 側),下一跳指向 SW4
// 若需更精細控制,也可針對 R1 側其他網段單獨寫,或依賴默認路由
SW4(config)# ip route 0.0.0.0 0.0.0.0 192.168.10.6 // 默認路由指向 R1,讓非直連網段走核心
SW4(config)# ip route 192.168.3.0 255.255.255.0 192.168.10.9 // 去往 VLAN3(SW3 側),下一跳指向 SW3
// 同理,可根據實際網段細化,或依賴默認路由覆蓋
二.? DHCP 動態路由
工作過程:
四次會話
1)discover:客戶端廣播向DHCP服務器請求一個ip地址
2)offer:服務器收到后在地址池中尋找合適的IP地址,廣播回復提供給客戶端
3)request:客戶端選擇合適的ip地址并告知服務器
4)ack:服務器廣播確認分配ip地址,向客戶端告知信息
拓補圖中,可以看到pc2和pc4都是由dhcp自動獲取ip地址的
分析:以pc2為例:pc2廣播發送dhcp請求,dhcp中繼sw3收到廣播請求后改為單播發往dhcp服務器r1,r1收到請求在地址池選擇合適的ip地址單播回復給sw3,sw3收到后發給pc2,pc2選擇ip地址并廣播告知r1,sw3改為單播發給r1,r1收到win的選擇信息單播發送確認信息給pc2
這里提到了dhcp中繼 什么是中繼
?Dhcp中繼:當dhcp服務器與客戶端不在同一網絡的時候無法直接通信,這時需要一個代理者代為轉發,這個代理者就是dhcp中繼。
分析:圖中pc2發起dhcp請求請求一個IP地址,因為與服務器r1不在同一網段,所以sw3充當中繼接收到來之pc2的dhcp廣播請求,把廣播請求改為單播發送給服務器r1
dhcp配置:
// DHCP 地址池配置(給 192.168.3.0/24、192.168.4.0/24 網段分配 )
Router(config)#ip dhcp pool h
Router(dhcp-config)#network 192.168.3.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.3.254
Router(dhcp-config)#dns-server 222.246.129.80
Router(dhcp-config)#exitRouter(config)#ip dhcp pool t
Router(dhcp-config)#network 192.168.4.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.4.254
Router(dhcp-config)#dns-server 222.246.129.80
Router(dhcp-config)#exit// DHCP 中繼相關(信任中繼信息 )
Router(config)#ip dhcp relay information trust-all// 環回接口(OSPF RID 依賴 )
Router(config)#interface Loopback0
Router(config-if)#ip address 1.1.1.1 255.255.255.255
Router(config-if)#exit
注意這里配置了lookback地址,也就是回環接口地址,好處就是因為回環接口狀態是穩定的,當鏈路損壞或原接口故障,管理者可以通過回環接口進入?
三.vlan劃分網絡
定義:虛擬局域網
作用:將網絡劃分成多個廣播域
access:連接個1vlan,與終端相連
收報文 | 判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發,如果有則直接 丟棄(缺省) |
發報文 | 將報文的VLAN信息剝離,直接發送出去 |
trunk:連接多個vlan,與交換機、路由器相連
收報文?? ?
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發,如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄
發報文?? ?
比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送
sw1配置:
Switch(config)#vlan 2,3
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 3
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/2
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
Switch(config)#int e0/3
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
sw2配置:?
Switch(config)#vlan 2
Switch(config)#vlan 4
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 4
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/2
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
Switch(config)#int e0/3
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
sw3配置:
Switch(config)#vlan 2 - 4
Switch(config)#int g0/0
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/3
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.1 255.255.255.252
Switch(config)#int g0/1
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.9 255.255.255.252
Switch(config)#ip routing
sw4配置:
Switch(config)#vlan 2 - 4
Switch(config)#int g0/0
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/3
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.5 255.255.255.252
Switch(config)#int g0/1
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.10 255.255.255.252
Switch(config)#ip routing
r1配置
Router(config)#int f0/0
Router(config-if)#ip address 192.168.10.2 255.255.255.252
Router(config-if)#no shutdown
Router(config)#int f0/1
Router(config-if)#ip address 192.168.10.6 255.255.255.252
Router(config-if)#no shutdown
Router(config)#int fa2/0
Router(config-if)#ip address 192.0.2.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#ip nat outside
四.? MSTP解決二層環路?
首先了解二層環路
危害:
1)可能會造成廣播風暴
廣播風暴是指網絡中出現大量無意義的廣播幀,導致網絡帶寬被占滿、設備處理能力耗盡
最終使網絡癱瘓的現象。
2)數據在環路中循環傳輸,耗費資源
3)mac地址表紊亂:交換機是通過mac地址來轉發數據的,但環路中同一mac地址會在不同端口頻繁出現,導致mac表不斷刷新,造成混亂
MSTP通過選擇規則來防止環路:
選舉報網橋
選舉規則:
a. 先比較BID中的優先級,具有最小優先級的交換機定為根橋。
b. 如果優先級一樣,再比較BID中的MAC地址,MAC地址最小的確定為跟橋。
選舉根端口
選舉規則:
a. 非根橋交換機上,到根橋的根路徑開銷最小的端口,即為該非根交換機的根端口
b. 如果根路徑開銷相同,則比較對端交換機的BID,越小越優
c. 如果對端交換機的BID相同,則比較對端的PID,越小越優
d. 如果對端的PID相同,則比較本端的PID,越小越優。
選舉指定端口
選舉規則:
a. 在各個鏈路上,到根橋的根路徑開銷最小的端口,即為指定端口
b. 如果根路徑開銷相同,則比較兩端交換機的BID,越小越優
c. 如果對端交換機的BID相同,則比較兩端交換機的PID,越小越優
阻塞其余端口選舉規則:
至此,其余既不是根端口也不是指定端口的都是阻塞端口。
分析:拓補圖中,可以看到二層的主要兩個環路,分別是sw1、sw3、sw4形成的三角形環路和sw2、sw4、sw3的三角形環路 ,這里就需要用到mstp來解決這個環路問題
mstp配置:
sw1
// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
sw2
// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
sw3
// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
Switch(config)#spanning-tree mst 0 priority 0
Switch(config)#spanning-tree mst 2 priority 4096
Switch(config)#spanning-tree mst 3 priority 0
Switch(config)#spanning-tree mst 4 root primary
sw4
// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
Switch(config)#spanning-tree mst 0 priority 4096
Switch(config)#spanning-tree mst 2 priority 0
Switch(config)#spanning-tree mst 3 priority 4096
Switch(config)#spanning-tree mst 4 root secondary
?五.? vrrp保障網關冗余
工作過程:
優先級高的選舉為主路由器,優先級相同時接口IP大的為主路由器。 主路由器激活虛擬IP地址,轉發數據報文,并定期向廣播域內發送VRRP組播報文通告自己的狀態,定期通告間(Advertisement Interval)默認為1秒。 備份路由器不發送但接收VRRP報文,在MASTER_DOWN_TIMER(一般為3個通告周期)3s內沒有收到主路由器的VRRP報文,則備份路由器將成為主路由器。?
分析:拓補圖中sw3、sw4兩臺三層交換機滿足等級保護要求中的設備冗余,需要使用vrrp協議來保障一臺路由損壞后,其他路由仍然可以這次工作的作用,可以看到sw3、sw4之間有兩根線,下面的線是二層線路,用來進行vrrp的主備路由器的狀態通告
vrrp配置
sw3
// 邏輯接口(SVI) + VRRP 配置
Switch(config)#int vlan 2
Switch(config-if)#ip address 192.168.2.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 2 ip 192.168.2.254
Switch(config-if)#vrrp 2 priority 120
Switch(config-if)#vrrp 2 preemptSwitch(config)#int vlan 3
Switch(config-if)#ip address 192.168.3.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 3 ip 192.168.3.254
Switch(config-if)#vrrp 3 priority 100
Switch(config-if)#vrrp 3 preemptSwitch(config)#int vlan 4
Switch(config-if)#ip address 192.168.4.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 4 ip 192.168.4.254
Switch(config-if)#vrrp 4 priority 100
Switch(config-if)#vrrp 4 preempt
sw4
Switch(config)#int vlan 2
Switch(config-if)#ip address 192.168.2.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 2 ip 192.168.2.254
Switch(config-if)#vrrp 2 priority 100
Switch(config-if)#vrrp 2 preemptSwitch(config)#int vlan 3
Switch(config-if)#ip address 192.168.3.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 3 ip 192.168.3.254
Switch(config-if)#vrrp 3 priority 120
Switch(config-if)#vrrp 3 preemptSwitch(config)#int vlan 4
Switch(config-if)#ip address 192.168.4.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 4 ip 192.168.4.254
Switch(config-if)#vrrp 4 priority 120
Switch(config-if)#vrrp 4 preempt
六.OSPF動態路由選路?
工作過程:
五種報文:
ospf的種類以及作用:
拓補圖中當數據傳到核心層就需要ospf協議進行動態路由選路?
ospf配置
sw3
// OSPF 配置
Switch(config)#interface loopback 0
Switch(config-if)#ip address 3.3.3.3 255.255.255.255
Switch(config)#router ospf 1
Switch(config-router)#router-id 3.3.3.3
Switch(config-router)#network 3.3.3.3 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.1 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.9 0.0.0.0 area 0
Switch(config-router)#network 192.168.2.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.3.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.4.0 0.0.0.255 area 0
// 被動接口
Switch(config-router)#passive-interface g0/0
Switch(config-router)#passive-interface g0/2
sw4
// OSPF 配置
Switch(config)#interface loopback 0
Switch(config-if)#ip address 4.4.4.4 255.255.255.255
Switch(config)#router ospf 1
Switch(config-router)#router-id 4.4.4.4
Switch(config-router)#network 4.4.4.4 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.5 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.10 0.0.0.0 area 0
Switch(config-router)#network 192.168.2.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.3.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.4.0 0.0.0.255 area 0
// 被動接口
Switch(config-router)#passive-interface g0/0
Switch(config-router)#passive-interface g0/2
R1
// 靜態路由 + OSPF
Router(config)#ip route 0.0.0.0 0.0.0.0 f0/0
Router(config)#interface loopback 0
Router(config-if)#ip address 1.1.1.1 255.255.255.255
Router(config)#router ospf 1
Router(config-router)#router-id 1.1.1.1
Router(config-router)#network 192.168.10.2 0.0.0.0 area 0
Router(config-router)#network 192.168.10.6 0.0.0.0 area 0
// 傳遞默認路由給 OSPF 鄰居
Router(config-router)#default-information originate
七.? NAT?內網訪問外網
NAT主要用于內網地址訪問公網地址
靜態NAT:內網地址與公網地址一對一映射,主要用于公網資源充足的場景或是特定的設備(攝像頭等)
動態NAT:內網地址與公網地址是臨時的動態映射,隨機從公網地址池中分配一個公網地址。主要用于主機或服務器集群的地方
PAT:多對一映射,不同內網地址使用同一公網地址,但端口不同
NAT配置:?
// NAT 配置
// 1. 靜態 NAT:內網 192.168.2.1 → 外網 192.0.2.10
Router(config)#ip nat inside source static 192.168.2.1 192.0.2.10// 2. 動態 NAT(ACL 1 匹配 192.168.3.0/24 ,映射到 pool1 )
Router(config)#access-list 1 permit 192.168.3.0 0.0.0.255
Router(config)#ip nat pool 1 192.0.2.21 192.0.2.30 netmask 255.255.255.0
Router(config)#ip nat inside source list 1 pool 1// 3. 出接口 NAT(ACL 2 匹配 192.168.2.2/32 ,直接映射外網口 )
Router(config)#access-list 2 permit 192.168.2.2 0.0.0.0
Router(config)#ip nat inside source list 2 interface FastEthernet2/0// 4. NAPT(PAT,ACL 3 匹配 192.168.4.0/24 ,復用 pool3 地址 )
Router(config)#access-list 3 permit 192.168.4.0 0.0.0.255
Router(config)#ip nat pool 3 192.0.2.31 192.0.2.32 netmask 255.255.255.0
Router(config)#ip nat inside source list 3 pool 3 overload
?完整代碼:(以圖片展現)
?