寫這篇的緣由是這個問題出現了好幾回,每次都要耽誤好久去從新查資料解決,因此決定記下來。linux
問題描述:git
因爲公司服務器重啓致使出現過如下幾種狀況:shell
1.在Xshell裏鏈接虛擬機映射時鏈接失敗windows
2.可以鏈接上虛擬機的映射地址,但git pull時報錯沒法解析hostname服務器
由於以前出現過一、2這兩種狀況,在找了一天方法未果以後諮詢了大神朋友才解決,也由於不是本身解決的,因此對這個過程包括虛擬機的使用都並不清楚,此次從新出現問題2,又從新查了一遍資料,纔算是對虛擬機有了一點點了解。由於有以前的問題,因此此次問題出現就想到是虛擬機IP問題。網絡
問題1第一次出現時是由於當時虛擬機IP沒有固定,換了一個IP因此鏈接失敗,把本地映射地址改爲新IP就行了。編輯器
問題2雖然也是IP問題,可是感受跟問題1不太同樣,主要仍是虛擬機網絡配置問題。命令行
首先去虛擬機查看了IP,而後發現虛擬機沒有IP,原來配的IP不見了,因此按照NAT模式從新配了一遍IP,可是也沒有用,後來查資料說網關也須要配,都沒有什麼用,因此仍是按照資料的方法從新從網絡模式開始配置。3d
能夠看到三種不一樣模式對應的狀態,其中VMnet1,VMnet8的IP都是隨機分配的,若是想要從新設置,或者在主機上看不到對應的VMnet1,VMnet8虛擬網卡,只須要點擊左下角的恢復默認設置,便可看到虛擬機中這兩個方式IP變了的同時,主機上的虛擬網卡也更新了。主機查看虛擬網卡設置能夠到網絡中心設置:rest
從上面能夠看出,主機是沒有橋接模式對應的VMnet0虛擬網卡的,下面介紹三種方式的區別:
1、Bridged(橋接模式)
橋接模式就是將主機網卡與虛擬機虛擬的網卡利用虛擬網橋進行通訊。在橋接的做用下,相似於把物理主機虛擬爲一個交換機,全部橋接設置的虛擬機鏈接到這個交換機的一個接口上,物理主機也一樣插在這個交換機當中,因此全部橋接下的網卡與網卡都是交換模式的,相互能夠訪問而不干擾。在橋接模式下,虛擬機ip地址須要與主機在同一個網段(即地址前三個數相同),若是須要聯網,則網關與DNS須要與主機網卡一致。
先確認一下主機的IP地址,網關以及DNS信息,Window+R輸入cmd進入命令窗口,輸入命令ipconfig/all便可查看:
也能夠到網絡中心點擊當前鏈接查看,若是主機的IP是自動獲取的,在網絡中心看不到,只能用命令行:
在開啓虛擬機前先選擇鏈接模式:編輯虛擬機設置——網絡適配器——橋接模式
打開虛擬機後開啓命令行,輸入命令vi /etc/sysconfig/network-scripts/ifcfg-eth0編輯IP配置文件:
此處應將IP地址設置和主機地址在同一網段,網關地址和DNS地址和主機同樣,由於我用的是NAT模式,且自動獲取IP,因此個人文件沒有改,改完保存重啓虛擬機或者虛擬網卡(命令:service network restart若是沒用多是權限不夠改用sudo service network restart)。而後能夠Ping一下主機地址試試能不能通,想要看主機和虛擬機之間是否通訊正常,能夠在主機新建虛擬機地址的網絡映射,在Xshell裏看能不能鏈接成功。
2、NAT(地址轉換模式)
虛擬機不佔用主機所在局域網的ip,經過使用主機的NAT功能訪問局域網和互聯網,意味着虛擬機能夠訪問局域網中的其餘電腦,可是其餘電腦不知道虛擬機的存在。使用這種模式時,虛擬機不須要設置靜態IP,只須要使用DHCP功能自動獲取ip便可。這個地方讓我耽誤了好久,由於一開始想的固定IP比較方便,因此沒有設置自動獲取,結果不停換IP都不行,後來設置了自動獲取全部問題都解決了。
配置過程:首先在虛擬網絡編輯器裏設置NAT模式裏的NAT設置網關地址和DHCP設置虛擬機IP範圍,通常默認的設置都不用改,主要爲了確保都在同一個網段:
而後設置主機VMnet8虛擬網卡的IPv4設置:
此處要把IP地址設置爲虛擬機中NAT模式下設置的網關地址,我設置了自動獲取(最好也不要設置自動獲取,感受會出問題),好像也是能夠的,同時個人虛擬機地址也是自動獲取的(事實證實最好這個不要自動獲取,否則三天兩頭本身換IP又會出問題。。),若是想要固定IP地址,就到虛擬機裏設置/etc/sysconfig/network-scripts/ifcfg-eth0文件中的各地址,此時設置的IP要在DHCP設置範圍內,網關地址也要跟主機的網關地址同樣,我第一次設置了跟虛擬機網關地址同樣,次日就又出問題了,今天改爲了主機的網關地址,又好了,因此等若是有問題我再來改。
在這個時候會發如今VMnet8的網絡設置裏是顯示IPv4沒有網絡訪問權限的,也就是說虛擬機不是靠虛擬網卡來連網的,只是用來讓主機和虛擬機進行通訊的。
3、Host-Only(僅主機模式)
Host-Only模式其實就是NAT模式去除了虛擬NAT設備,而後使用VMware Network Adapter VMnet1虛擬網卡鏈接VMnet1虛擬交換機來與虛擬機通訊的,Host-Only模式將虛擬機與外網隔開,使得虛擬機成爲一個獨立的系統,只與主機相互通信。也就是說虛擬機只能和主機通訊,不能連網。結構圖以下:
步驟基本和NAT同樣,設置固定IP時虛擬機IP要和VMnet1在同一網段,網關一致,DNS地址要和主機相同。
在這個過程當中我出現的問題:
主機的Xshell鏈接不到虛擬機:最後發現時VMnet8裏我把IP寫成了虛擬機的IP,應該寫虛擬機的網關地址。
一些網絡常識:
1.網絡中對電腦的訪問是經過ip定位的。
就好像咱們的身份證號,能夠惟一辨識一我的。ip是用來區分網絡中的電腦的,所以同一網絡(準確講是「網段」)中,ip地址不能相同。若是同一網絡中有相同的ip存在,常常發生沒法聯網或者常常掉線的狀況。