タグ:シンクライアント ( 10 ) タグの人気記事
(SunRay)サーバでファームウェアの更新を無効にする方法
SunRayサーバでクライアントのファームウェア更新を無効にする方法ですが、ネットワークの構成によって異なるようです。


共有LANで、外部のDHCPサーバーを使う場合(ネットワーク構成で utadm -L on を使用している)

# ./utfwadm -D -a -V



共有LANで、SunRayサーバーのDHCP使用している場合(ネットワーク構成で utadm -A subnet を使用している)

# ./utfwadm -D -a -N all



プライベートネットワークの場合(ネットワーク構成で utadm -a intf を使用している)

# ./utfwadm -D -a -n all


参考:
14.11. すべての Sun Ray クライアントのファームウェア更新を無効にする方法
[PR]
by Jehoshaphat | 2013-03-18 21:33 | サーバがらみ | Trackback | Comments(0)
(SunRay)SunRayサーバ上のスマートカードのトークンをコマンドで登録
SunRaySoftwareServerを別サーバ機に移行することになりました。
それで、スマートカードのトークンの情報を新しいSunRayサーバに簡単に取り込む方法について調べてみました。

ググるとSun Ray Server Software - utuser の便利な使い方 (やっぱり Sun がスキ!)にやり方が載っていました。

utuser コマンドを使うことでいろいろできるようです。

一つのトークンの登録
まず、一つのトークンを登録する場合は utuser -a を使います。
以下の様な感じです。

# /opt/SUNWut/sbin/utuser -a "トークンID, サーバ名, サーバポート(大抵は7007), ユーザ名, その他の情報"

5項目をカンマ区切りで、全体をダブルクォーテーションで括ってやる必要があります。


複数のトークンの同時登録
一気に複数のトークンを登録することも可能です。
その場合、トークン情報を以下の書式で別ファイルに書きだしておき、utuser -af コマンドを使います。

↓トークン情報を書いた userlist.csv
Payflex.999999a800130100 , localhost , 7007, user001 , 管理者用
Payflex.999999a900130100 , localhost , 7007, user002 , テストユーザ
Payflex.999999aa00130100 , localhost , 7007, user005 ,
Payflex.999999ab00130100 , localhost , 7007, user101 ,
Payflex.999999ac00130100 , localhost , 7007, user102 ,
Payflex.999999ad00130100 , localhost , 7007, user103 , テストユーザ



# /opt/SUNWut/sbin/utuser -af userlist.csv
Added user001
Added user002
Added user005
Added user101
Added user102
Added user103

(トークンの一括変更には、 /opt/SUNWut/sbin/utuser -ef userlist.csv を使います)
既に登録されていたりすると、以下の様なエラーが表示されます。

Error: line 96: Token 'Payflex.999999a800130100' is already in the adminstration database....skipping


最後の一行はどうやら改行が必要なようです。そうしないと以下のエラーがでました。

Error: Line '504' in file '/Desktop/userlist.csv' too long




トークン情報の表示
登録したユーザの状況は、 utuser -l コマンドで確認できるようです。

# /opt/SUNWut/sbin/utuser -l
Token ID User Name Other Info
------------------------------ ------------------------------ ---------------
Payflex.999999a800130100 user001 管理者用
Payflex.999999a900130100 user002 テストユーザ
Payflex.999999aa00130100 user005
Payflex.999999ab00130100 user101
Payflex.999999ac00130100 user102
Payflex.999999ad00130100 user103 テストユーザ


さらに詳しいトークン情報(サーバ名やポート番号を付加した場合)を表示したい場合は utuser -L を使います。

# /opt/SUNWut/sbin/utuser -L
Token ID Server Port User Name Session Type Other Info
------------------------------ --------------- ----- ------------------------------ --------------- ---------------
Payflex.999999a800130100 localhost 7007 user001 default 管理者用
Payflex.999999a900130100 localhost 7007 user002 default テストユーザ
Payflex.999999aa00130100 localhost 7007 user005 default
Payflex.999999ab00130100 localhost 7007 user101 default
Payflex.999999ac00130100 localhost 7007 user102 default
Payflex.999999ad00130100 localhost 7007 user103 default テストユーザ


これをファイルにリダイレクトさせて、各項目の区切りをカンマにし、"Session Type"の列を除けてしまえば、utuser -af でインポートできるファイルの形にできるかと思います。


トークン情報の削除
トークン情報の削除は以下のコマンドで出来るようです。

# /opt/SUNWut/sbin/utuser -d トークンID


一気に削除する場合はトークンIDを列挙したファイルを用意し、以下コマンドを走らせます。

# /opt/SUNWut/sbin/utuser -df 削除対象トークンIDを列挙したファイル



他にも utuser の使用例を見てみると色々できるようです。

usage:
utuser -l
- list all users
utuser -li <substring>
- list all users with token ID's that contain substring <substring>
utuser -ln <substring>
- list all users with names that contain substring <substring>
utuser -lc
- list all users that are currently logged in
utuser -G
- list all users that are currently logged in and the servers they are logged into
utuser -L
- list all users (long format)
utuser -Li <substring>
- list all users with token ID's that contain substring <substring>
(long format)
utuser -Ln <substring>
- list all users with names that contain substring <substring>
(long format)
utuser -Lc
- list all users that are currently logged in (long format)
utuser -Ls <sessiontype>
- list all users with session type <sessiontype> assigned to their token,
<sessiontype> being either default, kiosk or regular (long format)
utuser -o
- dump users list in comma-delimited format
utuser -p <token_id>
- show user properties for user with token <token_id>
utuser -a "<token_id>, <server_name>, <server_port>, <name>, <other_info>"
[-r <token_reader>]
- add a user with the specified properties
(All values except "token_id" and "name" are optional,
although comma separators are required, e.g. "<token_id>,,,<name>,")
utuser -af <filename> [-r <token_reader>]
- batch add multiple users using input from comma-delimited
format file <filename>
utuser -e "<token_id>, <server_name>, <server_port>, <name>, <other_info>"
- edit the properties for user with token <token_id>
(All values except "token_id" and "name" are optional,
although comma separators are required, e.g. "<token_id>,,,<name>,")
utuser -ef <filename>
- batch edit multiple users using input from comma-delimited
format file <filename>
utuser -d <token_id>
- delete user with token <token_id>
utuser -df <filename>
- batch delete multiple users using input from comma-delimited
format file <filename>
utuser -ai <current_token_id> <new_token_id> [-r <token_reader>]
- add additional token <new_token_id> to user that currently
has token <current_token_id>
utuser -di <current_token_id>
- delete token <current_token_id> from user that currently has it
utuser -ei <token id> enable
utuser -ei <token id> disable
- enable/disable a token
utuser -r <token_reader>
- read a token ID from a token reader
utuser -h
- show usage information (this message)
utuser -N
- This option is reserved for internal use
utuser -x
- This option is reserved for internal use

