VMware?

VMware提供的NAT聯網功能,利用 網路地址轉換原理 使虛擬機器與主機共享一個外網IP地址,從而實現主機與虛擬機器同時訪問Internet,十分方便。然而如果我們使用了銳捷客戶端作為網路認證的工具(這在國內大學基本上是強制的),其多網絡卡限制措施會每隔固定時間將“Vmware NAT Service”服務關閉,導致虛擬機器無法訪問外部網路。在筆者試驗了多種網上流傳的方法無效後,採用了此種折衷之法,希望能幫到各位。

工具/原料

VMware workstation 虛擬機器程式

配置好網路的虛擬機器(此處筆者使用的是centos7)

本經驗原理

首先在工作列(螢幕最下邊的黑條)的空白處單擊滑鼠右鍵,選擇工作管理員,然後切換到 服務 欄,按描述排序,檢視虛擬機器的服務是否開啟。其中VMware NAT Service 服務便是連線外網的必須服務,如果此服務被關閉,將無法連通外網。如圖1,NAT服務已經在執行。

VMware NAT方式與銳捷客戶端衝突解決辦法

可以使用ping 命令進行檢驗,圖2為NAT服務執行時的結果,圖3為關閉時的結果。

VMware NAT方式與銳捷客戶端衝突解決辦法

VMware NAT方式與銳捷客戶端衝突解決辦法

根據筆者觀察,銳捷客戶端會大概每37秒(本機測試結果僅供參考)關閉VMware NAT Service ,因此如果我們在它關閉之後的極短時間裡重新開啟該服務,則可以繼續使用網路,這便是本經驗的核心思想。因此筆者想到了批處理程式。

為了實現上一步驟所述思想,筆者寫了一個批處理程式,程式碼如下:

@echo off

:s

ping -n 1 127.1>null

net start findstr /i /c:"VMware NAT Service">nul&&set k=1 set k=0

if %k%==0 (net start "VMware NAT Service")

goto s

上述程式碼在此不作深究,原理便是不斷的檢測(1秒)“Vmware NAT Service”是否開啟,如果已開啟則不做處理,否則立即開啟該服務。如圖4

VMware NAT方式與銳捷客戶端衝突解決辦法

程式實現

明白了上述原理後,只需寫出該批處理程式並執行即可。

首先先建一個文字文件,開啟後複製貼上上述程式碼,然後點選左上方檔案--另存為--將儲存型別改為所有檔案--輸入檔名.bat,副檔名.bat不可更改。如圖5

VMware NAT方式與銳捷客戶端衝突解決辦法

選中剛才儲存的檔案,右鍵選擇以管理員身份執行,執行成功後會出現 如圖6 介面,說明程式已經在工作了,現在再去測試虛擬機器網路就可以上網了。但是此時這個執行介面不會隱藏,會一直有一個黑框在你的工作列上,如果想要解決請看下一部分。

VMware NAT方式與銳捷客戶端衝突解決辦法

將程式變為後臺執行

因為批處理程式沒有隱藏功能(那個黑框不能隱藏),我們需要藉助VBS指令碼程式和計劃任務將其隱藏起來,避免誤操作關閉程式。

首先寫VBS指令碼程式,方法同上述“程式實現第1步”,只是在儲存時將副檔名需改為.vbs.程式碼如下:

set ws=WScript.CreateObject("WScript.Shell")

ws.Run " E:\Devount\Documents\VMware_service\VMNAT.bat ", o

其中加粗傾斜部分為上一步驟所寫.bat程式的儲存路徑。如圖7

VMware NAT方式與銳捷客戶端衝突解決辦法

然後將儲存好的vbs程式加入到計劃任務裡就可以了。

依次開啟 控制面板--所有控制面板項--管理工具--任務計劃程式--任務計劃程式庫--建立任務 ,如圖8

VMware NAT方式與銳捷客戶端衝突解決辦法

輸入計劃任務名,勾選“使用最高許可權執行”(十分重要),如圖9

VMware NAT方式與銳捷客戶端衝突解決辦法

切換到觸發器選項,選擇觸發條件,此處我選擇“登入時”,儲存,如圖10

VMware NAT方式與銳捷客戶端衝突解決辦法

切換到操作選項,新建操作,選擇啟動程式,將前面寫好的vbs程式新增進來,儲存。如圖11。

VMware NAT方式與銳捷客戶端衝突解決辦法

全部儲存後應該能看見一個你命名的程式,然後右鍵執行,大功告成,如圖13,接下來你就可盡情使用你的虛擬機器了。

VMware NAT方式與銳捷客戶端衝突解決辦法

注意事項

本經驗根據筆者個人親身經驗總結而成,如有錯漏敬請指正。

相關問題答案