1. 程式人生 > >Hyper-V 搭建獨臂路由器(單網絡卡也可以)

Hyper-V 搭建獨臂路由器(單網絡卡也可以)

2020年原本難得清閒的春節,由於疫情的原因只能在家裡看視訊打發時間。開啟某奇藝,全是某某公寓的推薦真的是受不了。一群人在那裡嘰嘰喳喳,超前點播更是吃像難看,實在是沒意思,所以決定搞一個獨臂路由器玩一玩。

啥是獨臂路由器

單臂路由(router-on-a-stick)是指在路由器的一個介面上通過配置子介面(或“邏輯介面”,並不存在真正物理介面)的方式,實現原來相互隔離的不同VLAN(虛擬區域網)之間的互聯互通。

有啥用

其實上面的定義就說明了這完意有啥用。

我電腦上有幾個虛擬機器,橋接形式設定了固定IP(因為有時候可能要在別的電腦上訪問這幾個虛機),自己在家裡玩的時候還好。但是隻要一換環境,比如我把我的電腦拿去給別人演示,而新環境的網段並不一定和家裡的一樣。所以我想讓所有虛機或容器處於固定IP狀態。

實現方式 Hyper-V + LEDE韌體

這裡說一下,之前在油管上看了一個視訊內容大概是用舊電腦做獨臂路由器,當然他這樣做的目的是因為他想讓這臺電腦代理家裡的所有裝置訪問大千世界,和我的目的不太一樣。

用舊電腦和工控機可以實現的東西,用虛機應該也可以實現,查了查果然可以。

Hyper-V 的選擇原因

Hyper-V瞭解的不多,只知道的是Windows自帶的虛擬機器,其增強會話功能只支援Windows。我選擇它的主要原因就是他在記憶體方面使用很無感,不像VMware那樣每次關機都要等很長時間用來讓它釋放記憶體。

實現原理

路由器

先說一下路由器的實現方式,後面的網線插口有兩種,一種WAN口一般只有一個,一種是LAN口有若干個。WAN口處用來連線貓或者交換機,LAN口用來連線電腦或伺服器。

WIFI就不說了,和這裡沒關係。。。。

LEDE

Linux嵌入式開發環境專案(Linux Embedded Development Environment,LEDE),是路由器韌體專案OpenWRT的一個復刻分支專案,並繼承原來OpenWRT的開發目標。2018年1月 LEDE 和 OpenWRT 正式宣佈合併,合併後的專案使用 OpenWrt的名字。

上面是百度百科對LEDE的說明,用人話說就是用這個完意可以自己重新刷路由器的韌體(直接把韌體刷進路由器中,我還沒有試過,感覺應該有些受限條件,比如,路由器支不支援等等)。當然這個完意其實就是一個Linux系統,可以重灌系統到電腦裡,也可以放在虛擬機器裡。


所以實現方式就是,在自己的電腦裡裝一個LEDE虛擬機器並分配一塊網絡卡給它單獨使用來充當軟路由。然後通過Hyper-V虛擬交換機的配置來實現WAN口連線外部網路環境,LAN口開放給本地電腦和所有虛擬機器。

這樣配置好後,這臺電腦的上網方式就不在是直接連線外部網路,而是外部網路接入LEDE虛擬機器,然後本地電腦和其它虛擬機器都通過LEDE虛擬機器訪問外部網路。

