virtualbox結合nat和host-only設定固定ip的環境

mushishi發表於2021-07-25

需求

平時在做一些實驗或學習的時候,比如rocketmq、kafaka、zookeeper等,需要在虛擬機器上建立幾個虛擬機器組成叢集來做實驗;一般有兩個要求:

  • 虛擬機器能訪問網路,需要下載安裝東西
  • 虛擬機器的ip需要固定;不然在虛擬機器重啟或者電腦從家裡拿到辦公室的時候,ip變了,又要一個個進命令列去看ip,然後改程式碼裡的配置,麻煩的很
  • 虛擬機器之間能互相訪問,叢集/主從架構節點需要互相通訊

網路連線方式選擇

可以訪問網路的連線方式:

  • nat(網路地址轉換)
  • 橋接

但是,

  • NAT不支援靜態IP、虛擬機器之間不能互相訪問
  • 橋接的話會佔用區域網的ip,在自己屋裡還好,裝置少,可以避開,要是拿到辦公環境就容易和其他機器的ip衝突了

多塊網路卡 NAT + Host Only

直接用橋接模式,到時能滿足需求,但是也不大好; 但是我們這是用的虛擬機器,有多個網路卡
image

我們可以通過多個網路卡,設定不同的網路連線方式,達到目標;

  • 第一個網路卡選擇 NAT 模式使得虛擬機器能訪問網路
  • 第二個網路卡選擇 Host Only 使多個虛擬機器之間能互相通訊並且還能設定靜態ip

1. 第一塊網路卡設定NAT

首先 VirtualBox 使用 NAT 模式,需要先開始一個全域性設定 (管理 -> 全域性設定)

nat網路明細

然後網路連線設定為 NAT
image

ping 一下網路試試
image

2. 第二塊網路卡設定 Host Only

image

設定靜態ip

進入網路卡配置目錄 cd /etc/sysconfig/network-scripts
ifcfg- 開頭的檔案, 由於現在有多個網路卡,ifcfg的檔案有多個
image

那麼編輯哪個呢?網路卡有唯一的 mac 地址,看看第二塊host only 的網路卡mac地址為
image

看看虛擬機器網路 ip addr
image
可以看到,第二塊網路卡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段
image

從筆記本(宿主)ping一下虛擬機器試試
image

成功! 其他臺虛擬機器可以用一樣的方式去設定,或者再配置完整個虛擬機器環境(網路、基本的java環境、zookeeper節點)後,直接利用virtual box複製後改改ip 更省事

相關文章