[PR]
by Jehoshaphat | 2013-03-17 06:12 | サーバがらみ | Trackback | Comments(0)
SunRay2で画面描画が遅く残像らしきものが残る Part2
2年ほど前にSunRay2で画面描画が遅く残像らしきものが残るで、SunRayServerをGigaスイッチにつないだ時にクライアント側でチラチラ表示になってしまうという話を書きました。

今回ようやくテスト用のSunRayサーバを構築することができたので、その現象についていろいろ調査してみました。


どうやら、原因はやはりスイッチのフロー制御にあるようです。(フロー制御の詳細は(ネットワーク)スイッチのフロー制御に書いてます)

以下の様なパターンでSunRayクライアントの残像チラチラ現象が発生するかテストしてみました。
テスト方法としてはフルスクリーン表示した画像を次々に切り替えていきました。画面の更新差分が大きいのでこの方法だと比較的残像現象が出やすくなります。
なお、クライアント側の帯域制御は無しにしています。
e0091163_694815.jpg




基本的はフロー制御を有効にしておかないと残像チラチラ現象が発生してしまうようです。
特に、1Gbpsスイッチ間はIN,OUTどちらのポートもフロー制御が必要なようです。
逆に、1Gbpsから100Mbpsに落ちるときは、サーバに近い側のポートさえフロー制御が有効になって入ればいいようです。

スマートL2SWとL3SWを経由したときはDTUが1台あればL3側だけフロー制御を有効にすれば現象は発生しなかったのですが、DTUを2台にすると現象が明らかに発生しました。(DTU1台の時もutcaptureを見ればわずかにパケットロスが発生していました)
このことから、基本的にはSunRay~DTU間のすべてのポートでフロー制御をONにしておくことがわかります。


残像チラチラ現象がひどく発生しているときにutcaptureでパケット損失を見てみると以下のようになっていました。

bash-3.00# ./utcapture -r 00144fe4c025
# TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
00144fe4c025 20121026172544 320379 201124 144734426 63.700 2.701
00144fe4c025 20121026172559 406739 255515 183232052 62.982 3.155

6割程度のパケットロスが発生していますね。


また、この残像現象が発生しているときに、SunRayサーバ側の送信トラフィックを見てみると以下のようになっていました。

bash-3.00# dladm show-dev -s -i 1 e1000g0
ipackets rbytes ierrors opackets obytes oerrors
e1000g0 2114 1999865 0 16804 20144662 0
ipackets rbytes ierrors opackets obytes oerrors
e1000g0 2205 2092329 0 17449 20495296 0
ipackets rbytes ierrors opackets obytes oerrors
e1000g0 1787 1546393 0 17082 20265104 0
ipackets rbytes ierrors opackets obytes oerrors
e1000g0 1952 1742506 0 17198 20203862 0

obytesのところが送信トラフィックですが、20MByte/s = 160Mbpsになっています。


なお、Oracleのドキュメントに、以下の様なことが書いてました。

ネットワークスイッチの中には、サーバー側の接続速度を 1 Gbps に設定すると、Sun Ray クライアントでうまく動作しなくなるものがあります。Sun Ray クライアントは 100 Mbps で実行され、そのデータは X ウィンドウシステムのサーバーから周期的バーストで送信されるため、これらのスイッチでは一定量のデータをバッファリングする必要があります。この状況は、X サーバーからの平均データ速度が 100 Mbps を優に下回る場合でも起こり得ます。
X サーバーは、一定の許容量のデータをチックの間隔で送信するようにプログラムされています。元の実装では毎秒 50 チックありました。X サーバーは、Sun Ray クライアントによって許可された特定の比率で送信できます。
たとえば、Sun Ray クライアントが 40 Mbps の送信速度を許可している場合、X サーバーは、毎秒 5M バイトのバーストで 1/50 秒ごとにデータを送信できます。つまり、サーバーはチックごとに 100K バイトのデータを 1 Gbps の速度で送信できることになります。この速度によって 100K バイト近辺のスイッチにキューのビルドアップが起こることになり、さらにそれによって次の 1/50 秒間にわたってビルドアップしたデータが 100 Mbps の速度でドレインアウトすることになります。
この種の問題を緩和する最初の対策は、毎秒のチック数を毎秒 50 から 100 に増やすことです。上記の例では、X サーバーが 20 ms ごとに 100K バイトではなく、10 ms ごとに 50K バイトのデータを送信することになります。 この設定により状況はかなり改善するでしょうが、問題はまだ残るでしょう。毎秒 100 チックの速度が選択されたのは、それが Solaris と Linux ソフトウェアでのタイマーの通常のレゾリューションに対応していたからです。


OSのタイマーを増やすことで、チック数を増やし、それにより状況が改善するという説明です。
Solarisでタイマーを増やすには、以下のようにするようです。

# vi /etc/system
set hires_tick=1  ←追加
再起動


この方法を試してみたんですが、状況は改善しませんでした。

やはり、解決策はサーバ~DTU間のフロー制御を有効にすることと、端末側で帯域制御をかけてやることになるようです。
(ただ、ポート数が多いコアスイッチだとフロー制御が難しい場合もあるようです。あるL2スイッチはフロー制御をOnにすると100MbpsになるとSEに言われました)

Webで調査中に幾つか以下のような参考になりそうなのを見つけたんですが、英語なのでいまいち理解できませんでした。
SR3 DTUs not as fast as SR3+ DTUs ?
** SOLVED ** SRSS 4.2 + OSol 124/125/126 slower thanSRSS 4.1?
[SunRay-Users] Flow Control
Re: [SunRay-Users] Performance tanks after upgrading to 1GB switch,had 100MB
[SunRay-Users] Performance tanks after upgrading to 1GB switch,had 100MB
10.11. Sun Ray 3 シリーズのクライアントのネットワークパフォーマンスの改善
[PR]
by Jehoshaphat | 2013-03-16 06:02 | サーバがらみ | Trackback | Comments(0)
Sun Ray Server Software(SRSS)のインストール Part2
Sun Ray Server Software(SRSS)のインストール Part1の続きです。

SunRayServerの構成
SunRayServerの構築マニュアルを見ると、幾つかのネットワーク形態があるようです。
一つは専用のプライベートSunRayネットワーク(既存のネットワークと別にSunRayDTUを配置)、もうひとつは既存のLAN上にSunRayDTUを配置するパターンです。
今回は後者の環境となります。

また、SunRayサーバ自体にDHCP機能を持たすこともできるようですが、今回のネットワークではDHCPはSunRayサーバ自身にも他の機器でも使いません。(静的アドレスで管理します)


SunRayのLAN接続をONにします。(このコマンドは外部DHCPサーバを使用する場合も使います)

# /opt/SUNWut/sbin/utadm -L on
### Turning on Sun Ray LAN connection

NOTE: utrestart must be run before LAN connections will be allowed


余談ですがSunRayのLAN接続をOFFにするには、以下のようにします。

