ksaitoの日記

日々試したことの覚え書き

ネットワークのNAT関連の設定その2

移転しました。

自動的にリダイレクトします。

だいぶ前にネットワークのNAT関連の設定を書きました。
Mac版でも同じように設定したのですがエラーとなってしまいました。
原因は、ゲストOSのNICがpcnetからe1000に変更されているためにエラーとなっていたようです。
この設定は、いつも面倒なので、設定と表示のためのシェルを作りました。
一度、設定したextradataを削除する方法が分からないのでポートを閉じる場合には、手動でファイルを修正するしかありません。

ゲストOSのsshのポートフォアード設定を表示する

vboxgetssh.shは、ゲストOS名とNICのインタフェースを指定すると設定されているパラメータを表示します。

$ vboxgetssh.sh "Ubuntu Server" e1000
    • -
GuestOS Ubuntu Server NIC e1000
    • -
Protocol: TCP GuestPort: 22 HostPort: 2022
    • -
$

こんなソースです。

$ 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 @@
       
       
       
 +      
 +      
 +      
     
     
       
$