2008-07-04

SonicWall Global VPN Client のインストールが失敗したり、クラッシュしてしまうときのちょっとした改善案

 SonicWall には仮想プライベートネットワーク機能(VPN: Virtual Private Network, 以降 VPN)が搭載されているので、SonicWall を購入して VPN ライセンスを購入することによって、VPN 公開ができるようになります。
 この SonicWall VPN にアクセスするためには、クライアントとなるコンピュータに SonicWall Global VPN Client (以降 SWGVC)をインストールと接続設定を行う必要があります。

 インストーラを実行して指示に従えば終わりというパターンが通常で、アプリケーションを使うほとんどのユーザがそのような感覚でインストーラを実行していると思います。
 しかし、最近の FileMaker Server 9 のインストールトラブルのように、物によってはスムーズにインストールできないものもあるので、すぐできて当然という安易な姿勢で臨むと泣きを見る羽目になることもあったりします。

 SWGVC もなかなか癖のあるソフトウェアと言え、マシン環境によってはすんなりインストールできたり、インストール初っ端から躓いたり、設定の段階で躓いたりと結構トラブルに見舞われため、ここでその経験談をまとめてみることにします。

  1. 最初のインストールで躓くとき
     SWGVC をインストールした直後に起動しようとすると、SWGVC のレジストリ登録に失敗したというメッセージが出て失敗することがあります。こうなると、起動は絶対にできないので、一度 SWGVC をアンインストールし、さらにレジストリ情報を消去するプログラム SWVPNClientClean.exe を実行してから完全にインストール情報を消去した上で、SWGVC を再インストールする必要があります。

  2. SonicWall にアクセスできないとき
     ピア IP アドレス(SonicWall の IP アドレス)を正しく設定し、接続ユーザ名とパスワードを正しく指定したにもかかわらず、ステータスが接続中だったり、IP アドレス取得中のままになってしまうことがあります。ログを見ると、"The peer is not responding to phase 1 ISAKMP requests." が残っていることがあります。
     この場合は、SWGVC の Peers タブより、LAN Settings にクライアントネットワーク側のルータ IP アドレスを入力したり、NAT Traversal を 「Disabled」、Interface Selection を「LAN Only」に変更することによって改善することがあります。
    SWGVC
    参考リンク:
    SonicWall VPN Client Doesn't Work Behind NAT Firewall(英文)
    Sonicwall - The peer is not responding to phase 1 ISAKMP requests(英文)
    NAT Firewall on router blocking sonicwall VPN?(英文)
    NAT Firewall on router blocking sonicwall VPN...(英文)

  3. 接続が確立された直後に SWGVC がクラッシュするとき
     これが一番厄介だと思います。今のところ Windows XP Service Pack 2 で発生する可能性が高いことは経験からわかってきたのですが、すべての同様の環境で発生するとも言い切れず、このような現象が発生するコンピュータでは、SWGVC のインストール、アンインストールを繰り返したところで症状が改善することはまずないでしょう。
     しかし先日、客先でどうしてもこのような現象が発生する SWGVC を動かす必要があり、苦し紛れですが Windows 互換モードで実行することにより事なきを得ました。以下、方法を簡単に説明します。
     1) 今までどおり SWGVC を実行させてVPN 接続を行い、Connected が出た直後に SWGVC がクラッシュすることを確認します。
     2) SWGVC のプログラムアイコンを右クリックして「プロパティ」を選択し、表示されるダイアログより「互換性」タブをクリックします。そこで「互換モードで実行する」にチェックを付けて、以前の OS のリストの中からできるだけ最新のものを選択して実行してみます。
    Windows 互換モード
     この方法で、今のところ Windows 98/Windows ME の互換モードで実行に成功しています。今までいろいろ試してみたが、クラッシュしてどうにもならないという方はダメ元で試してみる価値はあると思います。

