2012-03-14 32 views
5

Tôi đang cố gắng truy cập vào Máy chủ SQL được hiển thị thông qua ánh xạ IP NAT. Tất cả các cổng đều mở. Tôi không biết chi tiết của NAT, nếu nó có liên quan, vì đó là một nơi khác trong công ty ẩn trong một đống băng đỏ.Truy cập SQL Server Instance qua NAT

Đây là những gì tôi đã tìm ra. Khi bạn cố gắng truy cập vào một cá thể có tên của SQL Server, máy khách sẽ hỏi cổng nào mà cá thể có tên đang chạy trên đó. Nếu tôi RDP vào SQL Server tôi có thể sử dụng netstat để tìm ra cổng của trường hợp đó và có thể kết nối thành công thông qua tường lửa. Tuy nhiên, việc kết nối thông qua tên cá thể không hoạt động. Tôi đoán là máy chủ đang phản hồi tại một số điểm với địa chỉ IP nội bộ của nó và máy khách đang sử dụng nó.

Có ai biết nếu điều này là đúng và có cách nào không?

+1

Instance để số cổng dịch được thực hiện bằng dịch vụ trình duyệt SQL được lắng nghe trên cổng 1434/UDP . Kiểm tra xem NAT của bạn (ở chế độ DMZ) có đang xuất bản tất cả các cổng udp không. – wqw

+0

Trong môi trường của tôi, nó đã giúp tắt tường lửa Windows trên máy chủ SQL Server. – scar80

Trả lời

6

Khám phá giao thức cổng nghe thể hiện tuân theo SQL Server Browser Service. Điều này sử dụng UDP trên 1434. Với NAT chuyển tiếp UDP 1434, máy khách của bạn có thể tương tác với Dịch vụ trình duyệt SQL Server (nếu gói phản hồi UDP của trình duyệt SQL Server có thể quay lại máy khách, lớn nếu), nhưng ngay cả một sự tương tác thành công sẽ đưa khách hàng của bạn vào một vị trí chật hẹp: bây giờ nó biết cổng lắng nghe động SQL Server, làm thế nào nó tiếp cận nó? NAT sẽ phải tự động chuyển tiếp cổng được chọn bởi SQL Server, hoặc nó sẽ phải chuyển tiếp tất cả các cổng.

Những gì tôi khuyên bạn nên có SQL Server của bạn lắng nghe trên một cấu hình, tĩnh được giao, cổng. Xem How to configure an instance of SQL Server to listen on a specific TCP port or dynamic port. Để NAT của bạn chuyển tiếp có cổng. Sau đó, trong máy khách của bạn sử dụng cổng này một cách rõ ràng trong chuỗi kết nối. Không sử dụng 1433, cổng tiêu chuẩn, vì tôi giả định rằng trước NAT là internet công cộng và 1433 có thể quét liên tục và thường xuyên từ tất cả các loại bot và cụm mật vụ.

+1

+1 và 1433 đang dần biến mất vì nó được sử dụng cho một trường hợp * mặc định * (không có tên dụ) và Microsoft rất khuyên bạn không nên sử dụng một phiên bản mặc định (vì lý do bảo mật). Vì vậy, bất cứ khi nào bạn có một trường hợp được đặt tên, 1433 sẽ không bao giờ có liên quan. –

3

Định cấu hình cá thể được đặt tên để chạy trên một cổng tĩnh bằng Trình quản lý cấu hình SQL Server. Trong trình quản lý cấu hình, SQL Server Network Configuration -> Protocols for <named instance> -> TCP/IP -> Properties.

enter image description here

Sau đó cung cấp tên máy và cổng cho các trường hợp có tên trong chuỗi kết nối. Tên máy và số cổng được quy định trong các định dạng sau (giả sử hostname là Test và lắng nghe cổng là 1492):

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