03 IPv6 DNS64/NAT64네트워크 지원

왜 지원해야 할까요??

2016년부터 앱스토어에 신규 등록되는 아이폰 앱에 대해서, IPv6 DNS64/NAT64 네트워크 환경에서 정상적으로 동작하는지 체크를 하고 있습니다. 앱스토어에 올리기 위해서 iOS 앱은 IPv6 DNS64/NAT64네트워크를 필수 지원해야 합니다.
2016년전에 신규 등록된 앱들은 심사 범위에 해당하지는 않지만, 지원하도록 권장합니다.

그와 별개로, IPv4 주소가 거의 남아있지 않기때문에, 다양한 기업들과 통신사들이 IPv6 DNS64/NAT64 네트워크를 적용하고 있습니다.
서비스 저변을 넓히기 위해서, 안드로이드 앱 역시 IPv6 DNS64/NAT64를 지원하기를 권장합니다.

IPv6 DNS64/NAT64네트워크에 대한 설명

현시점에서는 대부분 통신사들은 IPv4 연결과 IPv6연결을 분리하여 네트워크 연결을 제공하고 있습니다.(위 그림 참조)

IPv4 네트워크에서는 IP주소의 소모를 줄이기 위해서, 임시방편으로 NAT가 구현되어 있습니다.
통신사에서 IPv6와 IPv4를 분리하여 지원하고 있어서, 비용이 많이 드는 구조입니다.

 

통신사에서는 IPv4 지원을 멈추고, IPv6만 지원하는 방식으로 변경하고 있습니다. 위 그림과 같은 네트워크 모델을 지원하는 추세입니다.
클라이언트와의 연결을 IPv6 네트워크 하나로 통일하려 합니다. 위 방식을 적용하려면, 클라이언트는 IPv4서버와 IPv6서버 모두를 IPv6주소로 처리해야 합니다.

이를 위해 DNS64/NAT64 네트워크 모델을 사용합니다. 

DNS64를 설명드리면, 기존 DNS에 먼저 IPv6주소를 요청합니다. IPv6주소를 얻게 되면, IPv6주소를 클라이언트에 전달합니다. 
없으면, DNS에 IPv4주소를 다시 요청하고, IPv4주소를 가져와서, Synthesized IPv6 주소로 변환하여, 클라이언트에 전달합니다.
클라이언트가 sysnthesized IPv6 주소로 연결하면, NAT64게이트 웨이를 통해, 실제 IPv4서버로 라우팅됩니다.

 

개발사의 게임앱이  IPv6 DNS64/NAT64네트워크에서 정상동작하는지 테스트하는 방법

맥(iMac or MacBook)이 있다면, 해당 맥에 IPv6 DNS64/NAT64네트워크 환경을 설정할 수 있습니다.

아래와 같은 순서로 설정하도록 합니다.

  1. 맥을 와이파이가 아닌 방식으로 인터넷에 연결합니다.(와이파이를 통해, 연결되어 있으면, 와이파이 공유가 불가능합니다.)

  2. 시스템 환경 설정창을 오픈합니다..

  3. 반드시 키보드의 Option키를 누른 상태에서 공유 버튼을 클릭합니다. Option키는 계속 누르고 있습니다.

     

  4. 인터넷 공유를 선택합니다.

  5. Option키를 이제는 누르지 않아도 됩니다.

  6. NAT64 네트워크 생성 체크 박스를 클릭합니다.
     

  7. 현재 인터넷이 연결된 방식("이더넷")을 클릭하고, Wi-Fi를 클릭합니다.
     

  8. 와이파이 설정을 하도록 합니다.

  9. 인터넷 공유의 체크 버튼을 클릭합니다.

  10. 확인창이 뜨면 시작을 클릭하여, 인터넷 공유를 시작합니다.

     

다바이스에서 맥에서 공유된 와이파이로 접속한 후, 앱을 실행하여, 네트워크 통신이 원활한지 확인하도록 합니다.

게임 앱에서 네트워크 연결이 원할하지 않은 경우 체크해볼 사항

  • IPv4주소를 직접 사용할 경우, DNS64서버를 통하지 않기 때문에, 자제하도록 합니다.

  • Zinny SDK iOS는 2.10.0 이상 버전부터 IPv6를 지원합니다.

    • Zinny SDK iOS를 2.10.0보다 낮은 버전을 사용할 경우, 2.10.0이상 버전의 SDK로 교체해야 합니다.

    • 교체하지 않을 경우, 네트워크 연결 실패로, 인증 단계부터 진행이 안됩니다.

    • 참고로 Zinny SDK Android는 모든 버전이 IPv6를 지원합니다.

 

  • low-level POSIX socket APIs를 사용할 경우,

    • 반드시 RFC4038 가이드 라인을 따라서 구현해야 합니다.

    • 다른 API로 대체하는 방법도 있습니다. 

      • iOS

        • WebKit, Coccoa URL loading system, NSURL, NSURLSession, NSURLRequest, NSURLConnection을 사용할 경우, 정상 동작.

        • CFNetwork 프레임워크 사용시, 정상 동작.

      • Unity

        • WWW  API 정상 동작.

 

  • 외부 네트워크 라이브러리를 사용하고 있고, 정상동작하지 않을 경우,

    • 외부 네트워크 라이브러리가 rfc4038 표준대로 구현되어 있는지 체크가 필요합니다.

    • 필요에 따라 외부 라이브러리의 소스를 수정하거나(오픈 소스의 경우), 설정의 변경이 필요할 수 있습니다.

    • 또는 다른 네트워크 라이브러리로 교체가 필요할 수도 있습니다.

 



참고