■お断り
・基本的に無保証です。自己責任にてお試しください。
・ご質問や問題点のご指摘は大歓迎です。何かありましたらお気軽にご連絡ください。
■目次
■XenHVMでCD-ROMイメージを入れ替える
Xen HVMにてWindows(CD-ROM版)をインストールしようとすると、
ディスク交換を行う必要があります。
しかし、単純にディスクを交換しただけでは、交換後のディスクが認識されません。
このような場合、QEMUコンソールから、ディスクの交換を行うことで解決することができます。
ディスクの交換を行うには、まずQEMUコンソール画面へ移動します。移動方法は以下の通りです。
1、フレームバッファ -> QEMUコンソール
→“CTRL+ALT+2”
2、QEMUコンソール -> フレームバッファ
→“CTRL+ALT+1”
ディスクの交換は、QEMUコンソール上で次のコマンドを用いて行います。
※ディスクイメージにはisoファイル指定でなくても、実デバイス(/dev/cdrom等)でもかまいません。
※ディスクイメージの後ろに"raw"オプションを付けないと、正しくイメージが認識されないかもしれません。
changeコマンドを発行後、フレームバッファ画面へ移動すると、交換したディスクが認識されているかと思います。
なお、ディスクの状態は「info block」コマンドにて確認できます。
■Fedora10/GDM+VNCサーバ 環境でX11フォワーディングに失敗する
Fedora10 GDM+VNCServer (Xvnc on XDMCP)環境で、ssh -Xで他サーバのディスプレイを飛ばそうとすると、
が出てしまい、XAuthによるディスプレイ認証が失敗します。
いまいち詳細は分からないのですが、xauth listの結果が変わったために生じる現象のようです。
このように、Fedora8では127.0.0.1:1と素直なASCII文字列としてXホストが表示されますが、
Fedora10では#ffff#3132372e302e302e31#:1という、16進文字列として表示されます。
(なぜか、Xvncを使っているとき(というより、XDMCP on GDMのとき?)のみで、使っていないときは普通にホスト名/unix:0としてXホストが表示され、フォワーディング問題も発生しない。)
sshクライアントはX11 MagicCookieの検索をプレーンなASCII文字列で行うため、結果的にXAuth認証に失敗する、という現象が生じます。(検索に失敗する様子はssh -vvで確認可能)
しかし、実はこの16進文字列、単に"127.0.0.1"をバイナリとみなしhexdumpした結果と等価だったりします(^^;;
そこで、sshから受け取った引数のうち、ホスト名部分だけを勝手に16進文字列に変換した状態でxauthへ渡すラッパーを作ってみました。
このラッパーを挟むことで、問題なくディスプレイが飛ぶようになります。
これを、/usr/bin/xauth.sshへ保存し、パーミッションを755にセットします。
その後、/etc/ssh/ssh_configの"Host *"以下、もしくは~/.ssh/configへ、
を入れれば完了です。以降sshはxauth.sshをxauthの代わりに使うようになり、フォワーディングに成功するようになるのではないかと思います。
もし不具合等発見された場合は、ぜひご連絡ください。
■Kerberos認証利用中、SSH接続時になぜかチケットがフォワードされない
1、/etc/ssh/sshd_config中に、次の設定を記述。(GSSAPI経由の認証を有効化)
2、ローカル認証(PAM含む)よりKerberos認証を優先させたい場合は、次の設定を記述。
3、~/.ssh/config にチケットフォワーディングを許可する設定を記述
(これを忘れると2台め以降へのログイン時パスワードが必要になるばかりでなくNFSv4 with Kerberosのマウントができなくなる。)
■PostgreSQLの認証にKerberosを利用する
1、/var/lib/pgsql/data/postgresql.confにKerberosの設定を記述
2、kadminでpostgresのprincipalを作成し、キーを1で指定した場所に保存する
3、キーの所有権をpostgresに変更
(これを忘れると正しく設定していても認証に失敗する)
■Xen domUをタグVLAN・bondingに接続する
結論から言うと、Xenのブリッジスクリプトを利用しなければOKです。
あのスクリプトはちょっと変な挙動をしますので、
手動でブリッジを立ち上げるスクリプトを書くのがもっとも確実かつ安全です。
なお、この例ではタグVLANを例に取りますが、eth0.*を、bond0.*に置き換えることで、
そのままボンディング+タグVLAN対応となります。
1、dom0 上のXenブリッジ起動設定を無効にします
2、/root/以下に次のようなスクリプトを書きます。
ここでは、既にeth0.4000、eth0.4001、というVLANインターフェースがあるものとします。
このVLANインターフェースは普通に/etc/sysconfig/netowrk-scripts/ifcfg-eth0.4001 ifcfg-eth0.4001
で作成した普通のVLANインターフェースです。
また、それぞれが所属するブリッジはBridge1、Bridge2とします。
3、iptablesでBridge間の通信を許可します
ここでは次のような設定スクリプトで通信を許可し、同時にスプーフィング対策も行います。
このスクリプトに実行権を持たせて実行することで、Bridge内でのパケットフォワーディングが
開始されます。
ここではレイヤ2・レイヤ3レベルでのフィルタリングが定義出来ますので、
BridgeをL2スイッチ代わりに利用することが出来ます。
4、boot.shを起動時に実行されるよう/etc/rc.d/rc.localへ登録します。
5、スクリプトに実行権限を持たせます。
以上で完了です。再起動するか、boot.shを実行すると、VLANインターフェースが接続された
ブリッジが出来上がります。あとはここにdomUを接続していくだけです。
次に接続するためのdomU起動用設定ファイルの例を示します。
この例では、メモリ4GB、8コア、Bridge1、Bridge2に接続された2つのNICを
搭載したdomU仮想マシンを立ち上げています。この方法であればブリッジに好きな名前
をつけることが出来ますので、非常に便利です。
この方法の難点は、ネットワークスクリプトをrestartしたとき、もう一度boot.shを実行
しなければいけない点にありますが、Xen附属のnetwork-bridgeスクリプトに任せるよりは
ましなのではないかと思います。
パフォーマンス的にも良好で、Supermicroマザー(BroadCOMチップ)、CentreCOM L2スイッチの組み合わせ(非ボンディング、タグVLAN)で異なる物理サーバ上の仮想サーバ間通信は
800MBps程度(NFSv4でファイル転送中のスイッチ上でのポート間通信量計測値、ちなみに、ファイル転送速度はこのとき70MBytes/s〜80MBytes/s、これ以外の仮想サーバも色々通信していましたので、余り正確ではありませんが...)
程度と十分な速度が出ますし、domU上ではタグVLANを意識する必要もありませんので、非常に便利です。
■パケットの行き先毎に送信速度を制限する
tc(Traffic Control)コマンド+HTBを使います。
1、次のようなスクリプトを作成します。ここでは30MBps、1000MBpsの2つのクラスを用意し、
デフォルトは30MBps、192.168.0.0/24、172.16.0.0/16へのパケットのみ1000MBpsで送信します。
2、これを起動時に実行できるよう/etc/rc.d/rc.localに登録します
これで、再起動する、もしくはQoS.shを実行すると、eth0に対して帯域制限が開始されます。
設定状態を確認するには、次のコマンドを利用します。
また、設定を削除するには、addをdelに変えて後ろから実行していけばOKです。