해외문서나 국내문서를 20장 정도 읽었는데 블로그나 이런데 써있는 자료는 정말 믿지 못할정도로 가짜로 써있는 자료가 많은것 같아요..
헷갈리기만 하고 있습니다.
symmetrc 은 목적지에따라 port가 바뀌고 Port Restricted Cone 은 symmetric 과 다르게 목적지에 따라 port가 안바뀐다고(동일한 port 사용) 문서를 읽었는데 또 다른문서에는 똑같이 바뀐다고 써있네요 --;;;;
각각의 특징은 파악 하였으나 보통 디바이스에서 상단에 있는 NAT 장비의 특성이 무엇인지 Port Restricted Cone 과 symmetric 만을 비교하여 추려낼려고 할때 외부 서버를 이용하여 목적지에 따라 바뀌는 port로 추려내면 될련지요..
아 이거 미치겠습니다 ㅋ;;;
블로그글을 보면 가짜글들이 하도 많아서 뭐가 진짜동작 설명인지 모르겠습니다...
마지막으로 부탁드립니다 제 뇌에 정확한 지식을...ㅠㅠ
개념에 혼동이 오실때에는 표준 문서를 기준으로 생각하시는게 옳습니다.
RFC 3489에 정의는 다음과 같습니다.
■ Restricted Cone
[Mapping Behavior] A restricted cone NAT is one where all requests from the same internal IP
address and port are mapped to the same external IP address and port. [Filtering Behavior] Unlike a
full cone NAT, an external host (with IP address X) can send a packet to the internal host only if the
internal host had previously sent a packet to IP address X.
■ Port Restricted Cone
[Mapping Behavior] A port restricted cone NAT is like a restricted cone NAT, [Filtering Behavior]
but the restriction includes port numbers. Specifically, an external host can send a packet, with source
IP address X and source port P, to the internal host only if the internal host had previously sent a
packet to IP address X and port P.
■ Symmetric
[Mapping Behavior] A symmetric NAT is one where all requests from the same internal IP address and
port, to a specific destination IP address and port, are mapped to the same external IP address and
port. If the same host sends a packet with the same source address and port, but to a different
destination, a different mapping is used. [Filtering Behavior] Furthermore, only the external host
that receives a packet can send a UDP packet back to the internal host.
[Mapping Behavior 관점에서 Port Restricted Cone vs. Symmetric]
- Port Restricted Cone NAT는 "Source IP, Source Port"만 같다면 "Destination IP, Destination Port"가 무슨 값이든 상관없이 동일한 External Port를 할당합니다. (즉, Port가 변경되지 않음) = Endpoint-Independent Mapping
- Symmetric NAT는 "Source IP, Source Port, Destination IP, Destination Port" 중에 하나라도 값이 다르면 다른 External Port를 할당합니다. = Address and Port-Dependent Mapping
따라서 말씀 중에 "symmetric 은 목적지(Destination IP & Destination Port)에 따라 port가 바뀌고 Port Restricted Cone 은 symmetric 과 다르게 목적지((Destination IP & Destination Port)에 따라 port가 안바뀐다고(동일한 port 사용)"가 맞습니다.
RFC 3489에 Figure 2를 보시면 Test I -> Test II -> Test I(편의상 Test I'로 표기) -> Test III 순으로 시험을 수행하게 되어 있습니다.
■ Symmetric NAT 검출법
- Test I에서 Primary Destination IP(1.1.1.1), Primary Destination Port(3478)로 보낸 패킷에 대한 응답 메시지의 MAPPED-ADDRESS 필드(5.5.5.1, 40000)와
- Test I'에서 Alternate Destination IP(2.2.2.2), Alternate Destination Port(3479)로 보낸 패킷에 대한 응답 메시지의 MAPPED-ADDRESS값(5.5.5.1, 50000)이
- 서로 다르면 Symmetric으로 판단합니다. (왜냐면 NAT Mapping Behavior 관점에서 Full Con, Restricted Con, Port Restricted Con은 모두 Endpoint-Independent Mapping의 특성을 가지는 반면 Symmetric은 Address and Port-Dependent Mapping의 특성을 가집니다. 본 테스트를 통해 서로 다른 목적지 정보(1.1.1.1:3478과 2.2.2.2:3470)를 가진 2개의 패킷에 대해 서로 다른 External Port(40000과 50000)로 매핑 되었으므로 Symmetric NAT입니다)
■ Port Restricted Cone NAT 검출법
- 위 Symmetric에서 설명한 Test I과 Test I'의 결과가 동일(MAPPED-ADDRESS의 값) 한 경우 Test III를 수행하게 되며
- Test III에서 Primary Destination IP(1.1.1.1), Primary Destination Port(3478)로 패킷을 보내는데, 이 때 CHANGE-REQUEST에 "change-port" 필드를 set 하여 STUN 서버가 이에 대한 응답을 줄 때 Source Port를 3478이 아닌 Alternate Port인 3479로 응답을 주게 됩니다. 이 패킷이 통과하면 Address-Dependent Filtering 특성을 가진 것이므로 Restricted Cone이 되고, 이 패킷이 drop되면 Address and Port-Dependent Filtering 특성을 가진 것이므로 Port Restricted Cone으로 판정을 합니다.
STUN 검출은 크게 3가지 정도의 방법이 있을 듯 합니다.
1. 웹에서 STUN으로 검색하시어 웹 기반으로 내 상단에 어떤 NAT가 있는지 검출
2. 모바일단말용 APP 설치 후 시험
3. Linux 기반의 Client, Server 각 1대씩 준비 후, Open Source (예. STUNTMAN, JSTUN) 설치 후 시험