2012-11-28 9 views
4

오늘 우리는 WCF의 NetTcpBinding을 사용하여 시스템의 동료들과 통신합니다. 통신은 양방향입니다. 각 피어에는 다른 피어에 대해 열린 채널이 있습니다.외부에서 관리되는 TCP 소켓을 통한 WCF 사용

우리는 이제 아키텍처를 확장하고 두 가지 "유형"의 피어를 소개합니다. 공용 "피어"는 공용 인터넷을 통해 액세스 할 수 있지만 "내부"피어는 NAT를 지원합니다. 이것의 영향은 내부 피어가 공개 피어에 대한 TCP 연결을 설정할 수 있지만 반대로 불가능합니다. 따라서 공개 된 동료는 더 이상 내부 동료와의 연결을 설정할 수 없습니다.

TCP 연결이 대칭 (일단 설정 됨) 되었기 때문에 내부 피어가 공개 피어에 대해 필요한 모든 TCP 소켓을 설정 한 다음 공개 피어가 이러한 소켓 중 일부를 사용하여 내부 용 채널을 설정하도록해야했습니다 같은 패. 그러나 NetTcpBinding을 사용할 때 WCF는 나를 위해 TCP 소켓을 관리합니다.

이 동작을 구현하기 위해 새 전송을 작성해야합니까, 아니면 다른 방법이 있습니까?

+0

들어오는 외부 연결이 내부 네트워크에 도달 할 수 있도록 방화벽을 통해 적절한 포트를 전달할 수도 있습니다. 외부 피어가 NAT 뒤에 있지 않다는 것을 보장 할 수는 없으므로 양쪽에서 연결을 시작하면 같은 문제가 발생합니다. 포트를 방화벽을 통해 다시 전달하지만 클라이언트 측에서 다시 해결할 수 있습니다. 각 클라이언트. – CodeCaster

+0

@CodeCaster NAT에서 포트 전달을 사용할 수 있다는 것은 맞지만 "내부"쪽에 더 많은 구성이 필요합니다. 두 가지 유형의 피어는 두 가지 매우 다른 유형의 고객이 사용합니다. "내부"유형의 경우 최대한 구성을 조금 변경하는 것을 선호합니다. – telewin

답변

0

SSH 전달을 살펴보십시오.

+0

흥미 롭지 만 "이 특정 방법은 나가는 TCP 연결에 대해서만 작동합니다"라고 말합니다 - 나는 또한 소위 "내부"피어로 들어오는 연결을 허용해야하며 이전 주석에서 언급 한 것처럼 " 내부 "피어는 고객이 사용하기 때문에 가능한 적은 설정 만 필요합니다. 특히 방화벽/NAT 포트를 열 필요가 없습니다. – telewin