2011-09-29 3 views
11
내가 openfire에서 서버 설정을 기절하는 모습을했다 한

,이 문이에서를 해결

"는 STUN 서버, 두 개의 서로 다른 공용 IP 주소의 역할을하기 위해 동일한 기계에,뿐만 아니라 각 IP를위한 2 개의 다른 포트 번호가 요구된다.

Google에서 조사한 결과, 일반적으로 두 개의 공용 IP가 필요합니다. 그 이유는 무엇입니까?

답변

6

일부 드문 경우이지만 NAT 변환의 동작은 대상 IP 주소의 기능입니다. 즉, NAT의 정확한 동작을 찾기 위해 두 개의 다른 IP 주소를 핑 (ping)해야합니다 (대상 IP 주소에 따라 다르겠습니까?)

두 개의 다른 포트를 사용하여 동일한 서버에 두 번 핑 (ping) 이 경우를 적절히 다룰 수는 없습니다 (즉, 모든 근거를 다루지는 않을 것입니다).

P .: 두 IP 주소가 동일한 서버에있을 필요는 없으며 다른 서버 일 수 있습니다.

+2

아쉽게도 고전적인 기발한 구현은 두 서버에 두 개의 IP 주소를 제공합니다 (http://sourceforge.net/tracker/?func=detail&aid=1055306&group_id=47735&atid=450612). 두 IP는 동일한 NIC에 있거나 없을 수 있지만 stund는 두 서버 모두에 바인딩을 시도하므로 동일한 서버에 있어야합니다. –

1

일부 NAT는 동일한 원본 IP 주소를 사용하고 포트 번호를 통해 세션 ID를 인코딩합니다 (나는 원뿔 NAT라고 생각하지만 확실하지는 않습니다) 일부 NAT는 소스 IP와 포트의 조합을 사용하여 세션 ID를 인코딩합니다. STUN 서버가 클라이언트에 제공해야하는 대답은 NAT 유형에 따라 다릅니다.

13

P2P 연결을 설정하려고 시도하면 STUN 서비스의 기본 주소 (IP 및 포트)에 대한 STUN 바인딩 요청 및 응답이 실제로 중요한 것입니다. 이 요청의 응답 본문에서 반환 된 매핑 된 주소는 로컬 클라이언트가 직접 통신을 시도하는 원격 노드로 전달됩니다 (XMPP 또는 기타 서비스를 통해).

STUN 서비스가 수신 대기하는 두 번째 IP 및 포트는 NAT 포트 매핑 동작 및 NAT 필터링 동작을 결정하는 데 유용합니다.

서비스의 대체 IP : 포트에 바인딩 요청을함으로써 클라이언트는 자신의 NAT에 로컬 포트에 대한 일관된 매핑 의미가 있는지 검색 할 수 있습니다. 클라이언트가 각 테스트에 대해 서로 다른 포트 매핑 값을 얻는 경우 클라이언트는 P2P를 통과하기가 가장 어려운 "대칭 NAT"뒤에 있다고 결론을 내릴 수 있습니다.

서비스가 다른 IP 또는 포트에서 응답하도록 요청하는 "변경 요청"속성을 사용하여 바인드 요청을 보내면 클라이언트가 자신의 NAT가 IP 및 포트를 기반으로 원격 호스트의 데이터 그램을 필터링하는지 검색 할 수 있습니다. 아웃 바운드 데이터 그램을 보낸 호스트의 대체 포트에서 데이터 그램을 허용합니다.

매핑 동작 및 필터링 테스트는 후속 P2P 연결에 대해서만 제한된 정보를 제공합니다. 대칭 NAT가 호스트와 인터넷 사이에 있다고 결정하는 경우, 일부 구현은 각 바인딩 응답에서 포트 값의 일관된 증분 값을 갖도록 NAT를 관찰 할 수 있습니다. (예를 들어, STUN 서비스에 의해 관측 된 외부 포트는 1 씩 증가한다). 따라서 클라이언트는 첫 x 째 Y 인딩 요청에서 다시 맵핑 된 포트 번호 대신 리모트 클라이언트에 대한 IP W 추정 포트 x 호를 제공 할 수 있습니다. 또는 클라이언트가 로깅을 위해이 동작/필터링 테스트를 사용할 수 있습니다. 또는 대칭 NAT 이벤트가 발생하면 자동으로 릴레이를 할당하십시오.

+1

이 설명은 많은 도움이되었습니다.내가 정확하게 이해한다면, STUN 서버의 두 번째 IP는 클라이언트의 STUN 요청이 사용되도록 지시 한 경우에만 사용된다는 것을 의미합니다. 나는 WebRTC의 측면에서 STUN에 대해 간략히 다루고 있으며 (wireshark를 통해) 나는 STUN 서버의 어떤 보조 IP도 내게 알려주지 않는다. 내 이론은 이것이 두 번째 IP가 확인하는 것은 모두 UDP 구멍 펀칭이 성공하고 WebRTC에서 성공하지 못한다면 그 후보가 실패 할 것이므로 추가 검사가 아무런 결과가 없기 때문입니다. 내 이해가 정확합니까? – Ternary

+2

@ 세 번째 - 두 번째 IP는 실제 구멍 펀칭이 아닌 NAT 유형 (즉, 진단 및 디버깅)을 결정할 때만 필요합니다. 클라이언트는 IP/포트 매핑을 요청하기 위해 서버에 "바인딩 요청"을 보낼 수 있습니다. 이러한 바인딩 요청은 응답이 서버의 대체 IP 및/또는 대체 포트에서 올 수 있음을 나타낼 수 있습니다. stun.stunprotocol.org에 대한 클라이언트 요청의 99 %는 기본 IP와 포트 3478 간의 간단한 바인딩 요청입니다. 소수의 클라이언트가 포트 리디렉션 속성을 사용합니다. 두 포트를 모두 사용하려는 SIP 전화가 몇 가지 있습니다. – selbie