2012-03-14 4 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이 적용됩니다. 이것은, (A 경우, SQL Server 브라우저의 UDP 응답 패킷이 클라이언트를 다시 도달 할 수 경우 ) 클라이언트가 SQL Server 브라우저 서비스와 상호 작용 할 수 있어야 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가 앞으로 포트입니다. 그런 다음 클라이언트가이 포트를 연결 문자열에 명시 적으로 사용하십시오. 1433은 표준 포트를 사용하지 않습니다. 왜냐하면 NAT보다 먼저 공용 인터넷이 있고 1433이 모든 종류의 봇과 사악한 클러스터에서 일정하고 빈번한 검색을받는다고 가정하기 때문입니다.

+1

+1 및 1433은 * 기본 * 인스턴스 (인스턴스 이름 없음)에 사용되므로 천천히 사라지고 Microsoft는 보안상의 이유로 기본 인스턴스를 절대 사용하지 않을 것을 권장합니다. 따라서 명명 된 인스턴스가있을 때마다 1433은 절대로 관련이 없습니다. –

3

SQL Server 구성 관리자를 사용하여 고정 된 포트에서 실행되도록 명명 된 인스턴스를 구성합니다. 구성 관리자에서 SQL Server Network Configuration -> Protocols for <named instance> -> TCP/IP -> Properties.

enter image description here

그런 다음 연결 문자열에 명명 된 인스턴스의 호스트 이름과 포트를 제공합니다. 호스트 이름 및 포트 번호는 (가정 호스트 이름이 Test하고 듣고 포트 1492입니다) 다음과 같은 형식으로 지정됩니다

포트 번호 번역 인스턴스는 포트 1434/UDP에서 수신 대기하는 SQL 브라우저 서비스에 의해 수행

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