在虛擬機器中使用軟路由進行組網

kevenano發表於2021-01-04

起源

在學習計算機網路的過程中瞭解到了軟路由,想整一個來玩一玩,但又不想在硬體上花錢,於是就想能不能在虛擬機器中裝上軟路由系統,然後在虛擬機器中進行組網,讓其它的虛擬機器通過該裝有軟路由的虛擬機器接入網路。於是四處學習1,查閱資料,從軟路由韌體的選擇,到VM的三種網路連結型別,到用Packet Tracer畫拓撲,到軟路由的安裝與配置,再到虛擬機器組網、測試,走了不少彎路,也踩了不少坑。最後寫下這篇文章,以作記錄。

1. 明確目標

這次要折騰的是軟路由,由於不想整硬體,固採用虛擬機器的方式實現。最終目標:在VM內建立的虛擬機器都經過虛擬軟路由上網,從而模擬真實環境下的軟路由組網。

2. 實驗裝置和軟體

  1. 宿主機器一臺
    這裡用自己的筆記本
  2. 軟路由韌體
    第一次接觸軟路由,一番查詢後,決定採用openWrt。但是按照官網2的教程,需要自己動手做一次檔案轉換才能用於VM,但官網只給出了Linux和OS X的操作方法3。於是這裡選擇KoolShare的韌體4
  3. 虛擬機器
    VMware Workstation Pro 15.5 PRO預安裝有兩臺虛擬主機:CentOS 8 和 Ubuntu 20
  4. Cisco Packet Tracer 用來畫拓撲

3. 具體步驟

Step 1. 粗畫拓撲

軟路由wan口連線Internet,lan口通過一個交換機連線多臺虛擬機器。
粗畫拓撲

Step 2. 搞清楚VMware虛擬網路的實現方式(關鍵)

通過查閱官方文件[4]可以獲取到詳細資訊

  1. 虛擬網路連線元件
    包括虛擬交換機、虛擬網路介面卡、虛擬 DHCP 伺服器和 NAT 裝置。我們主要關注虛擬交換機和NAT裝置
    a) 虛擬交換機
    與物理交換機相似,用於連線各種元件。虛擬交換機又稱為虛擬網路,其名稱為 VMnet0、VMnet1、VMnet2,以此類推。(就是用來連線我們的軟路由和其它虛擬主機,讓他們處於同一子網)
    需要注意的是,有三臺虛擬交換機已經預先對映到了特定的網路
    b) 虛擬網路介面卡
    網路卡
    c) 虛擬DHCP伺服器
    為子網內的虛擬機器提供IP地址
    d) NAT裝置
    具體介紹參考百科5,很有用。
  2. 常見網路連線配置(重要)
    主要有三種,橋接模式和NAT模式下,虛擬機器均可直接上網;僅主機模式下,預設虛擬機器無法上網(配置一下還是可以上的)。
    a) 橋接模式
    使用虛擬交換機VMnet0構成的網路。主要特點是虛擬機器與主機處於同一子網,與主機系統相分離,且與主機系統無關,有自己的IP地址。(個人理解:此時虛擬機器和主機的關係大概就像連線在同一WIFI下的你的電腦和你室友的電腦,寢室WIFI網路中多出1臺電腦)
    在這裡插入圖片描述
    b) NAT 模式
    使用虛擬交換機VMnet8構成的網路。使用 NAT 模式網路時,虛擬機器在外部網路中不必具有自己的 IP 地址。主機系統上會建立單獨的專用網 絡。主要特點是虛擬機器和主機系統共享一個網路標識(IP地址),此標識在外部網路中不可見。NAT 工作時會將虛擬機器在專用網路中 的 IP 地址轉換為主機系統的 IP 地址。DHCP伺服器這裡用來為該網路中的裝置分配IP地址。(連線上WIFI後,寢室電腦數量沒多也沒少;只要主機連線上了網路,虛擬機器就可以“假冒”主機的身份上網)
    NAT模式
    c) 僅主機模式
    使用VMnet1構成的網路。主要特點是虛 擬機和主機虛擬網路介面卡均連線到專用乙太網路。網路完全包含在主機系統內。虛擬機器無法連線上外部網路。
    僅主機模式
    d) 自定義
    可操作性最強,可以虛擬出一個單純的交換機用於連線我們的虛擬機器,構建成一個子網。
    官方給出的例子:
    自定義

Step 3. 分析網路需求

瞭解了VMware虛擬網路的實現方式後,就可以具體來分析我們的網路需求了。首先要確定軟路由的wan口和lan口分別應採用什麼樣的網路連線模式。WAN口要連線Internet,首先排除僅主機模式;然後,我希望我構建的虛擬機器網路是對外不可見的,同時校園網有登入認證,而橋接模式下無法保證前者,同時該模式下要用軟路由通過校園網登入認證有點麻煩,所以選擇NAT模式作為WAN口的網路連線模式。對於lan口,我只需要有臺交換機來構建成一個子網就行了,然後讓軟路由實現DHCP為lan口下的虛擬機器分配IP地址,所以選擇自定義,建立一臺虛擬網路交換機VMnet2,(這裡選僅主機模式的話,DHCP伺服器就顯得有些多餘,因為軟路由可以自己實現DHCP,同時我也不希望我的主機連線到該子網下(之後會有解釋))。

