Linux 有問必答:如何從VirtualBox中從主機訪問NAT客戶機

譯者: geekpi發表於2014-12-02

提問: 我有一臺執行在VirtualBox上的使用NAT的虛擬機器,因此虛擬機器會被VirtualBox分配一個私有IP地址(10.x.x.x)。如果我想要從主機SSH到虛擬機器中,我該怎麼做?

VirtualBox對虛擬機器支援幾種不同的網路方式,其中一種是NAT網路。當虛擬機器啟用NAT後,VirtualBox會自動在虛擬機器和主機之間進行網路翻譯,因此你不必在虛擬機器和主機之間配置任何東西。這也意味著NAT中的虛擬機器對於外部網路以及主機本身是不可見的。這會在你想要從主機訪問虛擬機器時會產生問題(比如SSH)。

如果你想從VirtualBox的NAT環境的虛擬機器,你可以在GUI或者命令列下啟用VirtualBox NAT的埠轉發。本篇教程將會演示如何透過啟用22埠轉發而從主機SSH連線到NAT環境的客戶機。如果你先想要從HTTP訪問NAT的客戶機,用80埠代替22埠即可。

透過GUI配置VirtualBox埠轉發

在VirtualBox中選擇你想要訪問的虛擬機器,開啟虛擬機器的“設定”。點選左側的“網路”選單,點選網路適配選項的“高階”。

點選“埠轉發”按鈕

你會看到一個配置埠轉發規則的視窗。點選右上角的“新增”圖示。

就會看到像下面那樣的轉發規則。

  • Name: SSH (可以是任意唯一名)
  • Protocol: TCP
  • Host IP: 127.0.0.1
  • Host Port: 2222 (任何大於1024未使用的埠)
  • Guest IP: 虛擬機器IP
  • Guest Port: 22 (SSH 埠)

埠轉發的規則會自動在你啟動虛擬機器的時候啟用。為了驗證。可以在你啟用虛擬機器後檢查埠2222是否被VirtualBox開啟了。

$ sudo netstat -nap | grep 2222 

現在埠轉發可以使用了,你可以用下面的命令SSH到虛擬機器。

 $ ssh -p 2222 <login>@127.0.0.1 

傳送到127.0.0.1:2222的登入請求會自動被VirtualBox翻譯成10.0.2.15:22,這可以讓你SSH到虛擬機器中。

透過命令列配置VirtualBox埠轉發

VirtualBox有一個稱為VBoxManage的命令列管理工具。使用命令列工具,你也可以為你的虛擬機器設定埠轉發。

下面的命令會為IP地址為10.0.2.15的虛擬機器設定一個名字為"centos7"的埠轉發規則,SSH的埠號為22,對映到本地主機的埠為2222。規則的名字(本例中是SSH)必須是唯一的。

$ VBoxManage modifyvm "centos7" --natpf1 "SSH,tcp,127.0.0.1,2222,10.0.2.15,22" 

規則建立之後,你可以用下面的命令來驗證。

 $ VBoxManage showvminfo "centos7" | grep NIC 


via: http://ask.xmodulo.com/access-nat-guest-from-host-virtualbox.html

譯者:geekpi 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章