투케이2K

64. (TWOK/WORK) [업무 이슈] 안드로이드 (Android) http 요청 수행 시 ipv6 설정으로 인한 http connect fail 이슈 본문

투케이2K 업무정리

64. (TWOK/WORK) [업무 이슈] 안드로이드 (Android) http 요청 수행 시 ipv6 설정으로 인한 http connect fail 이슈

투케이2K 2024. 8. 2. 19:01
반응형

[제 목]

[업무 이슈] 안드로이드 (Android) http 요청 수행 시 ipv6 설정으로 인한 http connect fail 이슈

 

[내 용]

 

------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. 안드로이드 (Android) http 요청 수행 시 ipv6 설정으로 인한 http connect fail 이슈

------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 해당 도메인 IOS , 웹 브라우저 , Android 에서 각각 호출 테스트 수행

  >> IOS , 웹 브라우저 : 성공
  >> Android : 실패


2. 안드로이드 라이브러리 버전 및 라이브러리 교체 수행 및 API 요청 테스트

  >> AsyncHttpClient 및 Okhttp 라이브러리 : 실패
  >> HttpURLConnection : 성공 (자바 JDK 1.8 이상 버전 : Ip4와 ip6 주소 둘다 host 하기 위해, 둘중의 하나에 연결 될때까지 시도)


3. 서버 및 인프라 환경 체크 수행 (nslookup) >> ipV6 활성 상태 확인

  >> 에러 발생 서버 : 

       이름:    dualstack.test-aodit-elb2.ap-northeast-2.elb.amazonaws.com
       Addresses:  2406:6800: ... (ipV6)
                      2406:6800: ... (ipV6)
                      142.251 .. (ipV4 - 공인 아이피)
                      52.64 .. (ipV4 - 공인 아이피)
       Aliases:  dev.test.co.kr


  >> 정상 동작 서버 : 

       이름:    dualstack.test-aodit-elb2.ap-northeast-2.elb.amazonaws.com
       Addresses:  13.221 .. (ipV4 - 공인 아이피)
                      13.122 .. (ipV4 - 공인 아이피)
       Aliases:  env.test.co.kr


4. 자바 소스 코드 사용해 InetAddress >> new Socket().connect() 을 사용해 실제 연결 가능 상태 체크 실시

  >> ipV6 에서 연결 실패 증상 확인

------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 인프라 환경에서 ipv6 활성 상태를 >> 비활성 변경 요청

2. nslookup 명령어 사용해 할당 된 ip 정보 확인 (ipV4 만 활성 상태 확인)

  >> ex (명령어 수행 시 http 가 붙으면 안됨) : nslookup test.com
  >> 자바 InetAddress 에서 호스트 정보 확인 >> new Socket().connect() 연결 상태 체크 실시 (정상 응답 받은 상태 확인)

3. AsyncHttpClient 및 Okhttp 라이브러리를 사용해 API 요청 수행 실시 >> 정상 HTTP 응답 결과 확인

------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------

https://repost.aws/questions/QU-u5XgHx9SbOUK9F7jRydyg/emr-serverless-ipv6-connectivity-issue-in-private-subnet-vpc

https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html#dual-stack-endpoints-description

https://github.com/mattermost/mattermost/issues/24703

------------------------------------------------------------------------------

 

반응형
Comments