[Linux] 使用 nmap 輔助找出 VirtualBox VM 目前的 IP address

[Linux] 使用 nmap 輔助找出 VirtualBox VM 目前的 IP address

今天在家裡用 VPN 連到公司電腦,想再用 SSH 連到一台 VirtualBox VM 時,

發現… 那台 VM 剛重開機,DHCP IP 不曉得被換到哪裡去了…

如果在公司裡面自然好辦,直接用 VirtualBox console 操作 VM 就可以看,

但是我在家裡看不到 VirtualBox console,該怎麼辦呢?

 

網路上查了一下,有人建議先查出 VM 的 MAC address,

再從 ARP table 裡反查出相對應的 IP address,

嘗試了幾次終於成功了,把步驟記錄一下~

 

參考資料:

  – serverfault: Connect via SSH to VirtualBox guest VM without knowing IP address

  – stackoverflow: Can I determine the current IP from a known MAC Address?

 

1. 用 VBoxManage 指令查詢 VM 的 MAC address

先用 VBoxManage list runningvms 看一下目前在執行中的 VM:

root@localhost ~ $ VBoxManage list runningvms
"CentOS_7" {9d165780-30e2-42d7-87e0-c67b01699bf6}
"Build CentOS 7.0" {51a7f7a8-6942-4895-8d7a-b0596a6e35bb}

 

找到要操作的 VM 之後,可以用 VBoxManage showvminfo <vmname> 來看詳細資料,

這邊我們只要看 MAC 就好了~

可以看到在網路卡 NIC1 的地方,MAC address 是 080036F5ED13~

(一般的 MAC 表示法會是 08:00:36:F5:ED:13)

root@localhost ~ $ VBoxManage showvminfo "Build CentOS 7.0" | grep MAC
NIC 1:           MAC: 080036F5ED13, Attachment: Bridged Interface 'em1', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none

 

2. 從 ARP table 中尋找 MAC address

執行 arp -n 可以列出目前系統中的 ARP 列表,

-n 代表 numeric,好讓 IP address 不會以 hostname 顯示:

root@localhost ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.1.116.1               ether   90:e6:ab:ac:6e:2e   C                     em1

 

目前系統裡只有一個 IP -> MAC address 的對應 (因為是這台電腦有連過的 IP 才會記錄進來),

而且很顯然地沒有我們要找的 VM 的 MAC address…

這時就要請 nmap 大大出手了~

 

3. 使用 nmap 掃瞄區網中的所有 IP address

前面說到 ARP table 裡記錄的是這台電腦有連過的 IP address,

因此只要我們可以把「可能是目標電腦」的 IP address 都掃過一次,

這些電腦的 IP -> MAC address 對應就會寫到 ARP table 裡了~

 

先用 yum 安裝 nmap:

sudo yum -y install nmap

 

裝好之後,可以執行 nmap –help 看一下說明~

nmap 預設會作 port scan,這個動作很容易被 IT 認為是有問題的,

而我其實也只需要 ping 的結果,因此加上 -sn 選項確保只做 ping scan~

 

位址範圍的話,因為我知道那台 VM 可能拿到的 IP 都在 10.1.116.xxx ~ 10.1.119.xxx 之間,

因此設定成 10.1.116-119.0-255~

也可以先加上 -sL 選項讓 nmap 先列出預定要掃的 IP address,沒問題就拿掉 -sL 選項開始掃了~

root@localhost ~ $ nmap -sn 10.1.116-119.0-255
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-11 23:19 CST
Nmap scan report for 10.1.116.0
......
Nmap scan report for 10.1.119.255
Nmap done: 1024 IP addresses (0 hosts up) scanned in 3.73 seconds

 

4. 再次從 ARP table 中尋找 MAC address

執行完 nmap 的 ping scan 之後,ARP table 應該會多出許多資料~

下面用 grep 找看看那個 MAC address 在不在…

Bingo! 成功找到這個 MAC address 對應到的 IP 是 10.1.116.34 囉~

root@localhost ~ $ arp -n | grep -i "08:00:36:f5:ed:13"
10.1.116.34              ether   08:00:36:f5:ed:13   C                     em1

 

不過要注意的是,這個方法不一定會成功…

像我有其他的 VM 也在上述的 IP 範圍內,但用這方法卻無法在 ARP table 中找到 MAC address….

只能碰碰運氣囉,不成功的話可能得再想想別的法子… :O

 

(本頁面已被瀏覽過 898 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料