신규 속성 (New Attributes)
NAT Behavior Discovery에 사용할 신규 속성들의 명세
CHANGE-REQUEST (0x0003)
- BINDING 명령 요청에만 사용 가능
- 선택적 속성 (서버 미지원 시 사용 불가)
- 필터링 특성 판별에 사용
- 총 4바이트이며 0-based 기준으로 29번(A) 비트와 30번(B) 비트만 이용
- A : change IP 여부. 1일 경우, BINDING에 대한 응답을 서버의 다른 IP를 통해 송신
- B : change port 여부. 1일 경우, BINDING에 대한 응답을 서버의 다른 포트를 통해 송신
RESPONSE-ORIGIN (0x802B)
- BINDING의 서버 응답에만 실리는 속성
- 선택적 속성 (서버 미지원 가능)
- 서버의 IP/Port 값이 담겨 있다.
- RFC8489 MAPPED-ADDRESS 속성과 구조 동일
- 이중 NAT 판별에 도움이 됨 → 속성값이 나타내는 실제 주소와 패킷의 from 주소를 비교하면 됨
OTHER-ADDRESS (0x802C)
- BINDING의 서버 응답에만 실리는 속성
- 선택적 속성임 (서버 미지원 가능)
- RFC8489 MAPPED-ADDRESS 속성과 구조 동일
- 서버는 대체 IP가 확보되지 않은 상태에서 이 속성을 삽입할 수 없음*
*분석자 주) 규격에는 MUST NOT으로 명시되어 있고, Coturn이라는 가장 유명한 오픈소스 STUN서버도 대체 IP를 설정하지 못하면 지원하지 않는다고 명시되어 있다. 그러나, 실제 운용을 해보면 대체 port만 추가해도 서비스가 제공된다. 좀 더 자세한 내용은 여기 참조
RESPONSE-PORT (0x0027)
- BINDING 요청에만 이용하는 속성
- 선택적 속성 (서버 미지원 시 사용 불가)
- port 정보가 담김
- 이 속성이 포함된 요청에 대해 서버는 응답을 이 속성에 기재된 포트로 변경하여 송신해야 함
- RESPONSE-PORT와 PADDING이 동시에 포함해서는 안됨
- 총 4바이트이며, 앞 2바이트를 포트 값으로 이용
PADDING (0x0026)
- 패킷 단편화(fragment) 시 NAT의 동작 판별을 위해 사용
- BINDING 요청과 응답에 모두 사용 가능
- 속성 값은 아무 값이나 들어가도 됨
- 속성의 길이는 최종 datagram 크기가 64KB를 넘을 수 있게 해서는 안됨
- 적정 길이는 장비의 MTU 사이즈