# /opt/SUNWut/sbin/utadm -L off


SunRayの現在のLNA接続設定を確認するには以下のようにします。

# /opt/SUNWut/sbin/utadm -l
LAN connections: On  ←OnかOffかが表示されます。
Sun Ray interconnect framework is not configured


また、SunRayサーバ自身のDHCPサーバを使用する場合はこのようにします。

# /opt/SUNWut/sbin/utadm -A ネットワークアドレス


専用のプライベートSunRayネットワークを使う場合(専用のインターコネクトを構成)は以下のようにします。

# /opt/SUNWut/sbin/utadm -a <インターフェイス名>


これも余談ですが、SunRayのクライアントファームウェアはSunRayサーバに配置しtftpで公開するわけですが、DTUがそこにアクセスするようにするために、DHCPのオプションを使っているようです。



SunRayServerSoftwareを構成には、以下のコマンドを叩きます。

# /opt/SUNWut/sbin/utconfig

Configuration of Sun Ray Core Services Software

This script automates the configuration of the Sun Ray Core Services
software and related software products. Before proceeding, you should
have read the Sun Ray Core Services 4.0 Installation Guide and filled
out the Configuration Worksheet. This script will prompt you for the
values you filled out on the Worksheet. For your convenience, default
values (where applicable) are shown in brackets.

Continue ([y]/n)?       ←スクリプトを続行するかどうか
Enter Sun Ray admin password:  ←管理者パスワード
Re-enter Sun Ray admin password: ←管理者パスワード
Configure Sun Ray Web Administration? ([y]/n)?  ←SunRayWeb管理の構成をするかどうか
Enter Apache Tomcat installation directory [/opt/apache-tomcat]:  ←tomcatへのパス
Enter HTTP port number [1660]:      ←WebサーバポートNo
Enable secure connections? ([y]/n)?   ←HTTPSを有効にするか
Enter HTTPS port number [1661]:     ←HTTPSのポート番号
Enter Tomcat process username [utwww]:  ←Tomcatプロセスのユーザ名
Enable remote server administration? (y/[n])? y  ←リモー管理を有効にするか(有効にしておいた)
Configure Sun Ray Kiosk Mode? (y/[n])? y  ←キオスクモードを構成するか(今回SRWCを使ってWindowsサーバへ接続するので必須)
Enter user prefix [utku]:    ←キオスクモード時のユーザの接頭辞
Enter group [utkiosk]:     ←キオスクモード時のグループ
Enter userID range start [150000]:  ←キオスクモード時のユーザIDの範囲の始まり
Enter number of users [25]: 220  ←キオスクモード時のユーザ数
Configure this server for a failover group? (y/[n])? n  ←フェイルオーバーグループを構成するか(今回はしない)

About to configure the following software products:
Sun Ray Data Store 3.0
Hostname: SunRaySRV3
Sun Ray root entry: o=utdata
Sun Ray root name: utdata
Sun Ray utdata admin password: (not shown)
SRDS 'rootdn': cn=admin,o=utdata
Sun Ray Web Administration hosted at Apache Tomcat/5.5.20
Apache Tomcat installation directory: /opt/apache-tomcat
HTTP port number: 1660
HTTPS port number: 1661
Tomcat process username: utwww
Remote server administration: Enabled
Sun Ray Core Services 4.0
Failover group: no
Sun Ray Kiosk Mode: yes
Sun Ray Kiosk Mode 4.0
User name prefix: utku
Base user ID: 150000
Number of accounts: 220
Kiosk group name: utkiosk
Kiosk group ID: auto

Continue ([y]/n)? y    ←yとすると設定実行

Updating Sun Ray Data Store schema ...
Updating Sun Ray Data Store ACL's ...
Creating Sun Ray Data Store ...
Restarting Sun Ray Data Store ...
Starting Sun Ray Data Store daemon .
Wed Oct 17 14:18 : utdsd starting
Loading Sun Ray Data Store ...
Executing '/usr/bin/ldapadd -p 7012 -D cn=admin,o=utdata' ...
新規エントリ o=utdata を追加
新規エントリ o=v1,o=utdata を追加
新規エントリ utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=desktops,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=users,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=logicalTokens,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=rawTokens,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=multihead,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=container,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=properties,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ cn=utadmin,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=smartCards,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utordername=probeorder,utname=smartCards,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=policy,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=resDefs,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=prefs,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utPrefType=resolution,utname=prefs,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utPrefClass=advisory,utPrefType=resolution,utname=prefs,utname=SunRaySRV3,o=v1,o=utdata を追加
Added 18 new LDAP entries.
Creating Sun Ray Core Services Configuration ...
Adding user account for 'utwww' (ut admin web server user) ...done
Sun Ray Web Administration enabled to start at system boot.
Starting Sun Ray Web Administration...
See /var/opt/SUNWut/log/utwebadmin.log for server logging information.
Unique "/etc/opt/SUNWut/gmSignature" has been generated.
Restarting Sun Ray Data Store ...
Stopping Sun Ray Data Store daemon
Sun Ray Data Store daemon stopped
Starting Sun Ray Data Store daemon .
Wed Oct 17 14:19 : utdsd starting
Adding user admin ...
User(s) added successfully!

Creating new Sun Ray Kiosk Mode configuration ...

Validating new user ids.
Validating new user accounts.
Creating kiosk group utkiosk
Configuring new kiosk user accounts:
............................................................................................................................................................................................................................
220 users configured

***********************************************************
The current policy has been modified. You must restart the
authentication manager to activate the changes.
***********************************************************

Configuration of Sun Ray Core Services has completed. Please check
the log file, /var/adm/log/utconfig.2012_10_17_14:08:36.log, for errors.


構成が終わったらサーバを再起動します。

# sync;sync;sync;reboot


Sun Ray Connector for Windowsの初期設定
Sun Ray Connector for Windowsの初期設定を行います。

# /opt/SUNWuttsc/sbin/uttscadm -c
Creating required LDAP schema ...
新規エントリ utname=remoteclient,utname=SunRaySRV3,o=v1,o=utdata を追加
新規エントリ utname=users,utname=remoteclient,utname=SunRaySRV3,o=v1,o=utdata を追加
Done.
*****************************************************************************
A restart of Sun Ray services is required before the Sun Ray Connector for
Windows Operating Systems is used. Please run :
/opt/SUNWut/sbin/utrestart
Note that this will *NOT* terminate any sessions.
*****************************************************************************
Stopping Sun Ray Connector Proxy..
Starting Sun Ray Connector proxy


以下コマンドでSunRayServerSoftwareを再起動します。

# /opt/SUNWut/sbin/utrestart



システムポリシーの設定
ここまでの状態で、SunRayDTUのconfigで接続先のサーバIPを10.1.5.101にしました。
そうすると、カード挿していなくてもSolarisのログイン画面が表示されました。

