![]() | |
Sun Java System Portal Server Secure Remote Access 6 管理ガイド 2004Q2 |
第 5 章
Netletこの章では、ユーザーのリモートデスクトップとイントラネット上のアプリケーションを実行しているサーバーとの間で、Netlet を使用してアプリケーションを安全に実行する方法について説明します。NetFile の設定については、第 11 章「Netlet の設定」を参照してください。
この章で説明する内容は次のとおりです。
Netlet の概要Sun Java System Portal Server のユーザーが、一般的なアプリケーションや企業専用のアプリケーションをリモートデスクトップで安全に実行できると便利な場合があります。プラットフォームに Netlet を設定すると、このようなアプリケーションに安全にアクセスできるようになります。
Netlet を使用することで、インターネットなどのセキュリティの弱いネットワークで一般的な TCP/IP サービスを安全に実行できます。TCP/IP アプリケーション (Telnet や SMTP など)、HTTP アプリケーション、同じポートを使用するすべてのアプリケーションを実行できます。
アプリケーションが TCP/IP または同じポートを使用している場合は、Netlet を使用してアプリケーションを実行できます。
Netlet のコンポーネント
図 5-1 は、Netlet で使用される各種コンポーネントを示しています。
図 5-1 Netlet のコンポーネント
localhost の待機ポート
これは Netlet アプレットが待機するクライアントマシン上のポートです。クライアントマシンはローカルホストです。
Netlet アプレット
Netlet アプレットは、リモートクライアントマシンと、Telnet、Graphon、Citrix などのイントラネットアプリケーションの間で、暗号化された TCP/IP トンネルの設定を担当します。アプレットはパケットを暗号化してゲートウェイに送信し、ゲートウェイからの応答パケットを解読してローカルアプリケーションに送信します。
スタティックルールの場合、Netlet アプレットは、ユーザーがポータルにログインすると自動的にダウンロードされます。ダイナミックルールの場合、ダイナミックルールに対応するリンクをユーザーがクリックしたときにアプレットがダウンロードされます。スタティックルールとダイナミックルールについては、「ルールのタイプ」を参照してください。
Sun Ray 環境での Netlet の実行については、「Sun Ray 環境での Netlet の実行」を参照してください。
Netlet ルール
Netlet ルールでは、クライアントマシンで実行する必要のあるアプリケーションが、対応する宛先ホストにマッピングされます。つまり Netlet は、Netlet ルールに定義されたポートに送信されたパケットに対してだけ動作します。これにより、セキュリティが向上します。
管理者は Netlet の機能に対して特定のルールを設定する必要があります。これらのルールによって、使用される暗号化方式や、呼び出す URL、ダウンロードするアプレット、宛先ポート、宛先ホストなどの詳細が指定されます。クライアントマシン上のユーザーが Netlet を通じて要求を行う場合、これらのルールに基づいて接続の確立方法が速やかに決定されます。詳細については、「Netlet ルールの定義」を参照してください。
Netlet プロバイダ
これは Netlet の UI コンポーネントです。プロバイダを使用することで、Portal Server, Secure Remote Access のデスクトップから必要なアプリケーションを設定できます。プロバイダにリンクが作成され、ユーザーはこのリンクをクリックして必要なアプリケーションを実行します。また、デスクトップ Netlet プロバイダで、ダイナミックルールの宛先ホストを指定できます。「Netlet ルールの定義」を参照してください。
EProxy
クライアントの要求はすべて EProxy を通じてルーティングされます。EProxy は Netlet 要求だけを処理し、その他の要求は RProxy に渡します。EProxy は Netlet 要求をパースし、Netlet プロキシ (Netlet プロキシが有効な場合) または宛先ホストに直接渡します。
Netlet プロキシ (オプション)
ゲートウェイは、リモートクライアントマシンとゲートウェイ間の安全なトンネルを保証します。Netlet プロキシの使用は任意です。インストール時にこのプロキシをインストールしない選択も可能です。Netlet プロキシについては、「Netlet プロキシの使用」を参照してください。
宛先ポート
これは宛先アプリケーションのホストが待機するポートです。
Netlet の使用例
Netlet 使用時には、次の一連のイベントが行われます。
- リモートユーザーが Portal Server, Secure Remote Access デスクトップにログインします。
- ユーザー、ロール、または組織にスタティック Netlet ルールが定義されている場合は、リモートクライアントに Netlet アプレットが自動的にダウンロードされます。
ユーザー、ロール、または組織にダイナミックルールが定義されている場合は、Netlet プロバイダに必要なアプリケーションを手動で設定する必要があります。Netlet アプレットは、ユーザーが Netlet プロバイダのアプリケーションリンクをクリックしたときにダウンロードされます。スタティックルールとダイナミックルールについては、「Netlet ルールの定義」を参照してください。
- Netlet は Netlet ルールで定義されたローカルポートで待機します。
- Netlet はリモートクライアントとホストの間で、Netlet ルールで指定されたポートを使用するチャネルを確立します。
Netlet の操作
Netlet が異なる組織間のさまざまなユーザーの要求に合わせて機能するには、次の手順を実行する必要があります。
- ユーザー要件に基づいて、スタティックルールとダイナミックルールのどちらを作成するかを決定します。「ルールのタイプ」を参照してください。
- Identity Server 管理コンソールの「サービス設定」タブで、Netlet テンプレートにグローバルオプションを定義します。第 11 章「Netlet の設定」を参照してください。
- ルールの基準を組織、ロール、ユーザーから選択し、各レベルで必要に応じて修正します。組織、ロール、ユーザーについては、『Portal Server 管理ガイド』を参照してください。
リモートホストからのアプレットのダウンロードURL から返されたページに、リモートマシンからフェッチする必要があるアプレットが埋め込まれていることがあります。ただし、アプレットがホストにダウンロードされていない場合には、Java のセキュリティによって、アプレットとそのホストの通信は許可されません。アプレットがローカルネットワークポートを使用してゲートウェイと通信できるようにするには、Identity Server 管理コンソールの「アプレットのダウンロード」フィールドを確認し、次の構文を指定する必要があります。
local-port:server-host:server-port
ここで
local-port はローカルポートです。Netlet は、アプレットから送信されるトラフィックをここで待機します。
server-host は、アプレットのダウンロード元です。
server-port は、アプレットのダウンロードに使用されるポートです。
Netlet ルールの定義Netlet の設定は Netlet ルールによって定義されます。このルールは、Identity Server 管理コンソールの「SRA 設定」セクションで設定されます。Netlet ルールは組織、ロール、またはユーザーのいずれかに対して設定できます。Netlet ルールをロールまたはユーザーに対して定義したときは、組織を選択してから目的のロールまたはユーザーを選択します。
警告
Netlet ルールはマルチバイトエントリをサポートしません。Netlet ルールのどの編集フィールドにもマルチバイト文字を指定しないでください。
Netlet ルールには 64000 を超えるポート番号を指定できません。
表 5-1 は、Netlet ルールのフィールドを示しています。
表 5-1 Netlet ルールのフィールド
パラメータ
説明
値
ルール名
この Netlet ルールの名前を指定する。各ルールに一意の名前を指定する必要がある。これは、特定のルールへのアクセスを定義する場合に便利である。詳細については、「Netlet ルールへのアクセスの定義」を参照
暗号化方式
暗号化方式を定義するか、ユーザーが選択できる方式のリストを指定する
選択した暗号化方式は、Netlet プロバイダにリスト表示される。ユーザーは必要な暗号化方式をリストから選択できる
デフォルト: Netlet 管理コンソールで指定するデフォルト VM ネイティブ暗号化方式と、デフォルト Java プラグイン暗号化方式
URL
URL ユーザーが Netlet プロバイダのリンクをクリックしたときにブラウザで開かれる URL を指定する。ブラウザにはアプリケーションのウィンドウが表示され、ルールによって指定されたローカルポート番号で localhost に接続する
相対 URL を指定する必要がある
Netlet ルールによって呼び出されるアプリケーションへの URL
例 : telnet://localhost:30000アプリケーションの呼び出しにアプレットが必要な場合は、その URL を指定する
null : 指定した URL によってアプリケーションが起動されない、またはデスクトップで制御されない場合に設定する値。通常は Web ベース以外のアプリケーションで使用される
アプレットのダウンロード
このルールでアプレットのダウンロードが必要であるかどうかを指定する
False : アプレットをダウンロードしない
True : ループバックポートを使用してアプレットを Portal Server マシンからダウンロードする
アプレットの詳細は、local-port:server-host:server-port の形式で指定する
- local-port はクライアントの宛先ポートを表す。このポートは、デフォルトのループバックポートとは異なる必要がある。詳細については、第 11 章「Netlet の設定」を参照。各ルールに一意の local port を指定する
- server-host はアプレットのダウンロード元のサーバー名を表す
- server-port はアプレットのダウンロードに使用されるサーバー上のポートを表す
アプレットがダウンロードされる場合にサーバーが指定されていないときは、アプレットは Portal Server のホストからダウンロードされる
拡張セッション
Netlet がアクティブの場合、Portal Server セッションのアイドル時間のタイムアウトを制御する
Enabled: Netlet がアクティブで、ほかのポータルアプリケーションがアイドルの場合にのみ、ポータルセッションを持続するようにする
Disabled : Netlet アプリケーションがアクティブでも、ほかのポータルアプリケーションがアイドルの場合、ポータルセッションのアイドル時間は、セッションに指定されたアイドル時間でタイムアウトになる
ローカルポート
Netlet が待機するクライアントのポート
local-port の値は一意である必要がある。特定のポート番号を複数のルールに指定することはできない
複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合である。構文については、「複数ホスト接続のスタティックルール」を参照
FTP ルールでは、ローカルポートは 30021 でなければならない
宛先ホスト
Netlet 接続の受信者
host : Netlet 接続を受信するホスト名。これはスタティックルールで使用される。siroe などの簡易ホスト名、または siroe.mycompany.com などの完全修飾 DNS 形式のホスト名を指定する。次の場合に複数のホストを指定する
- 指定された各ホストとの接続を確立する場合。指定された各ホストに対して対応するクライアントと宛先ポートを指定する必要がある。構文については、「複数ホスト接続のスタティックルール」を参照
- 指定されたホストのリストから、使用可能なホストへの接続を試みる場合。構文については、「複数ホストを選択するスタティックルール」を参照
TARGET : 構文で TARGET を指定するルールはダイナミックルールである。TARGET は、デスクトップの Netlet プロバイダでユーザーが必要な宛先ホストを 1 つ以上指定できることを示す
1 つのルールでスタティックホストと TARGET を組み合わせることはできない
宛先ポート
宛先ホスト上のポート
ホストと宛先ホストの他に、宛先ポートを指定する必要がある
複数の宛先ホストがある場合は、複数の宛先ポートを指定できる。複数のポートは、port1+port2+port3-port4+port5 のように指定する
ポート番号間のプラス (+) 記号は、単一の宛先ホストに対する代替ポートを表す
異なる宛先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入する
この例では、Netlet は port1、port2、port3 を順番に使用して、指定された最初の宛先ホストへの接続を試みる。これに失敗した場合、Netlet は port4 と port5 をこの順序で使用して 2 番目のホストへの接続を試みる
複数のポートは、スタティックルールだけで設定できる
ゲートウェイが Portal Server からセッション通知を受け取るには、次の情報を、
com.iplanet.am.jassproxy.trustAllServerCerts=true
Portal Server 上の次のプロパティファイルに追加します。
/etc/opt/SUNWam/config/AMConfig.properties
2. Identity Server を再起動します。
ルールのタイプ
ルールで宛先ホストがどのように指定されているかにより、Netlet ルールは 2 つのタイプに分かれます。
スタティックルール
スタティックルールは、ルールの一部として宛先ホストを指定します。スタティックルールを作成する場合、ユーザーは必要な宛先ホストを指定することができません。次の例では、sesta は宛先ホストです。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
ftpstatic
SSL_RSA_WITH_RC4_128_MD5
Null
false
true
30021
sesta
21
複数の宛先ホストおよびポートを設定できるのは、スタティックルールだけです。設定例については、「複数ホスト接続のスタティックルール」を参照してください。
ダイナミックルール
ダイナミックルールでは、宛先ホストはルールの一部として指定されません。ユーザーは Netlet プロバイダで必要な宛先ホストを指定できます。次の例では、TARGET は宛先ホストの可変部分です。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
ftpdynamic
SSL_RSA_WITH_RC4_128_MD5
Null
false
true
30021
TARGET
21
暗号化方式
暗号化方式に基づいて、Netlet ルールはさらに次のように分類されます。
Netlet でサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
Netlet でサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
サポートされる暗号化方式
表 5-2 は、Netlet でサポートされる暗号化方式のリストを示しています。
下位互換性
旧バージョンの Portal Server は、Netlet ルールの一部として暗号化方式をサポートしていません。暗号化方式を使用せずに既存のルールと下位互換を行うには、ルールでデフォルトの暗号化方式を指定します。暗号化方式を使用しない既存のルールは、次のとおりです。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
Telnet
telnet://localhost:30000
false
true
30000
TARGET
23
これは次のように解釈されます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
Telnet
デフォルト暗号化方式
telnet://localhost:30000
false
true
30000
TARGET
23
これは、管理者設定ルールでデフォルトとして選択した「暗号化方式」フィールドと同じです。詳細については、「デフォルトの暗号化方式の指定」を参照してください。
Netlet ルールの例
ここでは、Netlet ルールの例をいくつか示し、Netlet 構文がどのように機能するかについて説明します。
基本的なスタティックルール
このルールは、クライアントマシンから sesta への Telnet 接続をサポートします。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
Null
false
true
1111
sesta
23
ここで
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
null は、このアプリケーションが URL で呼び出されない、またはデスクトップから実行できないことを示します。
false は、クライアントがアプレットをダウンロードし、このアプリケーションを実行しないことを示します。
true は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
1111 は、Netlet が宛先ホストからの接続要求を待機するクライアント側のポートです。
sesta は Telnet 接続の受信側ホストの名前です。
23 は接続の宛先ホストのポート番号です。この例では、既知の Telnet ポートです。
デスクトップ Netlet プロバイダにはリンクが表示されませんが、Netlet は指定されたポート (1111) で自動的に起動して待機します。クライアントソフトウェア、この場合はポート 1111 で localhost に接続した Telnet セッションを開始するようにユーザーに指示してください。
たとえば、Telnet セッションを開始するには、クライアントは端末の UNIX コマンド行で次のコマンドを入力する必要があります。
複数ホスト接続のスタティックルール
このルールは、クライアントマシンから 2 台のマシン sesta および siroe へのTelnet 接続をサポートします。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
Null
false
true
1111
sesta
23
1234
siroe
23
ここで
23 は接続用の宛先ホスト上のポート番号です。Telnet の予約ポート番号です。
1111 は、Netlet が最初の宛先ホスト sesta からの接続要求を待機するポートです。
1234 は、Netlet が 2 番目の宛先ホスト siroe からの接続要求を待機するポートです。
このルールの最初の 6 フィールドは、「基本的なスタティックルール」と同じです。2 番目の宛先ホストを識別するためのフィールドが 3 つ追加されている点が異なります。
ルールにターゲットを追加するときは、新しい宛先ホストごとに 3 つのフィールド、ローカルポート、宛先ホスト、宛先ポートを追加する必要があります。
注
各宛先ホストへの接続を、3 フィールドのセットを使って記述することができます。2048 未満の待機ポート番号は、UNIX ベースのリモートクライアントでは使用できません。UNIX は下位数値のポートに制約され、root でリスナーを開始する必要があるためです。
このルールは前述のルールと同様に機能します。Netlet プロバイダはリンクを表示しませんが、Netlet は指定された 2 つのポート (1111 と 1234) で自動的に起動して待機します。ユーザーはクライアントソフトウェア、この場合は、ホスト example2 に接続するために、ポート 1111 で localhost に接続する Telnet セッションか、ポート 1234 で localhost に接続する Telnet セッションを開始する必要があります。
複数ホストを選択するスタティックルール
このルールは、複数の代替ホストを指定する場合に使用します。ルールの最初のホストへの接続に失敗した場合、Netlet は 2 番目に指定されたホストへの接続を試み、成功するまで指定の順に代替ホストへの接続を試みます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserver:8080
true
10491
siroe+sesta
35+26+491-35+491
ここで
10491 は、Netlet が宛先ホストからの接続要求を待機するクライアント側のポートです。
Netlet はポート 35、ポート 26、ポート 491 の順に使用可能なポートにアクセスし、siroe との接続を確立しようと試みます。
siroe との接続が確立できない場合、Netlet はポート 35、491 の順序で sesta への接続を試みます。
URL を呼び出すダイナミックルール
このルールを使用することで、目的の宛先ホストを設定できるため、Netlet を使用してさまざまなホストへの Telnet 接続を確立できます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
telnet://localhost:30000
false
true
30000
TARGET
23
ここで
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
telnet://localhost:30000 はルールで呼び出される URL です。
false はアプレットがダウンロードされないことを示します。
拡張セッション (true) は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
30000 は、Netlet がこのルールの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーが Netlet プロバイダを使用して宛先ホストを設定する必要があることを示します。
23 は Netlet で開かれる宛先ホストのポートです。この例では、既知の Telnet ポートです。
ルールの追加後に Netlet を実行するには
このルールが追加した後に、ユーザーは Netlet を目的どおりに稼動させるためにいくつかの手順を実行しなければなりません。ユーザーはクライアント側で次の操作を実行する必要があります。
アプレットをダウンロードするダイナミックルール
このルールは、ダイナミックに割り当てられたホストとクライアント間の GO-Joe 接続を定義します。このルールにより、アプレットのあるサーバーからクライアントに GO-Joe アプレットがダウンロードされます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserve:8080
true
3399
TARGET
58
ここで
gojoe はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
/gojoe.html : たとえば、アプレットを含む HTML ページのパスや、ポータルが配備されている Web コンテナのドキュメントルートへの相対パスです。
8000:server:8080 は、クライアントでアプレットを受け取る宛先ポートがポート 8000 であることを示します。gojoeserve はアプレットを送るサーバー名、8080 はアプレットのダウンロード元のサーバー上のポートです。
Extend Session(true) は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
3399 は、Netlet がこのタイプの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーが Netlet プロバイダを使用して宛先ホストを設定する必要があることを示します。
58 は Netlet で開かれる宛先サーバーのポートです。この例では、GoJoe のポートです。ポート 58 は宛先ホストが自分のトラフィックを待機するポートです。Netlet は新しいアプレットの情報をこのポートに渡します。
Netlet ルールの例表 5-3 は、いくつかの一般的なアプリケーションの Netlet ルールの例を示しています。
この表には 7 つの列があります。それぞれ、Netlet ルールのルール名、URL、ダウンロードアプレット、ローカルポート、宛先ホスト、宛先ポートの各フィールドに対応します。最後の列は、ルールの説明を示します。
注
表 5-3 には、Netlet ルールの暗号化方式、およびセッションの延長のフィールドは示されていません。表に示される例で、それぞれが「SSL_RSA_WITH_RC4_128_MD5」および「true」に設定されていることを前提としています。
Netlet ロギングの有効化ゲートウェイサービスで、Netlet 関連アクティビティのロギングを有効にできます。「Netlet ロギングの有効化」を参照してください。このログファイルは、Identity Server 設定属性の「ロギング」セクションにある「ログの場所」属性で指定されたディレクトリに作成されます。
ログファイル名には、次の命名ルールがあります。
srapNetlet_gateway-hostname_gateway-profile-name
Netlet ログには、次の情報が記録されます。
Sun Ray 環境での Netlet の実行Sun Ray 環境のクライアントマシンでアプレットをダウンロードする必要があるアプリケーションを実行するときは、HTML ファイルを変更する必要があります。次に、必要な変更を加えたファイルの例を示します。
新しい HTML ファイル
<!-- @(#)citrix_start.html 2.1 98/08/17 Copyright (c) 1998 i-Planet, Inc., All rights reserved. -->
<html>
<script language="JavaScript">
var KEY_VALUES; // KEY_VALUES['key'] = 'value';
function retrieveKeyValues() {
KEY_VALUES = new Object();
var queryString = '' + this.location;
queryString = unescape(queryString);
queryString = queryString.substring((queryString.indexOf('?')) + 1);
if (queryString.length < 1) {
return false; }
var keypairs = new Object();
var numKP = 0;
while (queryString.indexOf('&') > -1) {
keypairs[numKP] = queryString.substring(0,queryString.indexOf('&'));
queryString = queryString.substring((queryString.indexOf('&')) + 1);
numKP++;
}
// クエリ文字列に最後の keypairs[] データとして残されている内容を格納します。
keypairs[numKP++] = queryString;
var keyName;
var keyValue;
for (var i=0; i < numKP; ++i) {
keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
while (keyValue.indexOf('+') > -1) {
keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
}
keyValue = unescape(keyValue);
// 英数字以外のエスケープを解除します。
KEY_VALUES[keyName] = keyValue;
}
}
function getClientPort(serverPort) {
var keyName = "clientPort['" + serverPort +"']";
return KEY_VALUES[keyName];
}
function generateContent() {
retrieveKeyValues();
var newContent =
"<html>¥n"
+ "<head></head>¥n"
+ "<body>¥n"
+ "<applet code=¥"com.citrix.JICA.class¥" archive=¥"JICAEngN.jar¥" width=800 height=600>¥n"
+ "<param name=¥"cabbase¥" value=¥"JICAEngM.cab¥">¥n"
+ "<param name=¥"address¥" value=¥"localhost¥">¥n"
+ "<param name=ICAPortNumber value="
+ getClientPort('1494')
+ ">¥n"
+ "</applet>¥n"
+ "</body>¥n"
+ "</html>¥n";
document.write(newContent);
}
</script>
<body onLoad="generateContent();">
</body>
</html>
変更前の HTML ファイル
<html>
<body>
<applet code="com.citrix.JICA.class" archive="JICAEngN.jar" width=800 height=600>
<param name="cabbase" value="JICAEngM.cab">
<param name="address" value="localhost">
<param name=ICAPortNumber value=1494>
</applet>
</body></html>