INF: Porty TCP wymagane do komunikacji z programem SQL Server przez zaporę

Numer ID artykułu: 287932 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Streszczenie

W tym artykule opisano minimalne porty TCP/IP, które są wymagane do komunikacji z programem SQL Server przez zaporę.

Więcej informacji

Program SQL Server to aplikacja interfejsu Winsock, która komunikuje się za pomocą protokołu TCP/IP, używając biblioteki sieciowej gniazd. Program SQL Server nasłuchuje połączeń przychodzących na określonym porcie; port domyślny programu SQL Server to 1433. Ten port nie musi być portem 1433, ale port 1433 to oficjalny numer gniazda programu SQL Server wyznaczony przez organizację IANA (Internet Assigned Number Authority).

Aplikacja kliencka komunikuje się z programem SQL Server za pomocą biblioteki sieciowej po stronie klienta Dbmssocn.dll (lub Dbnetlib.dll dla programu SQL Server 2000) i dowolnego klienta używającego programu Microsoft Data Access Components (MDAC) 2.6.

Gdy klient ustanawia połączenie TCP/IP, jest wykonywane trójstopniowe uzgadnianie. Klient otwiera port źródłowy i wysyła ruch do portu docelowego, którym domyślnie jest port 1433. Numer portu źródłowego klienta jest wartością losową większą niż 1024. Domyślnie, gdy aplikacja zażąda od systemu gniazda do obsługi połączenia wychodzącego, jest dostarczany port z zakresu od 1024 do 5000. Aby uzyskać więcej informacji, zobacz sekcję Microsoft Windows 2000 TCP/IP Implementation Details w następującej witrynie firmy Microsoft w sieci Web:
http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx
Następnie serwer (w tym przypadku program SQL Server) komunikuje się z klientem, wysyłając ruch z portu 1433 do portu ustanowionego przez klienta.

Najlepszą metodą obserwacji tego zachowania jest śledzenie komunikacji między klientem a serwerem przy użyciu programu Microsoft Network Monitor lub szperacza sieciowego. Aby skonfigurować zaporę, należy zezwolić na ruch z portu *DOWOLNY* do portu 1433 i z portu 1433 do portu *DOWOLNY*, gdzie port *DOWOLNY* to port o numerze większym niż 1024.
*DOWOLNY* -> 1433
1433 -> *DOWOLNY*
Oprócz korzystania z programu Microsoft Network Monitor można też użyć narzędzia Netstat protokołu TPC/IP, aby obserwować to zachowanie. Wpisanie polecenia netstat -an w oknie polecenia systemu MS-DOS spowoduje wygenerowanie następujących wyników pokazujących trzy ustanowione połączenia z programem SQL Server. W tym przykładzie adres 157.54.178.42 jest adresem IP serwera programu SQL Server, a adres 157.54.178.31 jest adresem IP klienta. Porty otwarte przez klienta to odpowiednio 1746, 1748 i 1750.
Protokół  Adres lokalny          Obcy adres             Stan
 TCP      157.54.178.42:1433     0.0.0.0:0              NASŁUCHIWANIE
 TCP      157.54.178.42:1433     157.54.178.31:1746     NAWIĄZANE
 TCP      157.54.178.42:1433     157.54.178.31:1748     NAWIĄZANE
 TCP      157.54.178.42:1433     157.54.178.31:1750     NAWIĄZANE
					
Oprogramowanie zapory powinno zezwalać na tę dynamiczną alokację, używając odpowiednich reguł. Jeśli tak jest, można skonfigurować ustanowione połączenie 1433 -> *DOWOLNY*; umożliwi to dynamiczne otwieranie portu odpowiedzi po odebraniu sygnału synchronizacji i sygnału synchronizacji/potwierdzenia w ramach stanowej inspekcji pakietów.

Nie istnieje metoda ograniczenia liczby portów źródłowych TCP używanych przez klienta programu SQL Server w celu nawiązywania połączenia; taka metoda mogłaby uniemożliwić klientowi przydzielenie nowego, nieużywanego portu dynamicznego. Jest to standard protokołu TCP/IP zdefiniowany dla aplikacji interfejsu Winsocks; nie jest to ograniczenie komunikacji klienta programu SQL Server.

Ponadto nazwane wystąpienie programu SQL Server 2000 będzie domyślnie używać dynamicznego portu docelowego. Ten port należy zmienić na port stały przed skonfigurowaniem zapory. Aby skonfigurować port docelowy, należy użyć narzędzia SQL Server Network Utility. Zobacz witrynę SQL Server Books Online, aby uzyskać informacje dotyczące sposobu używania narzędzia SQL Server Network Utility.

W przeciwnym razie komputer kliencki będzie musiał otworzyć losowy port UDP, a port UDP 1434 serwera będzie używany do wysłania nazwy wystąpienia, a jeśli wystąpienie będzie należeć do klastra, wersji wystąpienia programu SQL Server, numeru portu, na którym nasłuchuje to wystąpienie, oraz potoku nazwanego, którego używa to wystąpienie. Jeśli jednak celem jest minimalizacja liczby otwartych portów zapory, należy wybrać statyczny numer portu dla wystąpienia domyślnego i wszystkich wystąpień nazwanych. Komputery klienckie należy skonfigurować do łączenia się z określonym serwerem lub wystąpieniem serwera oraz określonym numerem portu.

Aby uzyskać dodatkowe informacje, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
216415 HOW TO: Set Up SQL Server with Proxy Server
148942 Jak przechwytywać ruch w sieci za pomocą Monitora sieci
169292 Podstawy czytania plików śledzenia protokołu TCP/IP
269882 HOWTO: Use ADO to Connect to SQL Server That Is Behind a Firewall

Właściwości

Numer ID artykułu: 287932 - Ostatnia weryfikacja: 17 maja 2011 - Weryfikacja: 6.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Słowa kluczowe: 
kbsqlmanagementtools kbinfo KB287932

Przekaż opinię