曹雪峰, 傅冬穎, 于萬國, 計大杰, 朱會卿
(河北民族師范學院 數學與計算機科學學院, 河北 承德 067000)
各種網絡模擬軟件的出現,為計算機網絡實踐教學提供了豐富的手段。常見的軟件包括支持思科設備的Packet Tracer和GNS3,特別是GNS3集成了Oracle VM VirtualBox和VMware Workstation虛擬機管理軟件接口,可以把虛擬機導入GNS3虛擬網絡,可以靈活進行所需軟件的安裝和配置。導入IOL鏡像后,占用資源明顯降低,可以組建規模較大的網絡[1-2]。eNSP是支持華為設備的模擬器,不僅支持有線設備組網,還支持WLAN設備組建虛擬無線網絡[3]。HCL是支持H3C設備的網絡設備模擬器,但是僅適用于單機環境,對于B/S架構就無能為力了。EVE-NG是基于Ubuntu操作系統、采用B/S架構,支持多用戶的功能強大的網絡設備模擬器[4-5]。它提供了通過Web界面使用虛擬設備的工具,包括Dynamips、IOL和KVM,將它們與其他虛擬或物理設備相互連接,實現了EVE-NG虛擬網絡與真實網絡的交互,支持利用Wireshark在節點上選擇端口進行報文捕獲和分析。
為了便于維護,以安裝CentOS7操作系統并接入校園網的服務器為宿主機[6],采用ova虛擬機模板安裝EVE-NG,這樣可以利用宿主機上的虛擬系統管理器對EVE-NG虛擬機進行快照管理,后期維護比較方便。EVE-NG虛擬機的兩塊網卡采用橋接模式連接于宿主機的物理網卡。
其中一塊網卡的作用是作為主接口實現EVE-NG虛擬機與宿主機所在物理網絡的互聯互通;另一塊網卡的作用是與EVE-NG中的Network節點配合,實現在EVE-NG中搭建的虛擬網絡與物理網絡的互聯互通,因此需要修改EVE-NG虛擬機中的/etc/network/interfaces文件[7]。具體修改內容如下:
root@eve-ng:~#vi /etc/network/interfaces
……
# The primary network interface
iface eth0 inet manual
auto pnet0
iface pnet0 inet static
brodge_ports eth0
bridge_stp off
address 192.168.10.3
netmask 255.255.255.0
gateway 192.168.10.1
dns-nameservers 111.11.11.1
# Cloud devices
iface eth1 inet manual
auto pnet1
iface pnet1 inet dhcp
brodge_ports eth1
bridge_stp off
……
運行EVE-NG虛擬機,第一次以root用戶登錄EVE-NG虛擬機后需要修改登錄密碼,以保證系統安全。
然后進行EVE-NG服務器初始化配置。利用scp命令從宿主機導入dynamips 的鏡像文件c1710-bk9no3r2sy-mz.124-23.image、c3725-adventerprisek9-mz.124-15.T14.image和c7200-adventerprisek9-mz.152-4.S6.image到EVE-NG虛擬機的/opt/unetlab/addons/dynamips文件夾中;導入IOL鏡像文件L2-ADVENTERPRISE-M-15.1-20140814.bin、L3-ADVENTERPRISEK9-M-15.4-1T.bin、CiscoIOUKeygen.Py和iourc文件 到EVE-NG虛擬機的/opt/unetlab/addons/iol/bin文件夾中,并執行python CiscoIOUKeygen.Py命令, 生成license;導入qemu鏡像(解壓后的文件夾)到EVE-NG虛擬機的/opt/unetlab/addons/qemu文件夾中,并執行/opt /unetlab /wrappers /unl_wrapper -a fixpermissions命令,修正鏡像權限。為EVE-NG服務器分配域名netlab.hbun.net,打開火狐瀏覽器登錄EVE-NG服務器,可以看到導入的虛擬設備。
最后通過用戶管理選單添加用戶。
至此,基于EVE-NG的虛擬網絡實踐教學平臺就搭建好了。以計算機網絡課程中設計的演示實驗說明該平臺的使用。
在校園網的任意一臺主機上登錄域名為“netlab.hbun.net”的EVE-NG服務器,用戶名為系統管理員用戶admin,按圖1所示網絡拓撲結構搭建虛擬網絡。

