Linux 有問必答:如何從VirtualBox中從主機訪問NAT客戶機
提問: 我有一臺執行在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
相關文章
- 如何讓同一網段客戶端訪問LVS-NAT主機客戶端
- Linux有問必答:如何為在Linux中安裝兄弟牌印表機Linux
- 使用ssh隧道穿透NAT訪問內網主機穿透內網
- 宿主機無法訪問VM中的linux(NAT模式)Linux模式
- HP主機訪問動態IP主機配置
- Linux有問必答:如何在Linux中修改環境變數PATHLinux變數
- 如何在VirtualBox客戶機使用符號連線符號
- Linux有問必答:如何更新過期版本的UbuntuLinuxUbuntu
- Linux有問必答:如何在VMware ESXi虛擬機器上設定靜態MAC地址Linux虛擬機Mac
- 使用主機命名方法訪問oracleOracle
- linux+virtualbox下虛擬機器訪問真實網路Linux虛擬機
- Asp.net MVC獲取訪問系統的客戶端計算機的主機名和IP地址ASP.NETMVC客戶端計算機
- .net core使用CSRedisCore訪問Redis主從+哨兵Redis
- 如何從外網訪問內網Linux系統?內網Linux
- 如何訪問 linux 上的jboss啊?用主機名還是 IP?Linux
- 【linux環境配置】設定linux通過主機名訪問區域網主機Linux
- 從ubuntu虛擬機器外部訪問虛擬機器內部資訊Ubuntu虛擬機
- Linux有問必答:如何在命令列下壓縮JPEG影像Linux命令列
- Linux有問必答:如何檢查MariaDB服務端版本Linux服務端
- Linux有問必答:如何用Perl檢測Linux的發行版本Linux
- 如何從公網訪問內網Django內網Django
- 處理客戶小機問題[一則]
- 如何從 Vim 中訪問 shell 或者執行外部命令
- Linux有問必答:怎麼用CheckInstall從原始碼建立一個RPM或DEB包Linux原始碼
- 在 Linux 中如何從命令列查詢 VirtualBox 版本Linux命令列
- Linux有問必答:如何修復“sshd error: could not load host key”LinuxError
- Linux 有問必答:如何知道程式執行在哪個 CPU 核心上?Linux
- Linux有問必答:如何在Linux下重新命名多個檔案Linux
- Linux有問必答:如何檢查Linux的記憶體使用狀況Linux記憶體
- Linux有問必答:如何顯示Linux網橋的MAC學習表LinuxMac
- NGINX 如何遮蔽未被定義的虛擬主機的訪問Nginx
- Rust中如何從URL網址中提取主機等資訊?Rust
- 客戶機上一使用者訪問另一臺機器上的informix資料庫ORM資料庫
- docker 內部如何訪問宿主機Docker
- 如何從外網訪問本地WEB應用?Web
- 客戶端訪問POP3--SMTP客戶端
- 如何解決 MySQL 主從延時問題?MySql
- 主機可以訪問虛擬機器的網路設定虛擬機