What have you found for these years?

2009-09-12

Arch on VirtualBox

總算是把 host => guest 的 local network 搞定了 @@
我記得之前弄 Parallels 時,灌進去就直接可以用了,
沒想到 VirtualBox 還要設定半天,查手冊和 forum 又不太懂。
這方面的知識實在很匱乏,只能慢慢試,慢慢猜。

總之大概就是要設兩個 network adapter,
第一個是 NAT, 看起來他的意思是指由 VirtualBox 從
host 讀取封包,然後再丟回給 guest. 因此外界看不到 guest.
不過我不知道這跟把 VirtualBox 當成 router 有什麼不同?

由 NAT 提供對外網路,要讓 host <=> guest 的網路,
則需要另外設一個 network adapter, 用 host-only adapter.
使用這個,VirtualBox 會在 host 上開一個 vboxnet0 的
network interface... 是這個意思嗎?

總之用 ifconfig 可以看到多了一個 vboxnet0 的裝置。
預設的 ip 是 192.168.56.1

到這裡,guest => host 就沒問題了。雖然 ping 不到?
但是 curl 192.168.56.1 確實可以連到我 host 的 http server.

接下來看半天,就是搞不懂為什麼我的 guest 一直沒有 ip >_<
在 /etc/rc.conf 中,有預設值是這樣的:

eth0="dhcp"
INTERFACES=(eth0)
gateway="default gw 192.168.0.1"

我本來預期把 gateway 改成 192.168.56.100 就行了,
因為從 VirtualBox 裡的 preference 可以看到裡面的
router ip 應該是 192.168.56.100, 然後 dhcp 給的 ip
會從 192.168.56.101 開始到 192.168.56.254,
另一邊則有個 adapter 是 192.168.56.1,
雖然不太懂這是什麼意思,但這應該是 host 的 ip 吧?

但是無論如何 guest 就是拿不到 ip @@
就算改成自己要 ip:
eth0="eth0 192.168.56.101 netmask \
255.255.255.0 broadcast 192.168.56.255"
這樣可以成功拿到 ip, 但是整個網路反而會死掉,也連不上 host.

然後注意到 /etc/rc.conf 有個註解是這樣:
# Use 'ifconfig -a' or 'ls /sys/class/net/' \
to see all available interfaces.
然後才發覺 ifconfig -a 可以看到其他 interface?

ifconfig eth1 up
ifconfig eth2 up

這樣好像可以啟動其他的 interface, 不過還是沒有用。
最後我終於注意到,這個 eth 似乎對應到 adapter,
因此 eth0 應該是 NAT, eth1 則是 host-only adapter!
於是多加個:
eth1="dhcp"
然後改:
INTERFACES=(eth0, eth1)
reboot 之後,看到一些奇怪的錯誤 XD
(有 reboot 以外重設網路的方式嗎?)
因為這邊不是用逗號分隔,是要用空白。
在最後可以看到範例:
DAEMONS=(syslog-ng network netfs crond sshd)
這邊最後的 sshd 是我加上去的,看起來這樣就能開機時自動啟動。

所以總之改成:
INTERFACES=(eth0 eth1)
reboot 之後就成功在 ifconfig 中看到 eth1 有著正確的 ip!!!
192.168.56.101

由 host 去 ping 之後發現,好像怪怪的,不過 ssh 連得上!
暫時先這樣就夠了。希望早日弄好 ssh 的原因很簡單,
我想用 Terminal.app 操作 guest... XD
不然弄 X11 和找 terminal 程式應該還要搞半天,
而 VirtualBox 好像也不能調整字型和大小,這樣太辛苦了。

更何況用 Terminal.app 可以有更好的 clipboard 之類的整合。

也就是說,eth0 是 NAT 跟外界溝通,而 eth1 則是 host-only
拿來跟 host 溝通。eth0 的 ip 則是 private ip, 外界看不到。

倒是話說回來,我 host 上的 network interface 也太多了吧...

> ifconfig -l
lo0 gif0 stf0 en0 fw0 en1 vboxnet0 en2 en3 ppp0 tun0

我只知道 en0 是有線網路,en1 是無線網路,
vboxnet0 是 VirtualBox 的 host-only 挖出來的,
ppp0 或許是 pppoe 要用到的?tun0 或許是 openvpn...
fw0 是啥?該不會是 firewire 吧? lo0 好像是 loopback?
真是一堆東西都不知道咧...

==
不知道該算程式還是電腦,都算好了。

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0