인증서를 사용하여 WAN 링크를 통한 SQL 2008 데이터베이스 미러링

인증서를 사용하여 WAN 링크를 통한 SQL 2008 데이터베이스 미러링

호스트 서버가 도메인 구성원이 아닌 두 SQL 2008 명명된 인스턴스 간의 WAN 링크를 통해 인증용 인증서를 사용하여 데이터베이스 미러링을 구성하고 있습니다. 이 작업을 혼자서 시도한 후 처음부터 시작하여 BOL에 따라 단계별로 진행했습니다.http://technet.microsoft.com/en-us/library/ms191140.aspx, 그러나 해결하려고 했던 문제가 여전히 존재합니다.

문제는 각 서버에서 파트너 상태를 설정하는 최종 단계 집합에 있습니다. "HOST_A"에서 파트너 상태를 설정하기 위해 2단계를 수행하면 다음 오류가 발생합니다.

메시지 1418, 수준 16, 상태 1, 줄 2

서버 네트워크 주소 "TCP://server-b.our-domain.com:5022"에 연결할 수 없거나 존재하지 않습니다. 네트워크 주소 이름을 확인하고 로컬 및 원격 끝점의 포트가 작동하는지 확인하십시오.

그러나 흥미로운 점은 해당 오류가 다시 발생하기 전에 약 15초 동안 두 서버 사이를 오가는 방화벽(TCPDUMP)의 트래픽을 볼 수 있다는 것입니다.

이 시점에서는 SERVER-B의 SSMS에서 SERVER-A\BLUE 인스턴스에 연결할 수 있고 SERVER-A의 SSMS에서 SERVER-B\RED 인스턴스에 문제 없이 연결할 수 있으므로 어떻게 진행해야 할지 잘 모르겠습니다. 이 시점에서 왜 오류가 발생하는지 매우 혼란스럽습니다. 양쪽 끝점은 sys.tcp_endpoints 및 sys.endpoints에서 시작된 것으로 나열됩니다.

또 다른 흥미로운 점은~ 전에2단계를 시도하면 5022를 통해 SERVER-A에서 SERVER-B로, 5022를 통해 SERVER-B에서 SERVER-A로 텔넷을 수행할 수 있지만 2단계가 실패한 후에는 더 이상 어느 방향으로든 텔넷을 수행할 수 없습니다. TCPDUMP는 둘 중 하나로 이동하는 트래픽을 표시하지만 2단계가 실패한 후에는 반환 트래픽이 없습니다.

나에게 가장 큰 문제는 네트워크 주소가 분명히 존재하고 도달할 수 있으며 엔드포인트도 작동 가능하기 때문에(적어도 작업이 실패할 때까지 [Rolleyes]) 이 오류가 실제로 발생하는 모든 것에 대해 잘못된 설명을 갖고 있는 것 같다는 것입니다. 또한 반대 방향으로 구성을 시도했지만(복구 없이 전체 백업/복원 수행 등 다른 방향으로 진행) 동일한 오류를 제공하면서 완전히 동일한 방식으로 실패했지만 다시 모든 트래픽이 방화벽에 표시됩니다.

마지막으로 SQL 로그에 "오류: 1443, 심각도: 16, 상태: 2" 오류도 표시됩니다. 이는 직접적인 관련이 있는 것으로 보이며 온라인에서 찾은 것 중 일부는 Windows 인증에 문제가 있음을 암시합니다. 그러나 내 끝점이 인증서로 구성되어 있으므로 그런 경우는 발생하지 않습니다.

이에 대한 도움을 주시면 대단히 감사하겠습니다.

다음은 이를 설정하는 데 사용된 실제 T-SQL이며 BOL 기사의 내용을 따릅니다.

--ON SERVER-A\BLUE
use master
go

create master key encryption by password = 'password123!'
go

create certificate CA_cert
        With subject = 'CA_cert Certificate'
go

