だいぶ前にネットワークの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 @@+ + + $