隨時隨地都可以登入 VM,就算沒有網路也可以本機登入 VM

若公司和家裡的無線寬頻分享器使用 192.168.1.0 網段,無線寬頻分享器的 IP 為 192.168.1.1。
當我們的 VM 裡只有一塊橋接介面卡,在 VM 裡的 Linux 設定為 192.168.1.15,那麼我們在公司或家裡都可以正常上網並與主機互通。

但是,使用上面的方式,如果到了外面,使用別人的無線寬頻分享器,只要不是 192.168.1.0 網段都無法上網,本機也無法與 VM 互通。
想要解決這個問題,我們可以使用 2 塊網卡,第 1 塊為原本的橋接介面卡,在 VM 裡的 Linux 要設定固定 IP 或 DHCP 指派都可以。此範例使用 192.168.1.0 網段,本機為 192.168.1.1 (無線寬頻分享器位置),VM 裡設定固定 IP 為 192.168.1.15。

20160315-04

 

增加第 2 塊網卡,使用僅限主機介面卡,記得若是 win8 升級 win10 的話,不要使用原本的網卡,使用新增的 VirtualBox Host-Only Ethernet Adapter #2 網卡。 20160315-05

 

進入 VM 後,修改網卡設定並重啟網路
然後查看是否有達到下面預期的效果

[root@halley ~]# ifconfig
eth2      Link encap:Ethernet  HWaddr 08:00:27:E1:F3:1B
          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fee1:f31b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:56 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6615 (6.4 KiB)  TX bytes:6027 (5.8 KiB)

eth3      Link encap:Ethernet  HWaddr 08:00:27:08:68:87
          inet addr:192.168.57.101  Bcast:192.168.57.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe08:6887/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:120 (120.0 b)  TX bytes:2622 (2.5 KiB)
          Interrupt:16 Base address:0xd040

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

這樣我們應該可以分別使用 2 個IP,使用 Pietty 軟體登入 VM 了。
不過登入後你會發現 VM 無法連線外部網路,由於現在使用 2 塊網卡,先看一下路由。

[root@halley ~]# ip route
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.15
192.168.57.0/24 dev eth3  proto kernel  scope link  src 192.168.57.101
169.254.0.0/16 dev eth2  scope link  metric 1002
169.254.0.0/16 dev eth3  scope link  metric 1003
default via 192.168.57.1 dev eth3

路由使用了 192.168.57.1,但實際上並沒有這台無線寬頻分享器,所以無法上網。

[root@halley ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
42 packets transmitted, 0 received, 100% packet loss, time 41987ms

修改預設路由,直接修改 /etc/rc.local,免得每一次開機都要改

[root@halley ~]# vim /etc/rc.local

加入以下這行 (這個 IP 要輸入真正無線寬頻分享器的 IP)

ip route change default via 192.168.1.1 dev eth2

存檔離開,馬上執行

/etc/rc.local

看一下預設路由是否有修改

[root@halley ~]# ip route
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.15
192.168.57.0/24 dev eth3  proto kernel  scope link  src 192.168.57.101
169.254.0.0/16 dev eth2  scope link  metric 1002
169.254.0.0/16 dev eth3  scope link  metric 1003
default via 192.168.1.1 dev eth2

測試可不可以連到網路

[root@halley ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=48 time=1004 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=48 time=951 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=48 time=95.6 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3083ms
rtt min/avg/max/mdev = 95.646/683.715/1004.219/416.389 ms, pipe 2

這樣的話,即使人在外面沒有網路可以用,也可以用 192.168.57.0 網段登入,雖然 VM 無法上網但仍然可以使用開發軟體連上該網段進行開發,等到回公司或家裡再上傳到 Git Server。