create endpoint Mirroring
        STATE = STARTED
                AS TCP (
                        LISTENER_PORT=5022
                        , LISTENER_IP = ALL
                )
        FOR DATABASE_MIRRORING (
                AUTHENTICATION = CERTIFICATE CA_cert
                , ENCRYPTION = REQUIRED ALGORITHM AES
                , ROLE = ALL
        )
go

BACKUP CERTIFICATE CA_cert TO FILE = 'c:\sql\CA_cert.cer'
go


--ON SERVER-B\RED
use master
go

create master key encryption by password = 'password123!'
go

create certificate NJ_cert
        With subject = 'NJ_cert Certificate'
go

create endpoint Mirroring
        STATE = STARTED
                AS TCP (
                        LISTENER_PORT=5022
                        , LISTENER_IP = ALL
                )
        FOR DATABASE_MIRRORING (
                AUTHENTICATION = CERTIFICATE NJ_cert
                , ENCRYPTION = REQUIRED ALGORITHM AES
                , ROLE = ALL
        )
go

BACKUP CERTIFICATE NJ_cert TO FILE = 'c:\sql\NJ_cert.cer'
go


--ON SERVER-A\BLUE
create login NJ_login WITH PASSWORD = 'password123!'
go

CREATE USER NJ_user FOR LOGIN NJ_login
go

CREATE CERTIFICATE NJ_cert
        AUTHORIZATION NJ_user
        FROM FILE = 'C:\sql\NJ_cert.cer'
go

GRANT CONNECT ON ENDPOINT::Mirroring TO NJ_login
go


--ON SERVER-B\RED
create login CA_login WITH PASSWORD = 'password123!'
go

CREATE USER CA_user FOR LOGIN CA_login
go

CREATE CERTIFICATE CA_cert
        AUTHORIZATION CA_user
        FROM FILE = 'C:\sql\CA_cert.cer'
go

GRANT CONNECT ON ENDPOINT::Mirroring TO CA_login
go


--ON SERVER-B\RED
alter database testdb
        set partner = 'TCP://server-a.our-domain.com:5022'
go


--ON SERVER-A\BLUE
alter database testdb
        set partner = 'TCP://server-b.our-domain.com:5022'
go

-- Everything works fine up until this point at which time I get the previously mentioned errors

답변1

두 인스턴스(감시가 있는 경우 세 개 모두)에 프로파일러를 연결하고 이벤트를 모니터링합니다.데이터베이스 미러링 로그인 이벤트 클래스 감사그리고브로커:연결 이벤트 클래스.

오류 1418은 단순히 특정 시간 초과 내에서 어떤 이유로든 미러링 세션이 실행되지 않았음을 나타냅니다. ALTER DATABASE ... SET PARTNER = 'tcp://..'를 실행하면 주체가 미러에 연결됩니다.그리고이에 대한 응답으로 미러가 주 서버에 연결됩니다. 즉, 이전에 설정된 기본 '파트너' 값과 미러 '파트너' 값이 모두 나타나며 둘 다 정확해야 하며 기본 인프라(라우팅, DNS, IPSEC, 방화벽)가 연결을 허용해야 함을 의미합니다. 원하는 주소로:포트에서둘 다파트너. 증인이 있고 확인해야 하는 TCP 연결의 매우 복잡한 헤어볼이 있는 경우 증인을 추가하세요.

문제가 인증서 보안인 경우 감사 데이터베이스 미러링 로그인 이벤트는 원인과 문제(유효하지 않은 인증서, 만료, 잘못된 인증서 사용 등)를 명확하게 나타냅니다. 문제가 기본 TCP 패브릭(라우팅, DNS, IPSEC, 방화벽 등)인 경우 Broker:Connection 이벤트가 실제로 문제를 표시합니다.

인증서 기반 인증이 어떻게 작동하는지 정확히 이해하려면 다음을 읽어보세요.인증서 기반 인증은 어떻게 작동하나요?.

관련 정보