GNS3 模擬器 (更新 2020-06-23 分頁式終端機軟體第二選擇 -- Super-Putty)

2020-06-23:Windows更新了,GNS3無法順利連線到VM。(放在安裝設定)
2020-06-21:新增了「GNS3的安裝與設定(2.2.10)」。
2020-06-20:微增修部分內容。下次更新以「安裝GNS3」作獨立的介紹。
2020-06-19:IOU License
2020-06-16:如何找到GNS3適合的Router與Switch
2020-06-16:GNS3 Server Network 設定

簡介

除了 《Cicso Packet Tracer》可以練習之外,另外有一個也是可以模擬真實設備的程式《GNS3》。

GNS3 的 ICON 是一隻變色龍,相較於 Packet Tracer 被閹割的指令,GNS3可以使用相當完整的指令,如果要做更深度的練習,就得使用設備模擬器才有辦法練習。(如果有實體設備那就另當別論了。)

不過,要使用這類的模擬器會有比較難的前置作業,以及虛擬機(Visual Machine)的安裝與使用,電腦的硬體也要有一定水準,建議要有 16GB 的記憶體 與 近期(3年內)中規的CUP 。記憶體不夠用可能會使電腦當機,CUP不夠強也會跑得卡頓。(如果只有4GB記憶體,就可以按上頁了。)

能省買設備的錢,但如果也省了電腦的錢,連模擬器就練不成,最後連練習都省了。

由於GNS3會牽涉到許多設定與程式的搭配,初學者很容易一頭霧水(像我),對於一個沒有網路基礎知識,會建議先練習 Packet Tracer,等到有一定能力與需求之後,再開始GNS3的前作業與使用會比較順利。




開始設置


GNS3的安裝與設定(2.2.10):這是我以2.2.10版本去寫的教學,如果沒有用過GNS3或是VM,就以這篇去設定即可,如果不行,再往下看其它的。(我也試了半天,當初覺得設定很不容易,現在把這個障礙給解了。)

要開始使用GNS3,我推薦這個教學去跟著步驟一步步來。GNS3 ( By : Yaser Rahmati)

GNS3安裝完成後是沒辦法直接就能做模擬設備的練習,因為預設是沒有設備的,因此得去抓設備的IOS,再匯入到GNS3中。教學有 Router 與 Switch 的 IOS 可供下載,就能省去工夫。
 
教學並沒有把每一步驟寫詳細,如果不是很清楚,也可以參照這裡 Jan Ho 的網絡世界,不過按照這裡的去作可能會與自己要設定的有出入。

除了這二個,還有書藉可以學習《The Book of GNS3 Build Virtual Network Labs Using Cisco, Juniper, and More》,出版於 2015年,這本有更完整的使用說明,同時寫得相當易懂好讀,也對於多種作業系統有各自說明。不過缺點是距離現在好幾年,有些提到的學習工具已經落後而沒有更新,建議就只要注意看書中是如何操作即可。

在安裝GNS3時,會有VM的可選選項,問要下載哪一個VM Software的VM檔。VM可以在同一台電腦上執行的作業系統內再開一個作業系統,就像又開一台電腦在電腦裡。如果只有一台電腦,那就很難在這電腦上做二台以上的設備連接練習。透過VM可以電腦上多模擬出一台主機,這樣的環境就相當接近真實情況,只在差沒有實體。

VM APP有 VMware 跟 Visual Box 可選擇,個人認為選哪一個都可以。不過要記得,當VM執行的時候,一旦 focus 在虛擬主機的視窗時,鍵盤與滑鼠的輸入跟移動都會在虛擬主機上,如果虛擬主機不支援滑鼠,鼠標就會消失,這時左右移都無法使鼠標移回主系統上。

如何喚回被VM鎖住的鼠標
VMware: Alt + Ctrl
Visulal Box: right Ctrl

個人在這些地方吃了虧,也是新手很容易掉入的陷阱,特別強調。如果不會處理,最糟就是重開機(實體)去解決。 這組合鍵一定要先牢記!!!

雖然有GNS3 Server有 Local 可選,意思是不用VM APP去開一台虛擬主機就直接模擬在主系統上。除非是系統或硬體的問題,不然能上VM,就建議上VM,也就是用VM Software開一台 GNS3 Server。然後GNS3做模擬時把設備放在GNS3 Server去運作。

VM有效能使用限制,並與主系統作出區隔,可以想像二者中間有一道牆,大可放心在VM上做操作。如果在VM上不小心放了一把火,也不會燒到主系統。如果弄壞了,VM可以刪除再重置,但主系統壞掉,就可不是三兩下可以解決的事。