Step 4. 配置虛擬機器

1. 首先建立一個Linux核心的虛擬機器

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述

2. 配置虛擬網路(需要管理員許可權)

在這裡插入圖片描述
先點選“新增網路”新增VMnet2,配置如下
在這裡插入圖片描述我的VMnet8的配置
在這裡插入圖片描述另外,在NAT設定中還可以設定DNS,我這裡修改為了114.114.114.114
在這裡插入圖片描述
最後別忘了確認

3. 配置網路介面卡

找到剛才建立的虛擬機器,開啟虛擬機器設定
在這裡插入圖片描述新增兩塊網路介面卡
在這裡插入圖片描述一塊接入VMnet8(NAT模式)
在這裡插入圖片描述另一塊接入剛才建立的VMnet2
在這裡插入圖片描述
然後確定
在這裡插入圖片描述

4. 裝系統

這裡6選擇一個合適的vmdk,然後將其重新命名為剛才建立的虛擬機器的名字,然後找到虛擬機器的目錄,將對應的vmdk檔案替換即可。

5. 進入軟路由系統並配置網路

回到Workstation,啟動軟路由,不出意外的話,一陣瀑布流後按下回車可看到如下畫面
在這裡插入圖片描述
下面開始配置網路
在這一步我們要將軟路由與兩個虛擬網路(虛擬交換機)VMnet8和VMnet2連線起來
WAN口連線VMnet8,通過VM的NAT連線Internet,使用VMnet8提供的DHCP伺服器獲取IP地址;
LAN口要連線VMnet2,需要修改軟路由LAN口的IP地址和網路掩碼才能接入;
在這裡插入圖片描述
還應注意的是,軟路由LAN口和WAN口的介面名字要和虛擬機器設定裡面網路介面卡的順序一致
在這裡插入圖片描述
這裡我配置的相當於WAN口在前,LAN口在後,在軟路由中,ifname的值也要與之對應
命令列輸入 vim etc/config/network 回車
vim命令的使用可以參考這裡7
找到 config interface ‘lan’
修改ifname 項的值為 ‘eth1’
修改ipaddr 項和netmask項,使之與我們建立的VMnet2相匹配
由於我們VMnet2的子網IP是192.168.16.0,子網掩碼是255.255.255.0
所以可以修改ipaddr項的值為192.168.16.254,netmask項255.255.255.0
找到 config interface ‘wan’
修改ifname 項的值為 ‘eth0’
然後儲存退出
這是我修改後的效果
在這裡插入圖片描述

6. WAN口測試

在這裡插入圖片描述
在這裡插入圖片描述OK!

7. LAN口測試

隨機選取一隻虛擬機器,將其連線到軟路由LAN口所在的子網(即VMnet2)
在這裡插入圖片描述
然後啟動
設定有線連線IPv4為DHCP
在這裡插入圖片描述
測試
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述成功!
再來看看路由器的Web管理介面
瀏覽器輸入閘道器地址,即軟路由LAN口的IP地址,我這裡是192.168.16.254,密碼預設是koolshare
在這裡插入圖片描述
在這裡插入圖片描述OK!

4. 總結

  1. 至此,目標已經達成,以後想要讓虛擬機器通過軟路由上網,就只需要配置虛擬機器的網路介面卡,將其連線到軟路由的LAN口所在子網,即連線到我這裡的VMnet2,然後配置虛擬機器為DHCP,即自動獲取IP地址。
  2. 在這樣的網路拓撲下,所有的虛擬機器處於同一子網(VMnet2),虛擬機器之間可以通訊,也可以通過軟路由訪問Internet,模擬了現實中的一般情況。同時宿主主機也可以正常上網。
  3. 本次實驗最大的收穫在於瞭解了VMware虛擬網路的實現方式,知道了三種模式的區別,以及如何運用;同時,通過網路配置,也加深了對計算機網路的理解。
  4. 軟路由有很多,本實驗用到的韌體僅作參考
  5. 還有一些坑沒填。
  6. 再補一張拓撲圖
    在這裡插入圖片描述在這裡插入圖片描述

  1. https://blog.csdn.net/ballack_linux/article/details/81331527 ↩︎

  2. https://openWrt.org/ ↩︎

  3. https://openwrt.org/docs/guide-user/virtualization/vmware?s[]=vmware ↩︎

  4. https://firmware.koolshare.cn/ ↩︎

  5. https://baike.baidu.com/item/nat/320024?fr=aladdin ↩︎

  6. https://firmware.koolshare.cn/LEDE_X64_fw867/%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%BD%AC%E7%9B%98%E6%88%96PE%E4%B8%8B%E5%86%99%E7%9B%98%E4%B8%93%E7%94%A8/ ↩︎

  7. https://www.runoob.com/linux/linux-vim.html ↩︎

相關文章