だいぶ前にネットワークのNAT関連の設定を書きました。
Mac版でも同じように設定したのですがエラーとなってしまいました。
原因は、ゲストOSのNICがpcnetからe1000に変更されているためにエラーとなっていたようです。
この設定は、いつも面倒なので、設定と表示のためのシェルを作りました。
一度、設定したextradataを削除する方法が分からないのでポートを閉じる場合には、手動でファイルを修正するしかありません。
ゲストOSのsshのポートフォアード設定を表示する
vboxgetssh.shは、ゲストOS名とNICのインタフェースを指定すると設定されているパラメータを表示します。
$ vboxgetssh.sh "Ubuntu Server" e1000
-
- -
-
- -
-
- -
こんなソースです。
$ cat vboxgetssh.sh
#! /bin/sh
GUEST=$1
IFNAME=$2
OPTION="VBoxInternal/Devices/${IFNAME}/0/LUN#0/Config/guestssh/"
echo ---
echo GuestOS ${GUEST}
echo NIC ${IFNAME}
echo ---
for i in Protocol GuestPort HostPort
do
VBoxManage getextradata "${GUEST}" "${OPTION}${i}" | grep Value | sed -e "s/Value/${i}/"
done
echo ---
$
ゲストOSのsshのポートをフォアードする
vboxsetssh.shは、ゲストOS名とNICのインタフェースとフォアードするポートを指定するとパラメータを設定します。
ゲストOSは、停止している必要があります。
ソースは、下記です。
$ cat ~/bin/vboxsetssh.sh
#! /bin/sh
GUEST=$1
IFNAME=$2
HOSTPORT=$3
OPTION="VBoxInternal/Devices/${IFNAME}/0/LUN#0/Config/guestssh/"
echo setting...
VBoxManage setextradata "${GUEST}" "${OPTION}Protocol" TCP > /dev/null
VBoxManage setextradata "${GUEST}" "${OPTION}GuestPort" 22 > /dev/null
VBoxManage setextradata "${GUEST}" "${OPTION}HostPort" ${HOSTPORT}
vboxgetssh.sh "${GUEST}" "${IFNAME}"
$
実行すると[VirtualBoxのディレクトリ]/Machine/[ゲストOS名]/[ゲストOS名].xmlが以下のように変更されます。
ポートフォアードをやめるときには、ゲストOSを停止して、下記3行を削除します。
$ hg diff diff -r 27140cbe3cc5 Ubuntu Server/Ubuntu Server.xml --- a/Ubuntu Server/Ubuntu Server.xml Sun May 24 20:22:01 2009 +0900 +++ b/Ubuntu Server/Ubuntu Server.xml Sun May 24 21:18:37 2009 +0900 @@ -9,6 +9,9 @@+ + + $