2012-03-14 39 views
5

IP NATマッピングで公開されているSQL Serverにアクセスしようとしています。すべてのポートが開いています。 NATの詳細が分からないのは、それが関連していれば、それは会社のどこかにある赤いテープで覆われているからです。NAT経由でSQL Serverインスタンスにアクセスする

ここで私が理解したことがあります。 SQL Serverの名前付きインスタンスにアクセスしようとすると、クライアントは名前付きインスタンスが実行されているポートを確認します。 SQL ServerにRDPをインストールすると、netstatを使用してそのインスタンスのポートを調べ、ファイアウォールを介して正常に接続できます。ただし、インスタンス名による接続は機能しません。私の推測では、サーバはある時点で内部IPアドレスで応答しており、クライアントはそれを使用しています。

これが本当かどうか、周囲に道があるかどうかは誰にも分かりますか?

+1

。 NAT(DMZモード)がすべてのudpポートを公開しているかどうかを確認してください。 – wqw

+0

私の環境では、SQL Serverマシン上でWindowsファイアウォールを無効にするのに役立ちました。 – scar80

答えて

6

インスタンスリスニングポートプロトコルの検出には、SQL Server Browser Serviceが適用されます。これは、(大きな場合、SQL ServerブラウザのUDP応答パケットがクライアントをバックに到達することができ場合)あなたのクライアントは、SQL Server Browserサービスと対話することができるはずUDP 1434のNAT転送では1434にUDPを使用しています成功した対話であっても、お客様のクライアントは窮地に陥ります。は、のSQL Serverダイナミックリスンポートを知っています。どのように到達しますか? NATは、SQL Serverによって選択されたポートを動的に転送する必要があります。または、すべてポートを転送する必要があります。

SQL Serverが構成済みの静的に割り当てられたポートでリッスンすることをお勧めします。 How to configure an instance of SQL Server to listen on a specific TCP port or dynamic portを参照してください。あなたのNATを転送ポートを持ってください。クライアントでは、このポートを接続文字列で明示的に使用します。 NATの前には公衆インターネットがあり、1433はあらゆる種類のボットや悪質なクラスターから頻繁にスキャンされていると仮定しているので、標準ポートである1433は使用しないでください。

+1

+1と1433は、* default *インスタンス(インスタンス名なし)に使用されているためゆっくりと消え去り、Microsoftはセキュリティ上の理由からデフォルトインスタンスを使用しないことを強く推奨しています。したがって、名前付きインスタンスがあるときはいつでも、1433は決して適切ではありません。 –

3

SQL Server Configuration Managerを使用して、静的ポートで実行するように名前付きインスタンスを構成します。構成マネージャーでSQL Server Network Configuration -> Protocols for <named instance> -> TCP/IP -> Properties

enter image description here

そして、接続文字列で指定されたインスタンスのホスト名とポートを提供します。ホスト名とポート番号は、(仮定hostnameはTestあるとリスンポートが1492である)次の形式で指定されています

ポート番号への変換インスタンスはポート1434/UDPをリッスンしているSQL Browserサービスによって行われ

... Server='Test,1492'; ...

関連する問題