108bones Technical Notes
108bonesが日々勉強している技術系のメモ。 初心者に優しいサイトを目指します。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MSDTCを特定範囲のポートで使用する:DCOM全般
分散したSQL環境では 分散トランザクションコーディネーター (MSDTC:Microsoft Distributed
Transaction Coordinator)を利用してトランザクションを実現していますが、構造上アプリケーション
サーバとデータベースサーバが分かれている場合、アプリケーションサーバだけをDMZに設定し、
データベースサーバとの間に ファイアウォール が設置されます。

しかし MSDTC をはじめとした DCOM (Distributed Component Object Model)では動的ポートが
採用されているため、 ファイアウォール で1024番以上のポートを閉じれません。そこでポートを
特定の範囲に限定する方法がMSのページで紹介されているので検証します。

元ネタはこちら→「Using Distributed COM with Firewalls」

早速手順ですが、レジストリを編集するため十分に注意してください。当然無保証。

1. レジストリエディタを開く。
2. HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc を開く。
3. Internetキーを追加する。
4. 以下のように文字列値などを追加する。
rpc_1.gif

画面の通りに設定すると DCOM 系のものは5000~5020番を利用します。
パラメータの説明は以下の通り。

Ports
ポートと範囲を1行につき1つずつ入力します。
例)5000~5020と10000を利用したい場合
5000-5020
10000
PortsInternetAvailable
設定の有効無効を決めます。この設定を使用する場合は Y にします。
UseInternetPorts
Y だとPortsで指定した範囲を DCOM アプリで使います。N だとそれ以外を使います。

5. マシンを再起動すると設定が有効になります。

これで ファイアウォール の設定が行えるようになりました。
最後に一点注意ですが、決めたポート番号以外に 135番 ポートは必ず空けてください。
DCOM クライアントはまずこのポートに DCOM アプリのポートを確認しにいき、その後取得した
ポート番号へ接続に行きます。また DCOM の動作で注意すべき点としては、他のTCP/IP通信と
異なり、 DCOM アプリでは応答時に別のセッションを利用します。つまりクライアント側でも同じく
ファイアウォール でポートを塞ぐ必要がある場合、同じ設定をクライアント側にも行ってください。
※ポート番号は自由です。ポリシーのもと決めることになるかな。

Windows XP のSP2を利用している場合は ファイアウォール が利用できるので、検証できます。
サーバ側だけ設定をして、クライアント側で ファイアウォール を有効にしているとエラーになる
ので一度試してください。

以下の記事も参考になると思います。
「SQL Server 2000 でエラー メッセージ 7391 が表示される」

はじめの英語のサイトには DCOM の動作も含めて解説していますのお勧めです。
スポンサーサイト

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://108bones.blog71.fc2.com/tb.php/31-1daaa070
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。