チラシの裏の電子工作

電子工作、PC関係の備忘録というか、チラシの裏

ESXi5でVNCを使う方法(ESXi5.0のFWに穴掘り)

ESXiには、vSphereの代わりにVNCviewerを使ってリモートの画面を転送する仕組みがあります。
しかし、ESXi5からはFWが邪魔をして、そのままでは接続できません。
日本語資料が少なくてちょっと悩んだので、メモしておきます。


まず概念的なお話。

ゲストOSにVNCサーバを仕込んだ場合とは振る舞いが異なります。
VNCの接続応答はESXiが行う事になります。
つまり、ゲストOSがVNCサーバに対応しないOSであっても、VNCviewerで接続が可能という事です。

具体例を挙げると、
ESXiサーバが192.168.0.2で、ゲストOSはDHCP
後述の設定で「remotedisplay.vnc.port」に5900を指定した場合
VNCViewerの接続設定は192.168.0.2:5900になります。
また、ゲストOSの電源が入っていないと接続出来ません。

メリット
  • vSphereは重いけどVNCviewerは軽い
  • VNCviewerは色んなOSに対応している
  • ゲストOSの種類に依存しない。DOSでも超漢字でも、ESXiで動くならなんでも良い

デメリット
  • 導入がめんどくさい
  • セキュリティ上どうなんだろう。基本LAN内で使う分には問題ないと思うけど



ゲストOSの設定

vShpereのゲストOSの設定の編集を開く
オプションタブ → 設定のリスト内の全般 → 構成パラメータボタン
行の追加 ボタンで、以下を追加していく。
ポート番号はESXiサーバ内の全ての仮想マシンと重ならないように注意。

名前
remotedisplay.vnc.port5900
remotedisplay.vnc.enabledtrue
remotedisplay.vnc.passwordpassword
remotedisplay.vnc.keymapjp



ESXiサーバにsshログインできるようにする

詳しいやり方は割愛しますが、ググればすぐ情報がでてきます。
・root以外の適当なroot権限のユーザを作る
・sshログインを許可する



FWの設定

FWを止めちゃう方法。

邪道かもしれませんが、手っ取り早く接続してみるには、FWを止めてしまうのが近道です。
ちなみに、unloadの部分をloadに変更すると、止めたFWを再度起動できます。

/sbin/esxcli network firewall unload




FWに穴を開ける方法

FWのルールを追加します。
/etc/vmware/firewall/ディレクトリにxmlファイルを作ると、ルールとして読み込んでくれるようです。
以下の例では、TCPの受信を5900から5999までを開けています。


/etc/vmware/firewall/vnc.xml

<ConfigRoot>
    <!-- vnc -->
    <service id="0000">
        <id>vnc</id>
        <rule id='0000'>
            <direction>outbound</direction>
            <protocol>tcp</protocol>
            <porttype>dst</porttype>
            <port>
                <begin>0</begin>
                <end>65535</end>
            </port>
        </rule>

        <rule id='0001'>
            <direction>inbound</direction>
            <protocol>tcp</protocol>
            <porttype>dst</porttype>
            <port>
                <begin>5900</begin>
                <end>5999</end>
            </port>
        </rule>
    <enabled>false</enabled>
    <required>false</required>
    </service>
</ConfigRoot>



ファイルの保存ができたら、firewallの設定をリフレッシュします。

/sbin/esxcli network firewall refresh


vSphereのESXiサーバの構成から、セキュリティプロファイルを開きます。
ファイヤーウォール の プロパティ を開きます。
ラベル列にさっき作ったvncがあるので、チェックボックスをONにします。

これで、5900~5999までのTCP受信の穴が開きました。


本当はvnc.xmlのルールを、どのデーモンに紐付けるかを設定した方がよりセキュアなのですが、やり方がよく解りません。
(最初にFWを殺す方法を紹介をしておいてなんですが…)



【2011/11/19追記】

このままだと、再起動したときに設定を忘れちゃうんですね。
sshでログインして、設定を覚えさせる必要があります。
ここを参考にして、設定すると再起動後も保持できました。

VNC開通までできたら、/etc/vmware/firewallをtarで固める。

tar cvzf fw.tgz /etc/vmware/firewall



fw.tgzをUSBに送る。
hogeの部分は環境によって変わる様子。
state.tgzが存在するディレクトリでok。

mv fw.tgz /vmfs/volumes/hoge/



boot.cfgを編集

vi /vmfs/volumes/hoge/boot.cfg



modules=の最後に、 --- fw.tgzを付け加える。

これで作業終了。
再起動した後に/etc/vmware/firewall/vnc.xmlがちゃんと存在するか確認して、終わり!


そして今vnc.xml見直したら、外抜きの通信を全部あけてるけど、これ要らないような…
まあ、気にしない方向で…!

スポンサーサイト

カテゴリ:VMware - テーマ:サーバー - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://nax9800.blog.fc2.com/tb.php/18-4cfdf33e
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad