VirtualBox對虛擬機支持幾種不同的網(wǎng)絡(luò)方式,其中一種是NAT網(wǎng)絡(luò)。當(dāng)虛擬機啟用NAT后,VirtualBox會自動在虛擬機和主機之間進(jìn)行網(wǎng)絡(luò)翻譯,因此你不必在虛擬機和主機之間配置任何東西。這也意味著NAT中的虛擬機對于外部網(wǎng)絡(luò)以及主機本身是不可見的。這會在你想要從主機訪問虛擬機時會產(chǎn)生問題(比如SSH)。
如果你想從VirtualBox的NAT環(huán)境的虛擬機,你可以在GUI或者命令行下啟用VirtualBox NAT的端口轉(zhuǎn)發(fā)。本篇教程將會演示如何通過啟用22端口轉(zhuǎn)發(fā)而從主機SSH連接到NAT環(huán)境的客戶機。如果你先想要從HTTP訪問NAT的客戶機,用80端口代替22端口即可。
通過GUI配置VirtualBox端口轉(zhuǎn)發(fā)
在VirtualBox中選擇你想要訪問的虛擬機,打開虛擬機的“設(shè)置”。點擊左側(cè)的“網(wǎng)絡(luò)”菜單,點擊網(wǎng)絡(luò)適配選項的“高級”。
點擊“端口轉(zhuǎn)發(fā)”按鈕
你會看到一個配置端口轉(zhuǎn)發(fā)規(guī)則的窗口。點擊右上角的“添加”圖標(biāo)。
就會看到像下面那樣的轉(zhuǎn)發(fā)規(guī)則。
Name: SSH (可以是任意唯一名)
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 2222 (任何大于1024未使用的端口)
Guest IP: 虛擬機IP
Guest Port: 22 (SSH 端口)
端口轉(zhuǎn)發(fā)的規(guī)則會自動在你啟動虛擬機的時候啟用。為了驗證??梢栽谀銌⒂锰摂M機后檢查端口2222是否被VirtualBox開啟了。
$ sudo netstat -nap | grep 2222
現(xiàn)在端口轉(zhuǎn)發(fā)可以使用了,你可以用下面的命令SSH到虛擬機。
$ ssh -p 2222 login>@127.0.0.1
發(fā)送到127.0.0.1:2222的登錄請求會自動被VirtualBox翻譯成10.0.2.15:22,這可以讓你SSH到虛擬機中。
通過命令行配置VirtualBox端口轉(zhuǎn)發(fā)
VirtualBox有一個稱為VBoxManage的命令行管理工具。使用命令行工具,你也可以為你的虛擬機設(shè)置端口轉(zhuǎn)發(fā)。
下面的命令會為IP地址為10.0.2.15的虛擬機設(shè)置一個名字為"centos7"的端口轉(zhuǎn)發(fā)規(guī)則,SSH的端口號為22,映射到本地主機的端口為2222。規(guī)則的名字(本例中是SSH)必須是唯一的。
$ VBoxManage modifyvm "centos7" --natpf1 "SSH,tcp,127.0.0.1,2222,10.0.2.15,22"
規(guī)則創(chuàng)建之后,你可以用下面的命令來驗證。
$ VBoxManage showvminfo "centos7" | grep NIC