2016-09-20 4 views
0

stoon 클라이언트를 http://www.stunprotocol.org/에서 다운로드하고 stunclient 명령으로 모드를 알아 내려고했습니다. - mode full stun.stunprotocol.org --verbosity 9 그리고 나는 아래 응답을 받았습니다.nat 유형 분석에 대하여

config.fBehaviorTest = true 
config.fFilteringTest = true 
config.timeoutSeconds = 0 
config.uMaxAttempts = 0 
config.addrServer = 52.86.10.164:3478 
socketconfig.addrLocal = 0.0.0.0:0 
Sending message to 52.86.10.164:3478 
Got response (68 bytes) from 52.86.10.164:3478 on inter 
Other address is 52.201.75.212:3479 

Sending message to 52.201.75.212:3478 
Got response (68 bytes) from 52.201.75.212:3478 on inte 
Sending message to 52.201.75.212:3479 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.201.75.212:3479 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Binding test: success 
Local address: 10.64.60.58:58841 
Mapped address: 125.19.34.60:24604 
Behavior test: fail 
Filtering test: success 
Nat filtering: Address and Port Dependent Filtering 

기업에서 근무하기 때문에 보안상의 이유로 NAT 유형 "주소 및 포트 종속 필터링"이 실행 가능한 것으로 보입니다.

그러나 일반적으로 피어 투 피어 연결의 경우 NAT 유형은 "주소 및 포트 종속 필터링"이므로 모든 미디어 통신에 서버가 필요합니다.

그러나 Google에서 webrtc를 검색하면 피어 투 피어 통신의 90 %가 기절 서버 자체 (홀 펀치 등)를 통해 설정되었음을 알 수 있습니다. 이것은 NAT 유형이이 경우 연결을 설정하기 위해 완전히 지원됨을 의미합니다.

전문가는 피어 투 피어 통신을 위해 고려해야 할 NAT 유형 분석에 대한 의견이 있습니까?

답변

1

stunclient 프로그램은 수행중인 작업을 표시하기 위해 더 많은 로깅을 사용할 수 있습니다. 코드에 대해 조금 알고 있기 때문에, 어떻게 해석할까요?

Stunclient는 두 가지 테스트 세트를 수행합니다. 첫 번째는 NAT/방화벽이 P2P 연결에 미치는 영향을 이해하는 데 가장 중요한 "매핑 동작"테스트입니다. 다른 세트는 다른 IP/포트 조합에서 트래픽을 수신하는 것과 관련하여 NAT를 "열어"표시하는 "필터링 테스트"입니다.

귀하의 행동 테스트는 "실패했습니다". 로그 출력을 기준으로하면 다음과 같습니다.

테스트 1 :이 경우 랜덤 포트 58841을 선택하십시오. 이 로컬 포트에서 stun.stunprotocol.org : 3478에 대한 기본 바인딩 테스트를 수행하십시오. 여기서 클라이언트는 서버가 매핑 된 주소 (125.19.34.60:24604)를 표시하고 후속 동작 및 필터링 테스트를위한 stun 대체 IP가 52.201.75.212에있는 응답을 수신합니다.

테스트 2 : 동일한 로컬 포트, 58851. 대체 IP 및 기본 포트 (52.201.75.212:3478)에 바인딩 요청을 보냅니다. 귀하의 경우에는 돌아온 응답이 다른 IP 또는 포트 일 가능성이 높습니다. 그리고이 경우 "시험 3"이 필요했습니다.

테스트 3 : 동일한 로컬 포트, 58851. 대체 IP 및 대체 포트 (52.201.75.212:3479)에 바인드 요청을 보내 "주소 종속"및 "포트 종속 매핑"을 구분할 수 있도록합니다. 그리고 이것은 흥미로운 부분입니다 - 당신은 결코 반응을 얻지 못했습니다. 포트 3478에서 두 IP 주소로 통신 할 수 있음에도 불구하고 테스트가 실패한 이유가 여기에 있습니다.

두 가지 중 하나 일 수

A) 귀하의 NAT/방화벽이 실제로 포트 3478에 대한 개방이지만,

stunclient 52.201.75.212 3479 

그리고 경우 감지하기 위해 명령 줄에서이 작업을 수행하지 3479. 매핑 된 주소를 얻는 데 성공하면 즉시 다음을 수행하십시오.

stunclient 52.86.10.164 3478 

두 개의 IP 주소 및 포트를 다른 조합으로 시도해보십시오.그 결과 동작은 다음을 의미 할 수 있습니다.

b) remove ip 및 port가 모두 변경되면 NAT/방화벽이 포트 맵으로 거부됩니다. 즉, "주소 및 포트 종속 맵핑"NAT보다 네트워크 환경이 더 엄격하다는 의미입니다. 더 일반적으로 대칭 NAT로 알려져 있습니다.

필터링 테스트의 경우이 결과를 무시하십시오. 필터링 테스트는 하나의 ip : 포트로 보낼 수 있지만 다른 ip 또는 포트에서 수신 할 수 있는지 여부를 감지합니다. NAT의 99 %가 이것을 허용하지 않습니다. 따라서 결과는 거의 항상 "주소 및 포트 종속 필터링"이됩니다. 필터링 테스트 결과는 귀하의 NAT가 P2P 연결에서 어떻게 성공적으로 이루어질 것인가를 나타냅니다.

기업 네트워크가 매우 제한적이라서 다른 네트워크의 피어와 통신 할 수 없다는 것을 의미하지는 않습니다. Endpoint Independent Mapping을 사용하여 NAT를보다 잘 수행하면 P2P 연결이 성공할 수 있습니다.

저는 최근의 NAT 추세를 따라 잡지 못했지만 STUN만으로 성공한 연결의 80-90 %가 올바르게 들립니다. 나머지는 TURN과 같은 릴레이 솔루션이 필요합니다.

+0

감사합니다. Selbie. 그러나 "52.201.75.212"stunserver가 그것의 포트 "3479"에서 그것을들을 때까지 어떻게 응답 할 수 있습니까? 네트워크 NAT 유형 중 하나가 대칭 네트워크이고 다른 네트워크 NAT 유형이 종점 독립적 매핑 인 경우 여전히 P2P 연결이 가능합니다. 이것이 당신이 다른 네트워크의 피어와 통신하는 것이 불가능하다는 것을 의미하지는 않습니다. 엔드 포인트 독립 매핑을 사용하는 NAT가 더 잘 작동한다면 P2P 연결이 성공할 가능성이 여전히 있습니다 " .. –

+0

STUN 서버는 항상 두 포트 (3478 및 3479)와 두 IP 주소에서 수신 대기합니다. 대칭 NAT (예 : 엔터프라이즈 네트워크)가 예측 가능한 포트 매핑을 가지고 있지 않기 때문에 STUN에서 가져온 주소/포트가 연결하려는 피어의 IP 주소와 함께 작동하는지 여부는 확실하지 않습니다. Peer의 NAT는 Endpoint Ind 일뿐 아니라 필터링이 "Address Dependent"이상이어야합니다. – selbie

0

내가 상상할 수있는 모든 시나리오 (대칭 NAT 포함)에서 P2P간에 통신하고 싶습니다. 제안 : webRTC를 사용하고 얼음 서버 목록에서 기절 및 회전 서버를 사용해보십시오. 이것은 ICE 후보자의 범위를 줄 것이고 webRTC는 가능한 가장 좋은 후보자와 연결을 처리 할 것입니다. 이렇게하면 NAT 유형 문제를 방지 할 수 있습니다.