LEDE虛擬機器安裝

  1. WIN10啟用Hyper-V功能(應該只Windows10專業版企業版才會有),確認WIN10版本後,在啟用或關閉Windows功能中勾選Hyper-V就好了,應該會重啟。

  2. 在koolshare論壇下載映象

    以下是映象列表

    檔案 大小 更新時間
    信步等特殊機型專用 - 2019-10-05 14:43:59
    虛擬機器轉盤或PE下寫盤專用 - 2019-09-30 14:56:59
    .img或.gz可以直接在LEDE系統Web升級,如需要轉盤或PE寫盤請下載轉盤資料夾下的映象 0.00B 2019-09-30 13:19:40
    openwrt-koolshare-mod-v2.31-r10822-50aa0525d1-x86-64-combined-squashfs.img.gz 40.18MB 2019-09-30 13:19:41
    openwrt-koolshare-mod-v2.31-r10822-50aa0525d1-x86-64-uefi-gpt-squashfs.img.gz 41.13MB 2019-09-30 13:19:41
    openwrt-koolshare-mod-v2.33-r12074-007caa48d1-x86-64-combined-squashfs.img.gz 56.94MB 2019-09-30 13:19:42
    openwrt-koolshare-mod-v2.33-r12074-007caa48d1-x86-64-uefi-gpt-squashfs.img.gz 57.43MB 2019-09-30 13:19:43
    uefi.md 147.00B 2019-09-30 13:19:43
    version.md 147.00B 2019-09-30 13:19:43

    映象檔案有很多個,區別看檔名就好了。我選擇的是虛擬機器轉盤或PE下寫盤專用下的x86-64-uefi-gpt-squashfs.vmdk版本。

    下載連結:LEDE_X64

  3. 上面之所以選擇下虛擬機器或PE下寫盤專用的檔案,是因為我擔心映象裡有針對虛擬機器的支援。但是這個映象的副檔名是.vmdk的,這個完意是VMware虛擬硬碟的副檔名。如果用VMware自然沒有這個問題了。所以這個時候需要下載一個軟體StarWind V2V Converter,這個工具的作用就是將VMware的虛擬硬碟轉換為Hyper-V的虛擬硬碟。

    下載連結:StarWind V2V Converter

    轉換步驟

    • Local file
    • 選擇從koolshare下載的檔案
    • Local file
    • VHD/VHDX
    • 這一步比較關鍵VHDX growable image和VHDX pre-allocated image這兩個選項都是可以的,區別在於虛擬硬碟的空間是否可以增長。但是另外兩個選項就不可以選了,我在安裝過程中發現似乎只可以使用VHDX的虛擬硬碟。
  4. 新建虛擬機器
    這一步比較簡單,正常新建並使用已有虛擬硬碟的建立方式就可以了。

    注意

    • 如果下載的是uefi版映象或虛擬硬碟,自然選擇第二代啟動方式。
    • 第二代啟動方式情況下,先不急於啟動虛擬機器,在虛擬機器設定 > 安全 > 啟用安全啟動的選項勾掉。
  5. 啟動虛擬機器,載入完之後在頁面上回車一下,如果出現OPENWRT的Logo說明安裝成功了。

配置虛擬交換機

  • 內部

新建一個內部交換機,作為LEDE虛擬機器的LAN口,然後所有虛擬機器和本地電腦都連線這塊虛擬網絡卡。

  • 外部

新建一個外部交換機,在下拉選中選擇一塊網絡卡,這塊網絡卡就是電腦連線外部網路的實際網絡卡,勾掉允許管理作業系統共享此網路介面卡,意為只有連線這個虛擬網絡卡的虛擬機器才會有使用這塊實際網絡卡的許可權,並作為LEDE虛擬機器的WAN口連線外部網路。

  • 虛擬網絡卡連線步驟

    • LEDE虛擬機器依次新增上面新建的內部網絡卡和外部網絡卡(好像只有這個順序有用)。
    • 新增好後在虛擬機器上的硬體名稱叫網路介面卡,在這兩個介面卡的高階功能裡勾選上啟用MAC地址欺騙。
    • 重啟LEDE虛擬機器,然後在本地電腦的網路介面卡中找到上面新建的內部網路手動分配IP地址。我分配的資訊如下:

      IP地址 192.168.1.10
      子網掩碼 255.255.255.0
      預設閘道器 192.168.1.1
      首選DNS伺服器 192.168.1.1
    • 如果不出問題的話,現在WIN10的網路和Internet的狀態中應該可以看到連線了上面建立的內部網絡卡。

  • 配置軟路由

通過訪問192.168.1.1可以訪問軟路由,密碼為koolshare,進入之後將WAN口的橋接選項勾掉。


到這裡所有配置就都完成了。所有虛擬機器都可以配置內部網絡卡然後經由LEDE虛擬機器訪問外網,這樣所有虛擬機器同屬於同一網段,不再因外部環境變化而受到影響