圖1 演示實驗的網絡拓撲結構
其中net_internet節點為network節點,類型選擇Cloud1。結合EVE-NG服務器上對eth1網卡的配置,實現EVE-NG虛擬網絡與校園網以及因特網等真實網絡的互聯互通。
R1路由器進行PAT配置,主要配置命令如下[8-10]:
R1(config)# interface ethanet0/0
R1(config-if)# ip address 192.168.10.254 255.255.255.0
R1(config-if)# ip nat outside
R1(config-if)#no shutdown
R1(config-if)#interface ethenet0/1
R1(config-if)#ip address 172.16.0.1 255.255.255.0
R1(config-if)#ip nat inside
R1(config-if)#no shutdown
R1(config)#access-list 1 permit 172.16.0.0 0.0.15.255
R1(config)#ip nat inside source list 1 interface ethernet0/0 overlocad
R1(config)#router rip
R1(config)#version 2
R1(config)#network 172.16.0.0
R1(config)#no auto-summary
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.1
在R1、R2、R3和R4路由器上進行RIP路由協議和默認路由配置,實現網絡互通。SW1和SW2不需配置。虛擬網絡中的DNS、WWW和DHCP服務器是運行Windows 2003 Server操作系統的虛擬機。PC1、PC2和PC3是運行Windows XP操作系統的虛擬機,設置為自動獲取IP地址,在拓撲結構圖中給出了MAC地址。
EVE-NG虛擬網絡運行后,網絡中的虛擬機可以通過訪問校園網上的泛雅網絡教學綜合服務平臺,下載教師提供的實驗工具軟件進行實驗,如圖2所示。虛擬網絡中的所有主機也可以通過校園網訪問因特網。

圖2 虛擬網絡中主機訪問真實網絡
虛擬機PC1、PC2、PC3卸載TCP/IP協議,利用XCAP軟件構造以太網數據幀如表1所示[11-14]。

表1 構造以太網數據幀
在PC1上發送1號以太網數據幀,同時在SW1的e0/0—e0/3和SW2的e0/0—e0/2共7個端口對應的鏈路上捕獲報文,通過查看捕獲的報文可以看到都捕獲到了此數據幀,這是因為此時SW1的MAC地址表為空,SW1從e0/3端口收到此幀后向其他所有端口轉發,并且在MAC地址表中保存MAC地址50:00:00:05:00:00與端口e0/3的映射關系,SW1的MAC地址表變化情況如表2所示。

表2 SW1中MAC地址表的變化
SW2也是同樣道理, SW2的MAC地址表變化情況如表3所示。

表3 SW2中MAC地址表的變化
在PC2上發送2號以太網數據幀,此時在SW1的e0/0、e0/2端口和SW2的e0/1端口上沒有捕獲到此數據幀,這是因為此時SW1和SW2的MAC地址表中已經有了MAC地址50:00:00:05:00:00與端口的映射關系。SW1和SW2收到此幀,查找MAC地址表后,會按照目的MAC地址50:00:00:05:00:00對應的端口進行轉發,而在其他端口上不會轉發此數據幀。
同樣,在PC2上發送3號以太網數據幀,此時可以看到都捕獲到了此數據幀;在PC3上發送4號以太網數據幀,此時在SW1的e0/0、e0/2端口和SW2的e0/2端口上沒有捕獲到此數據幀。
在PC2上發送5號以太網數據幀,此時在SW1的e0/0—e0/3端口和SW2的e0/0端口上沒有捕獲到此數據幀。
在PC1上發送6號以太網數據幀,通過查看捕獲的報文可以看到在7條鏈路上都捕獲到了此數據幀,這是因為此數據幀是廣播幀,SW1和SW2會在除了此幀輸入的端口之外的所有端口轉發該幀。
在TCP協議中,由接收方采用動態滑動窗口機制,通過限制發送方發送窗口大小來實現流量控制。
在PC2的瀏覽器中登錄ftp://ftp.hbun.net文件服務器并下載文件(幾十MB),同時在R2路由器的e0/0端口捕獲報文,如圖3所示

圖3 捕獲的TCP報文
圖3中,35931號報文是客戶端PC2發送給服務器端的TCP報文段,其中窗口字段值為42175B,也就是PC2客戶端根據自己的接收能力,通知服務器端設置發送窗口大小即為此值,此時發送窗口的右邊沿為40133776B(確認號字段值+窗口字段值=40091601+42175)。
然后服務器端發送了4個TCP報文段,最后一個TCP報文段的序號字段值為40107661B,長度為1460B。
這時服務器端收到了35936號報文,確認號字段值為40109121B,也就是發送窗口中已發送的17520(40107661+1460-40091601)字節的數據被確認,如果在發送窗口大小不變的情況下,發送窗口的右邊沿變為40151296B(40133776+17520),但是因為此TCP報文段窗口字段值為24655B,因此服務器端發送窗口要比原來縮小了17520B(42175-24655),因此發送窗口右邊沿不變。發送窗口大小變化情況如圖4所示。

圖4 TCP報文時序圖
通過采用EVE-NG搭建B/S架構的虛擬網絡實踐教學平臺,實現了與學院泛雅網絡教學綜合服務平臺的互聯互通。在平臺上設計搭建虛擬網絡環境,既可以用于課堂教學演示實驗,也可以供學生課下學習研究。利用平臺進行學生分組實驗,便于教師對實驗結果的檢查,教師和學生均不受時間和場地的影響,可以在網上實時討論同一網絡場景,甚至進行遠程網絡配置和調試,隨時解決學生提出的具體問題。實踐表明,利用此平臺進行計算機網絡實踐教學效果較好,是計算機網絡實踐教學的有益嘗試。