NAT

2014-06-20 5 views
1

뒤에 WCF 서비스에 액세스하는 방법 여기 내 상황 : 나는 TCP는 NAT 뒤에 서비스 바인딩으로 WCF을 가지고 있고 나는 그것을 도달 할 수 없습니다입니다NAT

  • .

  • BasicHttpBinding 및 Raw TCP 소켓을 사용하여 서비스에 연결할 수 있습니다.

  • 서버 측 포트 포워딩이 완료되었습니다.

어떤 결과가 발생할 수 있습니까?

내 네트워크 토폴로지 : Picture Link

enter image description here

+0

일부 방화벽 규칙을 추가해야하는 것처럼 들립니다. 주소 변환을 담당하는 라우터. – Tsukasa

+0

서버와 동일한 네트워크에있는 클라이언트의 net tcp를 통해 연결할 수 있습니까? 방정식에서 방화벽/포트 포워드/etc 문제를 제거하기 위해 먼저 이것을 테스트 할 것입니다. –

+0

CORS에 대해 이미 생각해 봤어? 다른 IP 주소를 사용하고 있습니다. 내가 rodolk에 대한 의견을 읽을 때 그것은 CORS 문제가되어야합니다. 'CONNECTION REFUSED'오류 또는 유사한 오류 메시지가 표시됩니까? – GuyT

답변

2

나는 WCF 및 nettcpbinding 경험 아니에요하지만이 도움이 될 수.

서비스에 로컬 IP 주소 (연결되어있는 LAN에 해당)가 있고 공용 IP 주소가 없기 때문에 이론상 불가능합니다. 따라서 NAT 외부의 인터넷에서는 연결할 수 없습니다. 그러나 거의 모든 NAT 장치, 라우터/액세스 포인트에는 "포트 전달"기능이 있습니다. 이 기능을 사용하면 특정 포트로 지정된 모든 패킷이 사설 IP 주소를 사용하여 LAN 내의 특정 시스템으로 전달되도록 정의 할 수 있습니다.

1-I가 인터넷에서 노드가 콜백 서버에 메시지를 보내는 방법을 모르는 : 당신이 방해합니다을 극복 할 수있는 경우

당신을위한 해결책이 될 수 있습니다. 요청을 수신 한 IP 주소를 사용하는 경우에는 문제가 없습니다. 콜백 IP 주소를 받으면 NAT (아마도 라우터/액세스 포인트)의 공용 IP 주소를 찾아 IP 주소를 보내는 방법을 알아 내야합니다.

2 - NAT 뒤의 서비스는 NAT 외부의 서비스와 통신하기 위해 클라이언트 포트 또는 임시 포트를 열어야합니다. 두 번째가 메시지를 수신 한 클라이언트 포트로 메시지를 보내면 열려는 클라이언트 포트를 확인하는 방법을 찾아야합니다 (포트 포워딩에서 구성한 것과 동일해야 함). 포트 808에서 기본적으로 수신 대기합니까?

이 정보가 도움이되기를 바랍니다.

+0

NAT 뒤의 머신과 클라이언트 사이에서 raw TCP/IP 연결을 만들 수 있습니다. 따라서 포트가 열리는 데 문제가없는 것으로 보입니다. 하지만 일부 어떻게 wcf 서비스를 연결할 수 없습니다 –

+0

그리고 내가 BasicHttpBinding.But NET Tcp를 사용하여 연결할 수 있습니다 –

+0

첫 번째 의견에 관해서는, 말한 클라이언트는 무엇입니까? NAT 외부?두 번째 설명 : net TCP 서비스에서 사용하는 (수신) 포트를 결정해야합니까? 항상 같은가요? – rodolk

1

"net.tcp : //0.0.0.0 : 8000"URI로 확인하십시오. 그러면 서비스가 모든 인바운드 IP 주소에서의 연결을 수락합니다. 서버 측에서는 연결이 허용되는 URI & 주소에 언급 된 IP 주소가 다르므로 서버가 연결을 끊을 수 있습니다.