虛擬機器+橋接模式+Host-only模式 搭建完美的Windows下Linux開發環境,host-onlylinux

來源:互聯網
上載者:User

虛擬機器+橋接模式+Host-only模式 搭建完美的Windows下Linux開發環境,host-onlylinux

      相信有很多鞋童和我一個樣是一枚Linux碼農(我現在還是嵌入式方向). 做Linux開發勢必需要一個Linux環境, 大多數開發人員會首先選擇一個Linux發行版, 其中Ubuntu LTS版本應該是選取最多的一個了, 原因也很簡單,  該發行版簡單易用的同時足夠穩定和普及. 選擇完發行版就要選擇怎麼安裝了, 一批人會選擇將linux系統直接安裝在開發主機上來產生一個純的Linux環境. 這種環境的優點是純淨和速度快, 不過也有一個明顯的缺點:就是Windows上大多數好用的東西都與你無緣了. 為了充分利用windows和liunx兩大系統各自的優勢, 我想肯定會很有多人和我一樣, 最終的選擇是Win10(或Win7)主機+Virtualbox(或Vmware)虛擬機器的搭配來實現雙系統共用, 這種搭配在幾年前有一個弊端是虛擬機器的效能太差而導致有些人無法接受. 不過這個缺點在近幾年已經沒有了, 因為在 i5+固態盤+8G記憶體配置滿天飛的今天, 硬體速度已經不再是問題, 加上CPU的虛擬化的支援以及虛擬機器在3D方面的強化(安裝增強工具包), 只要你不做linux遊戲開發, 我想再說虛擬機器速度慢就算是個人偏見問題了.

      使用windows+虛擬機器搭配的一個小問題是在兩個系統間切換並不那麼的方便自然, 因為你每次進入虛擬機器後鍵盤就被虛擬機器獨佔了, 想要切回windows主機, 你得先按下一個切換鍵盤控制權的快速鍵(virtualbox裡是右邊的Ctrl鍵). 像我這種嵌入式的linux開發人員幾乎所有開發活動都是在終端裡完成, 為了更加方便在windows和linux之間切換程式(同時也為了使用windows下我看著最順眼的字型: Microsoft YaHei Mono, 小小的廣告一下), 一個很自然選擇便是通過 Xshell/Putty/SecureCRT 這類SSH登入軟體來在windows上透過網路來登入虛擬機器中的Ubuntu.

      用到了SSH, 那就必須配置好虛擬機器的網路模式, 怎麼配置虛擬機器的網路模式就是今天主題了. Net模式肯定是不能用的(單通), 我想大多數小夥伴和我之前一樣, 一直使用的模式肯定是橋接模式, 這種模式最大的優點是他的外在表現幾乎和實際的網卡沒有什麼區別, 結果是虛擬機器看起來就像是一台完全獨立的PC主機插在了同一個路由器上一樣. 不過這種模式還是有一些缺點, 其中最關鍵的缺點就是橋接模式的通暢與否取決於外部的路由是否通暢. 也就是說, 如果你的電腦的有線或無線網路沒能正常的串連網路, 那麼你的windows主機和Linux虛擬機器將沒法聯通, 結果就是沒有外網SSH就無法正常使用, 這也意味著如果你用筆記本在一個沒有網路的環境中幹活, 你將不能使用SSH登入虛擬機器! 另一個缺點也是由這個關鍵的缺點引起的,  如果你的開發環境在一台筆記本上, 同時連網方式是wifi, 你正常的開了幾個SSH串連來做開發, 中午吃飯或者晚上睡覺時, 你的想法將會是:不關機了吧, 一會來又要開機開啟一堆軟體, 麻煩! 於是你很開心的讓電腦睡眠或休眠了, 下午或第二天開機喚醒你的老朋友時一個不太happy的事情可能會發生: 所有SSH串連都斷開了, 於是你不得不一個一個的將SSH串連重新關閉再重新開啟, 如果你沒有用tmux的話, 那麼更不爽事情也將會發生:所有你終端上所有開啟的軟體都關閉了!!! 好了, 我就是這種情況, 雖然我用了tmux, 但還是很不爽每次休眠都要重連SSH. 出現這種情況的原因也比較顯而易見: 睡眠後wifi將有可能自動關閉(休眠後wifi必然會關閉), 當你重新啟動後wifi將重連, 雖然重連後的ip一般不會變, 但這個串連已經不是睡眠之前的串連了, 對於SSH來說, 串連都變了, 它自然是會罷工的.

       這個問題我忍受了很久, 直接今天閑來無事, 想看看有沒有解決辦法, 在嘗試了幾次之後, 還真的找到了一個比較完美的解決辦法:

  不論是virtualbox還是vmware, 都有一個網路模式叫Host-only, 這個模式特點是他自己在主機中虛擬一個網卡, 如果你安裝了virtualbox, 那麼"網路連接"中多出來的"VritalBox Host-only Network" 網卡就是它虛擬出來的網卡, 如果我們在虛擬機器中配置使用host-only模式, 則虛擬機器中網路將會串連到這個塊虛擬網卡上, 他的IP也將由這個虛擬網卡自動分配, 預設情況下這個host-only虛擬網卡主機IP地址是192.168.56.1, 分配給第一個虛擬機器的地址一般是192.168.56.101. 由於虛擬網卡的存在, 在預設情況下的如果通過192.168.56.101去SSH串連虛擬機器, 即便主機沒有外網串連, 主機和虛擬機器之間也總是互連的, 這就解決了上面提到了第一問題, 實現了在沒有外網的情況下正常使用SSH登入虛擬機器. 怎麼樣是不是小開心了一下, 更加令人興奮的是由於該網卡是虛擬, 因此即便是休眠也不會出現喚醒後斷開網路重連的問題, 人家根本不會斷開!!! 這又解決了上面提到了第二個問題!

  喔, 我想你肯定會問這個看起來IP比較獨特的網卡應該沒有外網串連能力吧, 沒錯, 這貨的確不能直接連接外網! 但是, 有兩個方法可解決這個問題: 第一個方法是如果你主機的真實網卡是有線網路, 那麼可以過在網卡的屬性中設定共用網路來解決. 不過這個方法對wifi網卡無效. 第二個方法就比較通用了, 也是像我這種使用筆記本+wifi的唯一解決方案: 在你虛擬機器設定項中額外勾選增加第二個網卡, 將其設定為橋接模式! 這樣一來啟動虛擬機器之後Ubuntu將擁有兩個串連, 一個是host-only獲得的IP,它幾乎是固定的192.168.56.101, 另一個則是在外網通暢的情況下外網路由器DHCP分配的IP. 這兩個IP都很有用, 192.168.56.101可以用來實現無論何時Windows都可以通過SSH串連虛擬機器的需求, 同時由於這個ip比較固定, 因此的SSH軟體完全可以寫死配置中的IP地址為192.168.56.101, 另外由於這個網卡只和本地主機有關, 因此訪問速度永遠都是杠杠滴. 第二個IP是從路由器那裡得來IP, 用處就和單獨的橋接網路一樣了, 你訪問外網將自動使用這個IP, 同一個路由器局下的網域網路中的裝置對虛擬機器主機訪問也可以通過這個IP來實現, 因此, 諸如 FTP/NFS等嵌入式開發需要用到的常用開發方法都是可以正常進行的.

  怎麼樣, 大聲的告訴我, 這個方案完不完美?!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.