【応用その2】FX.php を使ったアンケートフォーム作成 --- 従来のファイルメーカー Pro データベースで Web アプリケーション作成

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。
 
 さて前回の FX.php 解説に引き続き、今回は FX.php を使って従来の FileMaker データベースにアクセスする方法について触れてみることにします。今回もまた、今まで使ってきたアンケートフォームにちょっと修正を入れるだけです。アンケートフォーム作成のおさらいが必要な方は、こちらを先にご覧ください。

 FileMaker API for PHP を利用するためには、FileMaker Pro 9 と FileMaker Server 9 がインストールされていることが条件となるため、従来に比べるとコスト的に敷居が高くなってきています。安定したデータサーバ運用を目指すのなら、もちろんこれらを導入するのが確実ですが、FileMaker Pro 5.x/6 で機能的に十分に満足している方には、ちょっと手が出にくいパッケージであることも確かでしょう。

 そこで、FX.php と FileMaker Pro 5.x/6 の Web コンパニオンプラグインを組み合わせてもデータベースへの書き込みを実現できるため、既存のシステムをそのまま Web 公開データベースとして活かすことも可能となります。
 ただし、通常版は 10 アクセスユーザ数(10 IP アドレス)という制限が伴うため、現実的な運用にあたっては FileMaker Pro 5.x/6 Unlimited が必要になることは注記しておきたいと思います。

 それでは実際に既存のサンプルコードを修正していくことにしましょう。
 処理は前回の FX.php 接続とほぼ同じですが、今回はそれに加え、文字コードの変換が必要となります。
 FileMaker Pro 9 では内部コードを UTF-8 で処理しているため、ソースが UTF-8 で記述されていれば問題はなかったのですが、FileMaker Pro 5.x/6 では内部コードを Shift-JIS で扱うため、このままデータを送るとエラーが起こったり、文字化けが発生してしまいます。

 そこで、今までの処理に文字コード処理を追加します。

  1. FX を使用することを宣言する(FX インスタンスを作成する)。

  2. 使用するデータベース名とレイアウト名を指定する。

  3. 使用するユーザ名とパスワードを指定する。

  4. データ送信時の文字コードを Shift-JIS に変換する。

  5. 追加するフィールドと、そのデータを指定する。

  6. レコード追加を実行する。



 上記を FX.php の記述規則に従って置き換えると、次のようになります。

 赤線を引いた部分と、赤で囲った部分が前回と異なってはいますが、その他はすべて同じです。
 指定の通り、FX インスタンス作成時に、使用するデータソース(データベース)が FileMaker Pro5.x/6 であることを知らせます。
 そして、データ送信前に文字コードセットを UTF-8 から Shift-JIS(SJIS) に置き換えます。

 ただし、FMP7/8/8.5/9 に対してこの文字コード変換を行うとデータ書き込みに失敗してしまうため、必要に応じて、データソースが FMPro5/6 のときだけ文字コード変換を行うという条件を追加する必要があります。
 この条件を追加するとこのようになります。

 変数 $databaseType には、コードの最初の方で予め "FMPro9" もしくは "FMPro5/6" のいずれかを設定しておきます。こうしておくことによって、使用するデータソースに応じて処理を切り替えられるので便利です。
 ソースの詳細は、サンプルコードをご覧になってみてください。

 先に PHP ソースについて解説しましたが、最後に FileMaker Pro 5.x/6 データベースファイルの作成と設定方法について説明します。

1. データベースファイルを作成します。FileMaker Pro 5.x/6 を起動し、Comment.fp5 というファイルを作成し、以下のフィールドを作成します。

 [RecID]、[作成日]、[作成アカウント]、[修正日]、[修正アカウント]は管理用のフィールドですが、作成しておくと便利でしょう。

2. レイアウト名を cgi に変更します。
3. 「アプリケーション環境設定」ダイアログを出し、プラグイン一覧より、Web コンパニオンにチェックを付けて「設定」ダイアログを開きます。

 セキュリティに「ファイルメーカー Pro アクセス権」を指定し、TCP/IP ポート番号に 80、もしくは 591 を指定します。

4. ファイルの共有設定で、以下のようにチェックを付けることによって Web コンパニオンを公開します。


5. パスワードを指定します。図のように、web というパスワードを作成し、web で公開させる最低限のアクセス権を決めます。

 この他にフルアクセスを許可するパスワードが必要となりますので、ここでは Admin を作成してあります。

 以上で準備が整いました。
 FMPro5/6 用の設定を施した comment_fp5.php というファイルをサンプルに用意してありますので、参照してみてください。

参考: FX.php vs FileMaker API Benchmarks Discussion(英文)

2008-07-03

【応用その1】FX.php を使ったアンケートフォーム作成

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FX.php の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ


 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。

 さて、前回まで 4 回にわたって FileMaker API for PHP によるアンケートフォームの作成方法を解説してきましたが、今回はさらに FX.php による FileMaker データベースアクセス機能も実装してみることにします。

 FX.phpiViking.org によって無償で提供されている FileMaker アクセスクラス群で、FileMaker Pro 5~ 9 に幅広く対応しているため、FileMaker API for PHP が実現できない環境のユーザでも FX.php を使うことによって php からのアクセスが可能となります。

 インストール方法も簡単で、ダウンロードして解凍した FX フォルダを Web サーバの適当な場所に配置するだけです。

 それでは実際にやってみましょう。
 Comment.fp7 を開き、「アカウントとアクセス権の管理」ダイアログを出し、そこからすでに登録済の Webuser を選択して「アクセス権セット...」を選択して以下のダイアログを開きます。

 FX.php は xml によるデータアクセスを行いますので、反転部分のように、「XML Web 公開でのアクセス- FMS のみ(fmxml)」にチェックを付けて保存します。

 これで FileMaker の FX.php 向け Web 公開の準備が整いました。

 さて、次は FX.php 向けのコードを追加していきます。
 まずは、コードの最初の方で FX.php をロードします。今ある Comment.php から FX.php が辿れるように設定してください。

 require_once '../../FX/FX.php';

 そしていつものように、日本語で手順を考えてみます。

  1. FX を使用することを宣言する(FX インスタンスを作成する)。

  2. 使用するデータベース名とレイアウト名を指定する。

  3. 使用するユーザ名とパスワードを指定する。

  4. 追加するフィールドと、そのデータを指定する。

  5. レコード追加を実行する。

 
 こうして見てみると、前回のデータベース書込手順とほとんど変わらないことがわかりますね。
 あとは上記の内容を FX.php 向けに書き換えていくだけです。

 一行目のデータベース接続にサーバ名、ポート番号、データソース名(FMpro9)を明示的に指定する必要がありますが、その他メソッド名に差異はあるものの、前回の FileMaker API for PHP のコードとさほど形式が変わらないことがおわかりいただけるでしょう。

 サンプルコードの方に FX.php と FileMaker API for PHP の切り替え操作も盛り込んでありますので、併せて確認してみてください。


※サンプルコード
サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)