2010년 3월 22일 월요일

DTC 관련 DTCPing 오류코드 분석 및 방화벽 설정을 위한 동적포트영역 제한

아래 블로그를 보시면 DTCPing 로그 분석시 유용하게 사용할 수 있습니다. 참고하시기 바랍니다.
특히 Firewall 에서 포트가 막혀 있는지 확인할 수 있는 방법을 설명합니다.

Problem:fail to invoke remote RPC method
Error(0x6BA) at dtcping.cpp @289
-->RPC pinging exception
-->1722(RPC 서버를 사용할 수 없습니다.)
RPC test failed
Error(0x6D9) at ServerManager.cpp @450
-->RPC reverse BIND failed
-->1753(종점 매퍼에서 사용 가능한 종점이 더 이상 없습니다.)

오류코드 중 1722와 1753의 경우 포트가 막혀 있는 경우로 볼수 있습니다.

기본적인 설명을 하자면
DTC는 RPC Endpoint Mapper를 사용합니다.
기본 RPC서비스의 포트번호는 135번이고 서비스마다 동적으로 새 포트를 생성합니다.
DTCPing 프로그램을 실행하면 프로그램이 동적포트를 하나 생성합니다.
프로그램이 열고 있는 포트를 확인해 볼수 있는 커맨드는 다음과 같습니다.
netstat -anob
연결대상인 서버(PC)에서 이 포트를 telnet 커맨드로 연결해보면 동적포트가 막혀있는지 확인가능합니다.

모두 아시겠지만 동적포트는 기본적으로 제한이 없으나 방화벽등록문제등으로 특정영역으로 제한 가능합니다.
구성요소서비스의 내컴퓨터의 속성중에 기본프로토콜 탭의 연결지향TCP/IP 속성에 동적포트영역을 지정할 수 있습니다.
보통 5000-5020 또는 5000-5200등으로 지정합니다. (재부팅필요)
사용할 포트 수를 몇개로 할것인지는 DTC 사용 서비스가 얼마나 되느냐로 결정해야 하는데
MSDN에서는 보통 20개면 충분하다고도 하고 200개정도로 표시해둔곳도 있습니다.
이쪽사이트에서는 firewall 설정시 포트를 하나씩 지정하기때문에 20개만 했습니다. ^^

문제는 연결 대상 서버에도 똑같이 동적포트설정을 해야되기 때문에 (거기다 부팅까지)
모든 포트에 대해서 열지 않는한 대상 시스템 관리자의 적극적인 협조없이는 어려움이 많다는 것입니다.

http://blogs.msdn.com/distributedservices/archive/2008/11/12/troubleshooting-msdtc-issues-with-the-dtcping-tool.aspx

댓글 없음:

댓글 쓰기