実際の運用では、登録されたカードを挿した場合のみシステムを使えるようにするため、SunRay管理ツールからシステムポリシーを変更します。

ブラウザで管理画面(https://10.1.5.101:1661/)へアクセスします。


[詳細]→[システムポリシー]を開きます。
 [カードユーザ]の[アクセス]を[すべてのユーザー]→[登録されているトークンを持つユーザ]に変更します。
 また、[自己登録を許可する]と[ユーザーアカウント認証は必須]、[キオスクモード]の[使用可能]にもチェックを入れます。
 [非カードユーザー]の[アクセス]を[なし]に変更します。


このシステムポリシーの設定の意味ですが、おそらく以下のようになっているんじゃないかと思います。
[カードユーザ]:カードを挿入した場合の動作を指定。
[非カードユーザー]:カードを挿入していない時の動作の指定。
[アクセス]→[なし]:SunRayサーバを使わせない。待機画面のまま。
[アクセス]→[すべてのユーザー]:認証は行わないので誰でもシステムを使わせます。(Everyone的な感じ?)
[アクセス]→[登録されたトークンを持つユーザー]:SunRayサーバに登録されたトークンを持っていたら、システムを使わせます。
[アクセス]→[自己登録を許可する]:トークンの登録をクライアントからでも許可するようにします。
[アクセス]→[ユーザーアカウント認証は必須 ]:多分ですがトークン登録時にUnixユーザの認証を行います。誰でもトークンを登録させないようにするためと思われます。

なお、トークンについてですが、SunRay管理ツールのヘルプにはこう書いていました。
Sun Ray トークンは、セッションとユーザーの関連付けに使用する認証キーです。トークンはトークンタイプと識別子で構成される文字列です。ユーザーが DTU にスマートカード を挿入すると、カードのタイプと識別子がトークンとして使用されます (例: mondex.9998007668077709)。ユーザーがスマートカードを使用しない場合は、トークンタイプは「擬似」となり、DTU の識別子 (MAC アドレス) がトークンとして使用されます (例: pseudo.080020861234)。
つまり、DTUにもトークンがあり、カードを挿していないときはDTUのトークンが使われるということです。これでSunRayのログを見た時に端末のMACアドレスっぽいのが表示されている意味がわかりました。


システムポリシーを変更した場合は、SunRayサーバの管理ツール→[サーバー]から、コールドリスタートをさせる必要があります。
ウォームリスタートとコールドリスタートの違いはヘルプを見ると以下のようです。

・ウォームリスタート: 既存の Sun Ray セッションはそのまま保持されます。軽微な設定変更を行なった場合に、このオプションを使用します。軽微な変更であれば、既存のセッションを終了する必要はありません。
・コールドリスタート: 既存のすべての Sun Ray セッションが終了されます。重要な変更が行われた場合に、このオプションを使用します。




スマートカードのトークンの登録(自己登録)
システムポリシーで登録されてトークンしか使えないようにしたので、新しいスマートカードを挿入した時にカードトークンをそのカードを認証マネージャに登録しないといけません。

そのために、utregistというUnixユーザを作成します。(ユーザ名はなんでもよいと思います)

# useradd -g 101 -u 101 -s /bin/sh -d /tmp utregist
# passwd utregist
新しいパスワード:
新しいパスワードを再入力してください:
passwd: utregist のパスワードが変更されました

これで、スマートカードをDTUに挿入すると、「トークンは未登録です」という画面が表示されます。
それで、以下の情報を入力してトークンを登録します。

ユーザの名前:Windowsのユーザ名(この名前がWindowsのログイン画面のユーザ名に渡される)
Please enter user name:登録したUnixユーザ名入力(今回は utregist)
「了解」を押下。
Password:登録したUnixユーザのパスワード入力

これでカードが認証マネージャに登録されました。


ちなみに、スマートカードのトークンの登録はサーバ側でもできます。
SunRay管理ツール→[トークン]→リストの上部にある[新規]から登録できますが、トークンの識別子が分かっていないといけません。
トークンの識別子はブランクカードをSunRayDTUに挿入すると出てきますが面倒なので、自己登録したほうが便利かもしれませんね。



キオスクモードの設定
次にキオスクモードの設定を行います。
今回はSunRayDTUからWindowsサーバを利用させることが最終目的なのでキオスクモードは必須です。
(キオスクモードにしないとSun Ray Connector for Windows OSが使えません)

SunRay管理ツールから[詳細]→[キオスクモード]を開き以下のように設定します。

[セッション]:[Sun Ray Connector for Windows OS]
[タイムアウト]: 12000 秒(このタイムアウト時間以上過ぎるとセッションが消えるため、Windowsターミナルサーバ側もログアウトしてしまうようです)
[引数]: -m -l ja:IME -u `/opt/SUNWut/sbin/sunrayuser.sh` `/opt/SUNWut/sbin/card2user.sh`
(引数の意味ですが、-m はフルスクリーン表示、-l は言語設定、-u はWindowsログインウィンドウに渡すユーザ名、-A 24 は24bitカラー表示、-M all はマルチメディア拡張有効、-Etheming はテーマ表示ON、-r sound:highはサウンドON、末尾が接続先IPじゃないかと思われます)


さらに、/opt/SUNWut/sbin/sunrayuser.sh と /opt/SUNWut/sbin/card2user.sh のファイルを作成します。

vi /opt/SUNWut/sbin/sunrayuser.sh

#!/bin/sh
/opt/SUNWut/sbin/utuser -p "$SUN_SUNRAY_TOKEN"|/usr/bin/grep 'User Name'|/usr/bin/awk '{print $4}'



vi /opt/SUNWut/sbin/card2user.sh

#!/bin/sh
PRAM=`/opt/SUNWut/sbin/utuser -p $SUN_SUNRAY_TOKEN | grep 'Other Info' | sed 's/Other Info//g' | sed 's/[ , ,=]//g'`
if [ "$PRAM" = wt01 ] ; then
echo 10.1.5.20
elif [ "$PRAM" = wt02 ] ; then
echo 10.1.5.21
else
echo 10.1.5.25
fi

/opt/SUNWut/sbin/sunrayuser.shはトークン情報からユーザ名を取得するスクリプト、/opt/SUNWut/sbin/card2user.sh は接続するWindowsターミナルサーバを指定するものです。SunRayサーバに登録しているトークンのその他の情報に基いて接続先Windowsサーバを切り替えできるようになっています。詳しくは、Sun Ray Server でのトークン情報に基づくターミナルサーバ切替え時の障害を参照。

上記2つのファイルは実行可能権限を与えてやらないといけません。

# chmod 775 /opt/SUNWut/sbin/sunrayuser.sh
# chmod 775 /opt/SUNWut/sbin/card2user.sh


これで、SunRayDTUにカードを挿入してトークン登録すれば、Windowsにログインできるようになりました。
思った以上に簡単にできました。
ただSunRayのシステムを構築する場合は、マニュアル等をよく読んで、アーキテクチャや構成をよく知ることが必要かと思います。



参考:
Sun Ray Server Software 4.0 管理者マニュアル
Sun Ray Server Software 4.0 インストールと構成マニュアル
Solaris 10 に SRSS をインストールする方法 | だいたいおっけぇ
CentOS 5 の SRS から Windows OS に接続する方法 | だいたいおっけぇ
Sun Ray Connector for Windows Operating Systems 2.0 インストールおよび管理マニュアル

(余談:SunRayの帯域)
SRWC環境で車窓からの風景という比較的画面描画が高いYoutubeの動画をフルスクリーン再生してみました。解像度はSXGAで16bitです。
大体ALP部分(SunRayDTU~SRSS間)が7-9Mbps、RDP部分(SRSS~Windowsターミナルサーバ間)が2-3Mbpsでした。
[PR]
by Jehoshaphat | 2013-03-15 05:58 | サーバがらみ | Trackback | Comments(0)
Sun Ray Server Software(SRSS)のインストール Part1
Solaris10(5/08)にシンクライアントSunRayソリューションのサーバソフトSunRayServerSoftware(SRSS)4.0 をインストールしてみました。
要件としては、SunRay端末(DTU)をWindowsターミナルサーバへのクライアントとして利用します。

(Javaは既に1.5.0_14がインストールされてました)


Apache Tomcatのインストール
まず、Sun Ray Server Software 4.0 のCDをサーバ入れて、Tomcatのインストールします。

# cd /cdrom/srss_4.0/Supplemental/Apache_Tomcat
# /usr/sfw/bin/gtar -xvz -C /opt/ -f apache-tomcat-5.5.20.tar.gz
# ln -s /opt/apache-tomcat-5.5.20 /opt/apache-tomcat
↑(SRSSの設定中でtomcatインストールパスを聞いてくるので、シンボリックを張ります)



Sun Ray Server Softwareのインストール
次に、Sun Ray Server Software4.0 のインストールを行います。

# cd /cdrom/srss_4.0
# ./utinstall
un Microsystems, Inc. ("Sun")
SOFTWARE LICENSE AGREEMENT
......(省略).....
Accept (Y/N): y  ←yを入力
......(省略).....
<SUNWuti> のインストールに成功しました。
# utinstall Version: 4.0 2012年10月16日 (火) 21時33分48秒 JST

Sun Ray Server Software 4.0 not installed
Sun Ray Data Store 3.0 not installed

Do you want to install Sun Ray Server Software 4.0 French Admin GUI (Y/[N]): y  ←yを入力

Do you want to install Sun Ray Server Software 4.0 Japanese Admin GUI (Y/[N]): y  ←yを入力

Do you want to install Sun Ray Server Software 4.0 Simplified Chinese Admin GUI (Y/[N]): y  ←yを入力
Kiosk Mode 4.0 not installed

Enter Java v1.5 (or later) location [/usr/java]:  ←そのままEnter
(↑※1参考)

About to carry out the following operations:

Install [ Sun Ray Server Software 4.0 ]
Install [ Sun Ray Data Store 3.0 ]
Install [ Sun Ray Server Software 4.0 French Admin GUI ]
Install [ Sun Ray Server Software 4.0 Japanese Admin GUI ]
Install [ Sun Ray Server Software 4.0 Simplified Chinese Admin GUI ]
Install [ Sun Ray Server Software 4.0 ]
Install [ Kiosk Mode 4.0 ]
Install [ data for utslaunch ]
Install [ Sun Ray Server Software 4.0 modules for utsunmc ]


Continue? ([Y]/N): y  ←yを入力。これでインストールが開始される。

......(省略).....

Installation of Sun Ray Server Software has completed.

The system must be rebooted in order to complete this installation and
before starting the Sun Ray Server Software.

Please check for errors/warnings in

/var/adm/log/utinstall.2012_10_16_17:33:48.log

+++ Done.

※1 JREのバージョン1.5以降のパスを指定。インストールマニュアルによると32bitを選べとのこと。デフォルト値は /usr/java になっているので、こいつのバージョンと32bitかどうかを調べます。バージョンは /usr/java/java -version でわかります。この結果で32bit版か64bit版かわかります。結果の中に 64-bitとあると64bit版、そうでなければ32bit版です。


インストールが無事に終われば再起動します。
Solarisの場合は、sync (OSにキャッシュされているデータをディスクに書き込む)を3回うってからリブートするのがおまじないのようです。

# sync;sync;sync;reboot



Sun Ray Connector for Windows(SRWC)のインストール
次に、Windowsターミナルサーバに接続できるようにSun Ray Connector for Windows(SRWC)のインストールを行います。
Sun Ray Connector for Windows Operating System 2.0 のCDを入れます。

先に Sun Ray Windows Connectorを単独で使用するための専用のUNIXグループを作成します。

# groupadd srwc(グループ名はなんでもよい)


インストールシェルを実行します。

# /cdrom/srwc_2.0/installer
SOFTWARE LICENSE AGREEMENT
......(省略).....
Accept (Y/N): y  ←yを入力
......(省略).....
+++ Installing 'Sun Ray Connector 2.0'

+++ Adding 'SUNWuttsc'

</cdrom/srwc_2.0/Sun_Ray_Connector_2.0/Solaris_10+/i386/Packages> 中のパッケージインスタンス <SUNWuttsc> を処理中です。

Sun Ray Connector for Microsoft Windows Operating Systems (opt)(i386) 2.0_23
Copyright 2007 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Enter the name of a pre-existing group for use by the Sun Ray Connector:
srwc   ←作成したグループ名を入力
Using group name srwc..
</opt> をパッケージのベースディレクトリとして使用します。
## パッケージ情報を処理中です。
## システム情報を処理中です。
## パッケージの依存関係を検査しています。
## ディスク領域の要件を確認中です。
Sun Ray Connector for Microsoft Windows Operating Systems (opt) を <SUNWuttsc> としてインストール中です。
......(省略).....
<SUNWuttsc-kiosk> のインストールに成功しました。




パッチ適用
127554-02,128166-01,127557-01のパッチを適用します。

・SunRayServerSoftware4.0のパッチ(127554-02)
zipを解凍して[127554-02]フォルダをftpでSunRayサーバ上の /Desktop/ に配置します。
README.127554-02 を見ながら作業(英語なので苦戦)しました。
と思ったら、solarisのパッチは patchadd コマンドで簡単にできるみたいですね。

まず、Sun Rayサービスを停止します。

# /etc/init.d/utstorage stop
# /etc/init.d/utsvc stop


patchaddコマンドでパッチを適用します。(patchadd パッチ番号 で適用できます)

# cd /Desktop
# patchadd 127554-02
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Done!
Checking patches that you specified for installation.
Done!
Approved patches will be installed in this order:
127554-02
インストールされたパッチを確認中...
ファイルシステムの容量が十分であることを確認中 (dry run 方法)...
パッチパッケージをインストール中...
パッチ 127554-02 のインストールに成功しました。
See /var/sadm/patch/127554-02/log for details
パッチパッケージがインストールされました:
SUNWlibusbut
SUNWuta
SUNWutfw
SUNWuto
SUNWutscr
SUNWutu



パッチが適用されたか確認します。

# patchadd -p | grep 127554
Patch: 127554-02 Obsoletes: Requires: Incompatibles: Packages: SUNWuto SUNWutfw SUNWutu SUNWuta SUNWlibusbut SUNWutscr

OKですね。


・Sun Ray Kiosk Session Service version 4.0 パッチ(128166-01)
同じ要領で、Kiosk Sessionのパッチを適用します。

# patchadd 128166-01
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Done!
Checking patches that you specified for installation.
Done!
Approved patches will be installed in this order:
128166-01
インストールされたパッチを確認中...
ファイルシステムの容量が十分であることを確認中 (dry run 方法)...
パッチパッケージをインストール中...
パッチ 128166-01 のインストールに成功しました。
See /var/sadm/patch/128166-01/log for details
パッチパッケージがインストールされました:
SUNWkio
SUNWkio-cde



・Sun Ray Connector for Windows Operation System2.0パッチ(127557-01)

# patchadd 127557-01
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Done!
Checking patches that you specified for installation.
Done!
Approved patches will be installed in this order:
127557-01
インストールされたパッチを確認中...
ファイルシステムの容量が十分であることを確認中 (dry run 方法)...
パッチパッケージをインストール中...
パッチ 127557-01 のインストールに成功しました。
See /var/sadm/patch/127557-01/log for details
パッチパッケージがインストールされました:
SUNWuttsc


この後、SunRayサーバの構成になるんですが、文字数制限のため別記事(Sun Ray Server Software(SRSS)のインストール Part2)にします。
[PR]
by Jehoshaphat | 2013-03-15 05:48 | サーバがらみ | Trackback | Comments(0)
SunRayで誰かが動画再生すると全体の描画が遅くなった
SunRay2を使ってるんですが、突然描画重くなったりする現象が発生してました。
サーバのCPU,メモリ負荷は問題なかったため、smokeping でSunrayサーバのネットワークの遅延を調べてみると以下のようになってました。
e0091163_0113938.jpg


ちょうど描画が重かった12:40-13:00にかけて大きな遅延が発生しています。

さらにユーザの利用調査をしていると、どうやら動画再生をしているときに重くなり、Sunrayサーバへの遅延も発生しているようです。

この現象についてググると、Osamu Sayama's Weblog:sunray bandwidth limit にドンピシャな情報が載っていました。

どうやらSunRayで動画サイト等を見ると、画面遷移が多いためサーバ側はクライアント側に大量の描画パケットを送信します。
SunRayの描画パケットはSunRay2で画面描画が遅く残像らしきものが残るで書いたようにUDPを使ってます
UDPは相手の都合お構いなしにパケットを投げるので、今回の動画のように画面更新が多くて、クライアント側のネットーワークがサーバ側ネットーワークより遅い場合、描画パケットが大量過ぎて捌ききれない状態になり、他のユーザへの描画パケットや/クライアントからのマウス・キーボード操作パケットが破棄/遅延されてしまうようですね。


参考先にあるように、DTU側で帯域制限をしてやれば、そのDTUに対してサーバ側は設定された帯域以上はパケットを投げず全体への影響を抑えることができるようです。
それで、utcapture コマンドで帯域制限無しと有りでのSunRayサーバ~クライアントのパケットロスを調べてみました。

utcapture の結果の各列の意味は下記のとおりです。

TERMINALID:クライアントの MAC アドレス。
TIMESTAMP:「20041229112512」などの「年-月-日-時-分-秒」の時刻形式で表示されるロスが発生した時間。
TOTAL PACKET:サーバーからクライアントに送信された合計パケット数。
TOTAL LOSS:クライアントによって消失と報告された合計パケット数。
BYTES SENT:サーバーからクライアントに送信された合計バイト数。
PERCENT LOSS:現在と前のポーリング間隔の間に消失したパケットの割合。
LATENCY:クライアントとサーバー間の往復にかかる時間 (ミリ秒単位)


まず帯域制限をかけなかった場合です。

====帯域制限なし
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc(特定のDTUのみ抽出したかったので、そのDTUのMACアドレスでgrepしてます)
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓通常の業務操作
002128aabbcc 20111111143745 45453 6565 51095948
002128aabbcc 20111111143815 82038 9317 96325054 7.522
002128aabbcc 20111111143830 124093 11114 150312460 4.273
002128aabbcc 20111111143845 135388 11664 164520680 4.869
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111143915 142906 13804 171358852 28.465
002128aabbcc 20111111143930 203722 32692 227348840 31.058
002128aabbcc 20111111143945 287421 66322 293922746 40.180
002128aabbcc 20111111144015 318069 76575 321067832 33.454
002128aabbcc 20111111144031 318079 76576 321068570 10.000

画像ファイルを全画面表示するとやはりサーバから送信するパケットが増えるとと共にパケットロスと遅延が増大しています。


次に、DTU側で帯域制限を 30Mbps でかけた時です。
(帯域制限のかけ方は、DTUで Ctrl+Pause+M → Advanced → Bandwidth Limit で、bps単位で帯域を制限します)

====帯域制限あり 30Mbps
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111144231 86999 11306 101932702 7.813
002128aabbcc 20111111144301 123778 16061 145332462 12.929
002128aabbcc 20111111144316 151922 20277 177660986 14.980

ちょっとは送信パケットが減り、同様にパケットロスと遅延も減っています。


さらに、8Mbpsで制限をかけた時です。

====帯域制限 8Mbps
bash-3.00# /opt/SUNWut/sbin/utcapture | grep aabbcc
TERMINALID TIMESTAMP TOTAL PACKET TOTAL LOSS BYTES SENT PERCENT LOSS LATENCY
↓画像ファイルを全画面で表示を繰り返したとき
002128aabbcc 20111111144446 48332 1457 61692026 2.405
002128aabbcc 20111111144531 51240 1458 65180180 0.117
002128aabbcc 20111111144546 53590 1478 68135492 0.851
002128aabbcc 20111111144616 57335 1627 72505752 3.979
002128aabbcc 20111111144731 67512 1629 84757134 0.261
002128aabbcc 20111111144847 80039 1653 99529180 1.666
↓画像ファイル全画面テスト
002128aabbcc 20111111145132 88198 1853 110024494 2.483
002128aabbcc 20111111145147 100233 2177 125551832 2.692

8Mbpsでは、画像ファイル全画面表示しても大きな遅延やパケットロスがさほど発生していません。

もちろんクライアント側では制限なしの時に比べると描画が遅く感じますが、他への影響をかけないという観点からするとやはり帯域制限は必要だと感じました。


参考:
Sun Ray Server Software 4.0 管理者マニュアル P34あたりにutcaptureの使い方が載ってます。


最近忙しすぎて全然ブログ更新できてませんでしたが、ようやく時間ができたのでボチボチアップしていこうかと思います。
[PR]
by Jehoshaphat | 2012-04-19 00:12 | サーバがらみ | Trackback | Comments(0)
SunRayとRDTとで画面描画速度の違い

SunRay2で画面描画が遅く残像らしきものが残る の最後の方で、SunRayとターミナルサーバやリモートデスクトップで使う RDT プロトコルの帯域の違いをちょこっとだけ説明しました。


で、機会があったので SunRay の画面描画プロトコル ALP-RENDER と RDP とでどちらがシンクライアントの画面描画のレスポンスが早いか比較してみました。
なお、SunRayはSun Ray Connector for Windows を使いWindowsターミナルサーバに接続しています。
構成としては下記のような感じです。

○SunRayを使う方法
SunRay2 DTU←(ALP-RENDER)→SunRayサーバ←(RDP)→ターミナルサーバ

○RDPを使う方法
NEC US100←(RDP)→ターミナルサーバ


結果は SunRay の方が画面描画は高速でした。
特に画像が多い画面だとその傾向が顕著でした。

やはり SunRay の ALP-RENDER はUDPで帯域を使う分画面描画が高速なのですね。
なので、LAN等帯域が太いところでのソリューションにはいいかもしれません。

逆にRDPはTCPかつ低帯域なので、WANを挟んだ場合は有利かもしれませんね。
[PR]
by jehoshaphat | 2011-02-20 19:19 | サーバがらみ | Trackback | Comments(0)
SunRayサーバからターミナルサーバ接続のRDPセッション

通常WindowsターミナルサーバをWindowsクライアントOSからリモートデスクトップで接続したときは、「ターミナルサービスマネージャ」でセッションの状態を見た時は「Active」になってます。
で、ログオフせずにリモートデスクトップのウィンドウを閉じるとセッション状態は「Disconnect」になります。つまり切断状態ですね。
リモートデスクトップウィンドウは表示してても、何も操作しなければアイドル時間がカウントされます。

で、SunRay2 でSun Ray Connector for Windows(uttsc) を使って Windows ターミナルサーバに接続してるんですが、デスクトップユニットのスマートカードを抜くと、ターミナルサーバのRDPセッションはどうなるのか実験してみました。
(実際のセッションは SunRayサーバ~ターミナルサーバ間で張られています。)

Disconnect(切断)になると期待してたんですが、Activeのままでした。
ということで、ターミナルサービス構成でRDPセッションのタイムアウトを設定するときは、SunRayをクライアントにしてる場合、「アイドルセッションの制限」を設定しないといけないということですね。
「切断されたセッションを終了」は、SunRayがクライアントの場合意味をなさないようです。
[PR]
by jehoshaphat | 2011-01-17 22:02 | サーバがらみ | Trackback | Comments(0)
SunRay2で画面描画が遅く残像らしきものが残る
SunRay2デスクトップユニット(DTU)で、Sun Ray Connector for Windows を使いWindowsターミナルサーバに接続しています。

そこで画面の描画が遅いという問い合わせが殺到しました。
見てみたところ、特に描画負荷が高い画像等を表示するときに描画が間に合ってない感がします。しばらく待ってれば描画されるんですが、画像多めのWEBページとかをスクロールした日には昔の画面が崩れるウイルスのような感じでしたね。
まぁ全く使えないほどではないのでとりあえずユーザにはそのまま使ってもらうことに。

SunRayサーバやターミナルサーバには負荷がかかってる様子はなかったので、ちょうど先日SunRayサーバ周りのネットワーク構成を少し変えたのでそれが原因かなと思いました。

まずネットワーク障害で多いループによるブロードキャストストームを疑いました。しかし、L2スイッチ(ハブ)のLEDもそれほど激しくはなく、PCでパケットキャプチャしてもブロードキャストパケットはそれほど多くはありません。
(ブロードキャストストームについては、下記サイトが参考になります。
ITpro:[設計編]LANスイッチでループ構造を作ってはいけない
Ethereal_キャプチャの手順
@IT:連載:ネットワーク運用管理入門)

また、SunRay DTU からターミナルサーバではなく、直接Solarisの画面を表示してもはやり、描画が間に合っていません。

実はSunRayからWindowsターミナルサーバとの間は別ネットワークとして構築してます。
下記のような感じです。

クライアント←(192.168.0.0/24)→SunRayサーバ←(192.168.100.0/24)→Windowsターミナルサーバ

これはSunRayとWindowsターミナルサーバとの間のネットワーク負荷が高いとのクラスタ構成が関係していました。

で、この 192.168.100.0/24 のネットワークにSuRay DTUを置いてSunRayサーバのSolarisの画面表示したら遅延なく表示されました。
ということで、どうやら 192.168.0.0 のネットワークがおかしいようです。(まぁいじったのもそっちのネットワークだったので。。。)

先般実施したネットワーク構成変更ってのも、新規別サーバ増設とL2スイッチの移動だけでした。

ここで思いついたのはパケット損失です。
(このときMTUも疑いましたが、pingで調査したところ問題ありませんでした。pingによるMTUサイズの調査方法は@IT:pingでMTUサイズを調査する参照)

まず、SunRay2 がどういうプロトコルでやり取りしてるのか調べました。

ポートとプロトコル - Sun Ray Server Software 4.2, Japanese - wikis.sun.comにどのようなプロトコルを使うか載ってました。
結構いろんなポート・プロトコル使うんですね。。
注目したのは一番データが多そうである、ALP-RENDER と呼ばれてる画面描画プロトコルです。
UDPを使っているんですよね。。。

UDPって投げっぱなしのプロトコル。つまり、途中で破棄されたらそのままです。
どうも今回はこの可能性が高いのではないかと疑いました。

で、夜にSunRayサーバが繋がってたもともとのハブに差し替えたところ、なんと画面描画遅延が発生しなくなりました。

やはりハブが原因だったようです。


ただ、カタログ見る限りはもともとのハブは100Mbpsでネットワーク構成変更で繋ぎ換えたハブは1000Mbpsでスループットも上なんですよね。。。
カタログ表記にない何かが影響したのかどうか詳しくはわかりませんが、まぁ遅延なくなって助かりました。

もしかしたら、L2スイッチとサーバ側NICの相性問題かもしれません。
もしくはオートネゴシエーションの問題が、フロー制御かな。。。


ちなみに、SunというかOracleはSunRayの使用に300kbpsを推奨しています。
(参考:サン・マイクロシステムズ - Sun Ray 2 - FAQ@IT:Special: よりセキュアに、より環境に優しく、 ――シンクライアントSun Rayの実像)
これって結構大きいのかなと思います。


ターミナルサーバやリモートデスクトップで使う RDT プロトコルは 64kbps の帯域で、メタフレームはさらにその半分の帯域で済むようですし。。
(参考:ネットワークスペシャリスト試験に楽々合格ITpro:大和証券,シン・クライアントを1500台導入パソコン制御とシンクライアント)


後気になったのは、このSunRayサーバに ping を飛ばすと最初の一回目が Time Out となる時があるのです。
Time Out となるのは arp キャッシュがクリアされている時のようです。
(Windows の場合 arp -d * でMACアドレスのキャッシュをクリアできます。)

やはりネットワーク負荷がかかってるんでしょうかね。。。
(ARPに関しては、@IT:ARPコマンドで通信先を特定するが参考になります。

補足(2013/3/16)
遅延の原因が分かりました。詳しくは、SunRay2で画面描画が遅く残像らしきものが残る Part2を参考。
[PR]
by jehoshaphat | 2010-09-21 23:53 | ネットワーク | Trackback | Comments(0)
Sun Ray Server でのトークン情報に基づくターミナルサーバ切替え時の障害
サン・マイクロシステムズ(あ、今は Oracle か。。)の SunRay2 というシンクライアントを使ってます。

概要として一般ユーザのトークンはキオクスモードで Sun Ray Connector for Windows(uttsc) を使って Window ターミナルサーバに接続するというものです。
(エンドユーザは慣れたWindows上で作業出来るし、情報漏えいの心配はないし、膨大な数のPC管理も不必要となるので、IT管理者にとってはうれしい仕組みです。ただ、ターミナルサーバ側で膨大なスペックとTS CALが要求されますが。。。)

で、今回 Sun Ray Server へのセッションが確立された段階で、トークン情報に基づいて接続する Windows Server を切りかえるという必要が発生しました。

これは uttsc への引数によりどのサーバにつなぐか切り替えれるようです。


ということで、ブラウザからSunRay管理コンソール(SunRayAdministrator)を表示し、「詳細」タブの「キオスクモード」で、セッションを「Sun Ray Connector for Windows OS」となっていることを確認後、引数を追加します。
引数にはシェルスクリプトを指定し、トークンのその他の情報に基づいてサーバのIPを返答するにしました。
uttsc への引数はこんな感じです。

-m -l ja:IME -u `/opt/userget.sh` `/opt/chgserver.sh`


すで引数には別のスクリプトが指定してます。
それは、Windows ログイン名を自動指定する引数です。
Windowsのアカウントも SunRay スマートカードのユーザ名と同じにしてるので、トークン情報よりユーザ名を抜き出します。

その部分のスクリプトはこんな感じです。(/opt/userget.sh)
/opt/SUNWut/sbin/utuser -p "$SUN_SUNRAY_TOKEN"|/usr/bin/grep 'User Name'|/usr/bin/awk '{print $4}'

SunRayコマンド管理ツールの utuser -p でトークン情報を取得し、 UserName のある列の4つ目の要素をとっていますね。

で、本題のトークン「その他の情報」に基づいてサーバを切り替えるスクリプトです。(/opt/chgserver.sh)(このスクリプトはメンテナンス会社がよこしたものです)

#!/bin/csh

if(`/opt/SUNWut/sbin/utuser -p $SUN_SUNRAY_TOKEN | /usr/bin/nawk '/Other Info/ {print $4}'` == server1 ) then
echo 10.0.0.10
else
echo 10.0.0.11
ndif

トークンの「その他の情報」が server1 という文字列なら 10.0.0.10 のターミナルサーバにつなぐというものです。

で、この状態で運用を始めると Windows ターミナルサーバにつなげないユーザが出てきました。

サーバの message ログをみるとこんな感じでした。

kiosk:uttsc[000]: [ID 000000 user.notice] Usage:
kiosk:uttsc[000]: [ID 000000 user.notice]
kiosk:uttsc[000]: [ID 000000 user.notice] uttsc [-a [-c ]] [-C]
kiosk:uttsc[000]: [ID 000000 user.notice] [-k ] [-l ] [-E ]
kiosk:uttsc[000]: [ID 000000 user.notice] [-m [-b] | -K | -g [+|-+|-]
kiosk:uttsc[000]: [ID 000000 user.notice] [-K]] [-x ] [-P port] [-O] [-n client name ]
kiosk:uttsc[000]: [ID 000000 user.notice] [-u [-d ] [-p | -i]] [-z] [-A ]
kiosk:uttsc[000]: [ID 000000 user.notice] [-r comport:=,=...]
kiosk:uttsc[000]: [ID 000000 user.notice] [-r printer:[=]...]
kiosk:uttsc[000]: [ID 000000 user.notice] [-r disk:=,=...]
kiosk:uttsc[000]: [ID 000000 user.notice] [-r sound:low|high|off]
kiosk:uttsc[000]: [ID 000000 user.notice] [-r scard:on] [-s] [-t Connection Timeout in Sec] [-B]
kiosk:uttsc[000]: [ID 000000 user.notice] [-T window title ]
kiosk:uttsc[000]: [ID 000000 user.notice] uttsc -v
kiosk:uttsc[000]: [ID 000000 user.notice] uttsc -h
kiosk:uttsc[000]: [ID 000000 user.notice] kill: 18052: アクセス権がありません
kiosk:uttsc[205]: [ID 000000 user.error] /opt/SUNWuttsc/bin/uttsc exited with error code 1 - exiting

どうやら uttsc への引数が正しくないようです。

いろいろ調査した結果「その他の情報」に空白があるトークンの場合に失敗してるっぽいです。
(「その他の情報」には文字通り、補足情報を入れて運用してました。)

nawk 使ってる所で、空白等特殊文字があると csh は指定があいまいとかって怒るようです。

さて、これをどうすればいいかというと、下記のようなシェル書いてみました。

#!/bin/sh

PRAM=`/opt/SUNWut/sbin/utuser -p $SUN_SUNRAY_TOKEN | grep 'Other Info' | sed 's/Other Info//g' | sed 's/[ , ,=]//g'`
 
if [ "$PRAM" = server1 ] ;
then
echo 10.0.0.10
else
echo 10.0.0.11
fi

grepで検索してsedでおきかえるっていう単純なものです。
cshは使ったことないんで、普通に sh にしてます。

補足ですが、utuser -p で返る情報はこんな形式です。

bash-3.00# /opt/SUNWut/sbin/utuser -p トークン情報
Current Properties:
User Name = username
Other Info = その他の情報 ←今回ここに空白がある場合に、シェルで怒られた
Server Name = localhost
Server Port = xxxx
Logical Token = xxxx
User Created = 01/01/2010 01:00:00
Session Type = kiosk

Token Enabled?
---------------------------------------- --------
トークン情報 Yes

Currently Logged In:
Current Desktop = xxxxx
Desktop Location =
Logged In Since = 01/01/2010 01:00:00

[PR]
by jehoshaphat | 2010-02-04 23:15 | サーバがらみ | Trackback | Comments(0)