機械制御/振動騒音
IR情報 会社情報

PERFORCEテクニカルノート022

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート022  
image_toyo_ss_img_all_line_yellow.gif.gif
image_toyo_common_spacer.gif.gif
ファイアウォール経由で PERFORCE にアクセスする方法
image_toyo_common_spacer.gif.gif
PERFORCE クライアントは、TCP/IP を使用して PERFORCE サーバと通信します。 PERFORCE サーバはそれが稼動しているマシン上の特定のポートで接続を待機し、クライアントはそのポートに接続します。
image_toyo_common_spacer.gif.gif
サーバが接続を待機するポート番号は、起動時に指定されます。この例では、ポート番号を 3710とします。ポート番号は任意ですが、他のネットワーク・サービスと衝突しないように選択しなければなりません。クライアント・マシン上で使用されるポート番号は、動的に割り当てられます。
image_toyo_common_spacer.gif.gif
image_toyo_ss_perforce_clip_note022-fig1.gif.gif
image_toyo_common_spacer.gif.gif
ファイアウォールとはネットワークの構成要素であり、信頼されたローカル・ネットワークの外部からのパケットがローカル・ネットワークに到達できないよう にしています。これは、低レベルのネットワーク・プロトコルで行われます。具体的には、信頼済みの IPアドレス以外から到達しているパケットはすべて、単に無視されます。
image_toyo_common_spacer.gif.gif
このときクライアントは信頼されていないネットワーク部分から到達しているため、サーバに接続することができず、どの接続要求もサーバが稼動中のマシンに到達しません。
image_toyo_common_spacer.gif.gif
image_toyo_ss_perforce_clip_note022-fig2.gif.gif
image_toyo_common_spacer.gif.gif
唯一の解決策は、何らかの方法で信頼済みのネットワークから PERFORCEサーバへの接続を確立することです。これは、セキュア・シェル(SSH)と呼ばれるパッケージを使用して安全に実現することができます。多くのセキュア・ シェル実装が存在しています。(ただし PERFORCE と共に、または PERFORCE 社からは配布されていません。)
image_toyo_common_spacer.gif.gif
SSH はrsh(リモート・シェル)に代わるものであり、これによりリモート・システムにログインし、そこからコマンドを実行することができます。優れた点とし て、接続が暗号化されているため、データのどの部分も「Big, Bad, Untrusted Network」からは見えません。rshなどの単純なユーティリティでは、パスワードでさえ入力時には可視になっています。SSH の場合は不可視です。
image_toyo_common_spacer.gif.gif
そこで解決策の 1 つとして、SSH を使用してファイアウォール・マシンにログインし、そこから PERFORCEクライアントを実行することが考えられます。ただし、それは最適な解決策ではありません。クライアント・ファイルは通常、ローカル・マシンにあることが望まれるからです。
image_toyo_common_spacer.gif.gif
image_toyo_ss_perforce_clip_note022-fig3.gif.gif
image_toyo_common_spacer.gif.gif
最適な解決策は、SSH の機能を利用して任意の TCP/IP 接続を転送することです。PERFORCEクライアントを信頼済みのローカル・ネットワーク上のファイアウォール・マシンから接続しているように見せることができます。ファイアウォール・マシンと クライアント稼動マシンとのリンクは、SSH によって設定されたセキュア・チャネルを経由します。
image_toyo_common_spacer.gif.gif
この例では、PERFORCE サーバが perforce.bigcompany.com というマシン上にあり、ファイアウォール・マシンがgatekeeper.bigcompany.com であることにします。さらに、ローカル・ポートを 4242(任意の値)とし、PERFORCE サーバがポート 3710 で待機することにします。このときTCP/IP 接続を転送するための SSH起動コマンドは以下のとおりです。
image_toyo_common_spacer.gif.gif
ssh -L 4242:perforce.bigcompany.com:3710 gatekeeper.bigcompany.com

image_toyo_common_spacer.gif.gif
ここで、gatekeeper.bigcompany.com にログインするためにパスワードを入力する必要があるかもしれません。 接続が確立されると、SSH はローカル・マシン上のポート 4242 で待機し、そのポートで受信した内容をgatekeeper.bigcompany.com への接続に転送し、その後「通常のチャネル」によってperforce.bigcompany.com のポート 3710 に転送します。
image_toyo_common_spacer.gif.gif
ここで必要なことは、環境変数 P4PORT を 4242 に設定して、PERFORCE クライアントにポート 4242を使用するよう指示することです。このようにすると通常は、ポート 4242で待機しているマシンで稼動中のサーバに接続を試みることになりますが、この場合はそのポートで待機している PERFORCEサーバではなく、SSHに接続します。これはクライアントには透過的ですが、このポートを通して送信されるすべての内容は、perforce.bigcompany.comの実際の PERFORCE サーバに透過的に転送されます。
image_toyo_common_spacer.gif.gif
もう1つの問題は、不要なログイン・セッションがあることです。これは次のコマンドを実行することで解決できます。
image_toyo_common_spacer.gif.gif
ssh -n -L 4242:perforce.bigcompany.com:3710 gatekeeper.bigcompany.com sleep 9999999 &

image_toyo_common_spacer.gif.gif
ここで、SSH はリモート・システム上で sleepコマンドを実行するよう指示されています。これにより長期間にわたって、強制終了されないようにすることができます。-n オプションは stdinからの読み取りを抑止し、&はバックグラウンドで処理するよう指示します。結果として、このコマンドの実行後にリンクが設定され、強制終了されるログイン・セッションがなくなりま す。
image_toyo_common_spacer.gif.gif
SSH が目的の処理を行うように構成すれば、長いコマンドを毎回入力しなくて済みます。SSH の Windows バージョンには、SSH の構成用のグラフィカル・ユーザ・インターフェースがあります。
image_toyo_common_spacer.gif.gif
最後の懸念事項:これでローカル・マシン上のポート 4242が安全と思われるサーバに送信するようになりましたが、ローカル・マシンの安全性を確実にすることが賢明です。SSHクライアント・ドキュメンテーションを調べ、ローカル接続のみを受け入れるようになっているかどうか診断してください。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP