virtualbox結合nat和host-only設置固定ip的環境
需求
平時在做一些實驗或學習的時候,比如rocketmq、kafaka、zookeeper等,需要在虛擬機上創建幾個虛擬機組成集群來做實驗;一般有兩個要求:
- 虛擬機能訪問網路,需要下載安裝東西
- 虛擬機的ip需要固定;不然在虛擬機重啟或者電腦從家裡拿到辦公室的時候,ip變了,又要一個個進命令行去看ip,然後改程式碼里的配置,麻煩的很
- 虛擬機之間能互相訪問,集群/主從架構節點需要互相通訊
網路連接方式選擇
可以訪問網路的連接方式:
- nat(網路地址轉換)
- 橋接
但是,
- NAT不支援靜態IP、虛擬機之間不能互相訪問
- 橋接的話會佔用區域網的ip,在自己屋裡還好,設備少,可以避開,要是拿到辦公環境就容易和其他機器的ip衝突了
多塊網卡 NAT + Host Only
直接用橋接模式,到時能滿足需求,但是也不大好; 但是我們這是用的虛擬機,有多個網卡
我們可以通過多個網卡,設置不同的網路連接方式,達到目標;
- 第一個網卡選擇 NAT 模式使得虛擬機能訪問網路
- 第二個網卡選擇 Host Only 使多個虛擬機之間能互相通訊並且還能設置靜態ip
1. 第一塊網卡設置NAT
首先 VirtualBox 使用 NAT 模式,需要先開始一個全局設置 (管理 -> 全局設置)
然後網路連接設置為 NAT
ping 一下網路試試
2. 第二塊網卡設置 Host Only
設置靜態ip
進入網卡配置目錄 cd /etc/sysconfig/network-scripts
找 ifcfg- 開頭的文件, 由於現在有多個網卡,ifcfg的文件有多個
那麼編輯哪個呢?網卡有唯一的 mac 地址,看看第二塊host only 的網卡mac地址為
看看虛擬機網路 ip addr
可以看到,第二塊網卡mac地址對應的設備為 enp0s8
那麼編輯的文件應該是 ifcfg-enp0s8
BOOTPROTO=static ## 改為static靜態ip
IPADDR=192.168.56.104 ##設置靜態ip
NETMASK=255.255.255.0 ## 設置子網掩碼
注意:IPADDR 和 NETMASK 要和宿主機的網路設置匹配;我自己的筆記型電腦 ip是 192.168.56.1 所以上面虛擬機的ip地址只能設置成 192.168.56.x 這個ip段
從筆記型電腦(宿主)ping一下虛擬機試試
成功! 其他台虛擬機可以用一樣的方式去設置,或者再配置完整個虛擬機環境(網路、基本的java環境、zookeeper節點)後,直接利用virtual box複製後改改ip 更省事