也可能是在 GNS3 Server 上做跑設備模擬的效率比較好,總之能用VM就用VM。





GNS3 Server Network 設定


 GNS3 VM(server) 如果不能連到 Inertnet ,那麼就要設置  Network ,才可以正確連到 Inertnet 。能連上Internet後,GNS3 VM就可以跑版本更新(建議不要,GNS3 VM 跟 Client 版本要一致才能運作)。

首先整個電腦可以看成是一個路由器,所以 VM 的網卡是可以跟同電腦的其他網卡介面互通。電腦的實體網卡能夠連上 Internet,所以 VM 的 Gateway 要是一個電腦網卡有的位置即可,不過最好是指向那台連到外部的路由器的 IP位置。

如果是 Windows ,按下「Win+ R」,執行「cmd」,輸入「ipconfig /all」就可以查看電腦上所有網卡介面的 IP 資訊,找到實體網卡的位置,將 VM 的 Gateway 與 DNS server 位置也照樣設定即可。

每個人的網卡資訊可能會有所不同,但以自己的為主,這樣才能正確設定。



如果是用 DHCP 取得 IP位置,那實體網卡的位置可能會異動。可以啟用 Loopback  並設置 IP 位置,然後把 gateway 指向它;又或者用下方的預設閘道的 IP 位置當Gateway。



如何找到GNS3適合的Router與Switch


GNS3並不是所有的設備IOS都能順利運行,一開始什麼都沒有,就要靠自己去找,但這是沒效率的,因為你可能找到許多不適合的。但所幸的是,官方提供一個「清單」並內建在GNS3裡,只要找到清單,去找到清單上的設備版本號,下載下來就放入GNS3就可以了。

點擊「New template」
點擊「New template」

選擇第一項「Install an appliance from the GNS3 server」

找到自己想加入的Router、Switch或其它

下一步決定要安裝在Local或是Server。再按下一步。



照著版本號搜尋,副檔名要換成 .bin

GNS3除了提供IOS的版本號,還有其雜湊值MD5可以對照,要注意的是「MD5 是 .image 的」,如果直接 import 用 .bin 檔,會跑出警示視窗說MD5不同會有風險。將 .bin 檔解縮後,如果其產生 .image 之MD5跟清單上的不同才有問題,一樣的話就大可放心匯入。

但建議直接把 .image 放入其GNS3的IOS資料夾中,不要用GNS3匯入 .image 檔。(個人會卡住)
資料夾位置在:(WINDOWS) 使用者/使用者名稱/GNS3/images/IOS/

除了照官方清單去找,也可以去找一些別人整理好的。由於中文族群會先找到的是以對岸且需要權限的人才有資格下載,對於一般人是不友善的,因此得去英文系去找資源。要記得別人找好的資源未必全部都是官方推薦的,如果IOS有對上官方清單,代入的時候是有 idle 值,而不需要再計算

但有些來源是不錯的,且又被JN我發現,就在這裡放上連結。

GNS3之IOS(google drive)  http://srijit.com/working-cisco-ios-gns3/




IOU License

簡單易解的方法 <= GNS3 VM能連上網就看這個,解決IOU License的問題。

GNS3是裡面有一些設備模擬器: Dynamips、 Qemu、IOU和Docker。如果Qemu去模擬 Switch 那相當花時間才能啟動完成,要是有試過就會發現到。

在Layer2 Switch還有一種設備模擬器選擇「IOU」。

取得 .bin檔案 的方法可參考上方,但是匯入之後,還需要 License 才能使用,無法直接使用。搜尋之後,「CiscoIOUKeygen.py」這個關鍵字出現,簡單看了一下,是用 UesrID 、 UserName 和 Key 去算出 License。

UesrID + UserName + Key => License

※要以自己的UesrID 、 UserName 為主,切記網路上的例子可能與自己的不同。

因此,對於每台電腦都會有不同的 License ,但基於 VM 的,我覺得每版 VM 只要不改其 name 都用預設名稱,就會有一個固定的 license ,直接套入,就不需要 CiscoIOUKeygen 。

但我改了名稱,經過一番找方法之後,前面找到的方法都是用檔案傳輸的方式去把 CiscoIOUKeygen.py,傳到Server 運行就能得到 License;但,檔案傳輸似乎在某一版之後就被拿掉了,更別提還得要去找  CiscoIOUKeygen.py。

連結是我認為最好的方法,只要確保Server能連線,就能按步驟得到 License 。至於 GNS3 Server的連線設定,請看上方「GNS3 Server Network 設定」。最後要跳出 GNS3 Server 的 Shell時,可以打「sudo reboot」就能重新啟動。

「sudo reboot
重新啟動