環境要求
最近在使用virtualbox搭建乙個實驗環境,由於公司規定了所有的機器都不能使用固定ip,都必須由dhcp自動獲取。
為了不影響公司整理的網路環境,只能把實驗用的網路環境限制在使用內部ip上。因此,這個實驗環境必須滿足如下的需求(注意這三個需求是and的關係,必須同時滿足):
需求1:從主機可以通過靜態ip訪問到每乙個虛擬機器,從虛擬機器中可以訪問主機(主機也有乙個固定的靜態ip)
需求2:虛擬機器之間組成乙個由靜態ip構成的網路,而且虛擬機器之間可以互相訪問
需求3:從主機,從虛擬機器都可以訪問internet
類似於這樣:
基本思路
為了滿足上面的三個需求,我準備在虛擬機器裡面加三個網絡卡來完成,思路如下:
eth0: 網絡卡1,使用 僅主機(host-only)介面卡 的連線方式,完成 需求1,即:從主機可以通過乙個靜態ip訪問到每乙個虛擬機器,從虛擬機器中可以訪問主機(主機也有乙個固定的靜態ip)
eth1: 網絡卡2,使用 內部網路 的連線方式,完成 需求2,即:虛擬機器之間組成乙個由靜態ip構成的網路,而且虛擬機器之間可以互相訪問
eth2: 網絡卡3,使用 網路位址轉換(nat) 的連線方式,完成 需求3,即:從主機,從虛擬機器都可以訪問internet
說了這麼多,其實還差一塊,那麼到底主機與虛擬機器之間是怎麼連線的呢?
細心的人可能會發現,在我們安裝好virtualbox之後,主機的系統裡面會多出乙個連線,virtualbox host-only network,這個是virtualbox自動生成的乙個連線;而另外乙個 本地連線 就是實際的網絡卡的連線:
上圖的兩個連線,以及虛擬機器裡面的三塊網絡卡互相配合,組成了下面的網路結構圖:
配置主機的內網靜態ip
開啟 orcale vm virtualbox管理器,從選單中選擇 管理 – 全域性設定;在彈出的視窗中選擇 網路,然後再選擇 僅主機(host-only)網路(h) 標籤頁,雙擊 virtualbox host-only ethernet adapter, 修改裡面的ip位址,為了尊重傳統,我選擇192.168.1.1,如下圖所示;
接著,關閉dhcp伺服器,如下圖所示:
上述設定完成後,檢視主機的位址,可以看到如下的資訊;
配置虛擬機器的網絡卡
加入第一塊網絡卡 eth0,將 eth0 配置成如下圖的方式:
接著加入第二塊網絡卡 eth1,將 eth1 配置成如下圖的方式:
注意,虛擬機器之間的內網名字可以隨便起,這裡叫做 neta。如果在配置在第二個虛擬機器的時候,也要記得選擇 netca 這個內網名字,這樣虛擬機器之間才可以互相通訊。
最後,加入第三塊網絡卡 eth2,配置如下:
儲存,啟動虛擬機器,安裝系統。
在虛擬機器內部配置網絡卡
其次,配置 eth1,要注意內網我們選擇 192.168.0. 這個網段,eth1 的ip位址配置為 192.168.0.2:
最後,重新啟動一下網路服務:
# service network restart
檢視一下我們配置後的結果:
也就是說,現在這台虛擬機器有三個ip:
192.168.1.2: 和主機通訊使用
192.168.0.2: 和其他的虛擬機器通訊使用
10.0.4.15: 是自動獲取的,通過virtualbox的位址轉換功能,用來訪問外網internet
如果再新建一台虛擬機器,還是需要參考上面的步驟,為每個虛擬機器都設定三塊網絡卡。
對需求1的驗證
通過主機來 ping 虛擬機器,結果如圖,成功!
需求2的驗證
虛擬機器之間互 ping,結果如圖,成功!
需求3的驗證
從虛擬機器直接上外網,如圖,成功!(注意:請確認你的主機和虛擬機器都使用了相同的**伺服器設定)
virtualbox搭建centOS環境
軟體準備 virtualbox oracle發布的一款虛擬機器軟體。centos 6.3 i386 bin 1.iso cenos系統 www.2cto.com 第一步 安裝virtualbox,這個裝軟體和其他軟體一樣,按自己需要選擇下一步就可以了。第二步 安裝系統 新建虛擬電腦 如果不是有什麼特...
VirtualBox搭建系統集群(二)
然後解壓安裝 tar xzvf tcl8.6.1 src.tar.gz cd usr local tcl8.6.1 unix configure make make install 安裝成功以後我們進入到redis目錄下執行make test 跑完測試 然後執行make install 安裝完成後我...
2 開發環境搭建1
step1 採用語言 c 開發環境 centos6.3 安裝過程基本上按照 configure make make install 一路下來。接下來需要測試一下安裝是否成功,需要編寫最簡單的 來測試各個軟體 首先是protobuffer,測試 如下 gen.sh protoc cpp out tes...